diff options
author | Ilya Zakharevich <ilya@math.berkeley.edu> | 1998-07-15 02:10:36 -0400 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-07-19 06:18:58 +0000 |
commit | 66796be0b111d9c4af63ad83d098f3ca2218b0b1 (patch) | |
tree | 4228867f8359af181ec7f463fba336c23cc6ba3a /utils | |
parent | 9b0ceca9745625e7abf48087d982e928a2f50e27 (diff) | |
download | perl-66796be0b111d9c4af63ad83d098f3ca2218b0b1.tar.gz |
Minor improvements to perlcc
Message-Id: <199807151010.GAA11270@monk.mps.ohio-state.edu>
p4raw-id: //depot/perl@1548
Diffstat (limited to 'utils')
-rw-r--r-- | utils/perlcc.PL | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/utils/perlcc.PL b/utils/perlcc.PL index a0161e5301..b214645ad9 100644 --- a/utils/perlcc.PL +++ b/utils/perlcc.PL @@ -124,9 +124,10 @@ sub _doit $obj = ($options->{'o'})? $options->{'o'} : _getExecutable($file, $module_ext); - $so = "$obj.so"; + $so = "$obj.$Config{so}"; $type = 'sharedlib'; return() if (!$obj); + $objfile = ($options->{'C'}) ? $options->{'C'} : "$file.c"; } else { @@ -175,7 +176,7 @@ sub _doit (_print( "ERROR: In generating code for $file!\n", -1), return()) if ($errcode); - _print( "Compiling C($obj) for $file!\n", 36 ) if (!$options->{'gen'}); + _print( "Compiling C($so) for $file!\n", 36 ) if (!$options->{'gen'}); my $errorcode = _compileCode($file, $objfile, $obj, $so ) if (!$options->{'gen'}); @@ -244,18 +245,19 @@ sub _compileCode if (@_ == 3) # just compiling a program { $return[0] = - _ccharness($sourceprog, "-o", $output_executable, $generated_cfile); + _ccharness('static', $sourceprog, "-o", $output_executable, $generated_cfile); $return[0]; } else { my $object_file = $generated_cfile; - $object_file =~ s"\.c$"\.o"; + $object_file =~ s"\.c$"$Config{_o}"; - $return[0] = _ccharness($sourceprog, "-c", $generated_cfile); + $return[0] = _ccharness('compile', $sourceprog, "-c", $generated_cfile); $return[1] = _ccharness ( - $sourceprog, "-shared","-o", + 'dynamic', + $sourceprog, "-o", $shared_object, $object_file ); return(1) if (grep ($_, @return)); @@ -278,6 +280,7 @@ sub _removeCode sub _ccharness { + my $type = shift; my (@args) = @_; local($") = " "; @@ -291,24 +294,26 @@ sub _ccharness } else { - $libdir = "-L.."; - $incdir = "-I.."; + $libdir = "-L.. -L."; + $incdir = "-I.. -I."; } $libdir .= " -L$options->{L}" if (defined($options->{L})); $incdir .= " -I$options->{L}" if (defined($options->{L})); - my $linkargs; + my $linkargs = ''; - if (!grep(/^-[cS]$/, @ARGV)) + if (!grep(/^-[cS]$/, @args)) { - $linkargs = sprintf("%s $libdir -lperl %s",@Config{qw(ldflags libs)}); + my $lperl = $^O eq 'os2' ? '-llibperl' : '-lperl'; + my $flags = $type eq 'dynamic' ? $Config{lddlflags} : $Config{ldflags}; + $linkargs = "$flags $libdir $lperl @Config{libs}"; } my @sharedobjects = _getSharedObjects($sourceprog); my $cccmd = - "$Config{cc} $Config{ccflags} $incdir @sharedobjects @args $linkargs"; + "$Config{cc} @Config{qw(ccflags optimize)} $incdir @sharedobjects @args $linkargs"; _print ("$cccmd\n", 36); |