Fix paths in astxs (bug #3466)
[asterisk/asterisk.git] / contrib / scripts / astxs
index 663617e..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($) {
@@ -95,20 +95,63 @@ if($args{print}) {
 
 my($base,$ext);
 my $cfile = $args{plain}->[0];
+
+
+if($cfile =~ /http:\/\/.*?\/([^\/]+)$/) {
+
+  my $f = $1;
+  if(! -d "/tmp/astbld") {
+    mkdir("/tmp/astbld");
+  }
+  my $pwd = `pwd`;
+  chomp $pwd;
+  chdir("/tmp/astbld");
+  system("/bin/rm $f");
+  system("wget $cfile");
+  chdir($pwd);
+  $cfile = "/tmp/astbld/$f";
+
+
+}
+
+
+
 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});
+
+
 
-if($args{install} and $vars{MODULES_DIR}) {
+$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} or $args{installonly}) and $vars{MODULES_DIR}) {
+  my $file = "${base}.so";
+  my ($mod) = $file =~ /([^\/]*)$/;
+
+  if($args{autoload}) {
+    $bad = esystem("/usr/sbin/asterisk -rx 'unload $mod'");
+  }
   $bad = esystem("/bin/cp -p ${base}.so $vars{MODULES_DIR}") if(!$bad);
+  
+  if($args{autoload}) {
+    $bad = esystem("/usr/sbin/asterisk -rx 'load $mod'");
+  }
 }