chiark / gitweb /
volume_id: provide libvolume_id.a file
[elogind.git] / klibc / makeklcc.pl
old mode 100644 (file)
new mode 100755 (executable)
index ea3f8a8..7404595
@@ -5,15 +5,25 @@
 # Usage: makeklcc klcc.in klibc.config perlpath
 #
 
+use File::Spec;
+
 ($klccin, $klibcconf, $perlpath) = @ARGV;
 
-# This should probably handle quotes and escapes...
-sub string2list($)
-{
-    my($s) = @_;
+sub pathsearch($) {
+    my($file) = @_;
+    my(@path);
+    my($p,$pp);
+
+    if ( $file =~ /\// ) {
+       return File::Spec->rel2abs($file);
+    }
+    
+    foreach $p ( split(/\:/, $ENV{'PATH'}) ) {
+       $pp = File::Spec->rel2abs(File::Spec->catpath(undef, $p, $file));
+       return $pp if ( -x $pp );
+    }
 
-    $s =~ s/\s+/\',\'/g;
-    return "(\'".$s."\')";
+    return undef;
 }
 
 print "#!${perlpath}\n";
@@ -21,9 +31,18 @@ print "#!${perlpath}\n";
 open(KLIBCCONF, '<', $klibcconf) or die "$0: cannot open $klibcconf: $!\n";
 while ( defined($l = <KLIBCCONF>) ) {
     chomp $l;
-    if ( $l =~ /=/ ) {
-       print "\$$` = \"\Q$'\E\";\n";
-       print "\@$` = ", string2list("$'"), ";\n";
+    if ( $l =~ /^([^=]+)\=(.*)$/ ) {
+       $n = $1;  $s = $2;
+
+       if ( $n eq 'CC' || $n eq 'LD' || $n eq 'STRIP' ) {
+           $s1 = pathsearch($s);
+           die "$0: Cannot find $n: $s\n" unless ( defined($s1) );
+           $s = $s1;
+       }
+
+       print "\$$n = \"\Q$s\E\";\n";
+       print "\@$n = qw($s);\n";
+       print "\$conf{\'\L$n\E\'} = \\\$$n;\n";
     }
 }
 close(KLIBCCONF);