Fix paths in astxs (bug #3466)
[asterisk/asterisk.git] / contrib / scripts / astxs
index 3529f97..c525537 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-my $astdir = $ENV{ASTSRC} or "/usr/src/asterisk";
+my $astdir = $ENV{ASTSRC} || "/usr/src/asterisk";
 
 
 sub esystem($) {
@@ -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} -I${astdir} -I${astdir}/include $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 ${base}.so $vars{LDFLAGS} $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 =~ /([^\/]*)$/;