aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcontrib/scripts/astxs22
1 files changed, 17 insertions, 5 deletions
diff --git a/contrib/scripts/astxs b/contrib/scripts/astxs
index 36cdad350..42c143ee9 100755
--- a/contrib/scripts/astxs
+++ b/contrib/scripts/astxs
@@ -117,19 +117,31 @@ if($cfile =~ /http:\/\/.*?\/([^\/]+)$/) {
if($cfile) {
- ($base,$ext) = $cfile =~ /^([^\.]+)\.(.)/;
+ ($base,$ext) = $cfile =~ /^([^\.]+)\.(.+)/;
}
-if($ext ne "c") {
+if($ext eq "so") {
+ unless($args{linkonly}) {
+ $args{installonly}++;
+ }
+} elsif($ext ne "c") {
usage "Bad Input File";
}
+
my $bad=0;
-$bad = esystem("$vars{CC} $vars{CFLAGS} -c ${base}.c -o ${base}.o");
-$bad = esystem("$vars{CC} $vars{SOLINK} -o $vars{LDFLAGS} ${base}.so $base.o $vars{EXTOBJ}") if(!$bad);
+$bad = esystem("$vars{CC} $vars{CFLAGS} -c ${base}.c -o ${base}.o") unless($args{linkonly} or $args{installonly});
+exit -1 if($bad);
+exit if($args{nolink});
+
+
+
+$vars{MAINOBJ} ||= $base.o;
+$bad = esystem("$vars{CC} $vars{SOLINK} -o $vars{LDFLAGS} ${base}.so $vars{MAINOBJ} $vars{EXTOBJ}") if(!$bad and !$args{installonly});
+exit -1 if($bad);
-if($args{install} and $vars{MODULES_DIR}) {
+if(($args{install} or $args{installonly}) and $vars{MODULES_DIR}) {
my $file = "${base}.so";
my ($mod) = $file =~ /([^\/]*)$/;