X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=klibc%2Fmakeklcc.pl;h=74045955fdcd75db015f85e765a45ef8b7256749;hb=5618b5611bccf64a1e22f8cbcebe8ecba9713c9c;hp=f8a6294db3faa72101eebf191ce78c0a074fbe64;hpb=cb948532ff3cb7edf1d2eead7a5cce9e8a1a7a97;p=elogind.git diff --git a/klibc/makeklcc.pl b/klibc/makeklcc.pl old mode 100644 new mode 100755 index f8a6294db..74045955f --- a/klibc/makeklcc.pl +++ b/klibc/makeklcc.pl @@ -5,8 +5,27 @@ # Usage: makeklcc klcc.in klibc.config perlpath # +use File::Spec; + ($klccin, $klibcconf, $perlpath) = @ARGV; +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 ); + } + + return undef; +} + print "#!${perlpath}\n"; open(KLIBCCONF, '<', $klibcconf) or die "$0: cannot open $klibcconf: $!\n"; @@ -14,6 +33,13 @@ while ( defined($l = ) ) { chomp $l; 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";