aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authoranthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b>2004-04-26 23:22:34 +0000
committeranthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b>2004-04-26 23:22:34 +0000
commitaa820ac9405d4a3f4fb6532730d830312304fa77 (patch)
tree795ee349d435830084b8f5f9c00c84301b059439 /contrib
parentb1ebc7d3c1eb97b62eab34fdc3e3e2d67b1f791b (diff)
applied final release of bug 1353 per Mark's permission
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2782 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/scripts/astxs114
1 files changed, 114 insertions, 0 deletions
diff --git a/contrib/scripts/astxs b/contrib/scripts/astxs
new file mode 100755
index 000000000..663617ecd
--- /dev/null
+++ b/contrib/scripts/astxs
@@ -0,0 +1,114 @@
+#!/usr/bin/perl
+
+my $astdir = $ENV{ASTSRC} or "/usr/src/asterisk";
+
+
+sub esystem($) {
+ my $cmd = shift;
+ print "$cmd\n";
+ system($cmd);
+}
+sub usage($) {
+ my $str = shift;
+ print "\n$str\n\n";
+ print "Usage $0 [ <module.c> [-set=<varname>:<value>] [-append=<varname>:<value>] [-install] ] | [-help] \n\n";
+
+ print "varnames of interest:
+===============================================================================
+'INCLUDES' 'ASTLIBDIR' 'AGI_DIR' 'ASTVARRUNDIR' 'CC' 'ASTETCDIR' 'EXTOBJ'
+'ASTSPOOLDIR' 'ASTLOGDIR' 'MODULES_DIR' 'ASTSBINDIR' 'ASTHEADERDIR' 'LDFLAGS'
+'ASTVARLIBDIR' 'ASTBINDIR' 'INSTALL_PREFIX' 'ASTCONFPATH' 'ASTSRC' 'CFLAGS'
+===============================================================================
+";
+
+ exit;
+
+}
+
+
+my %avars = ();
+my %svars = ();
+my %vars = ();
+
+
+
+
+my %args = ();
+
+
+foreach(@ARGV) {
+
+ if(/^\-set=([^\:]+):(.*)/) {
+ $svars{$1} = $2;
+ }
+ elsif(/^\-append=([^\:]+):(.*)/) {
+ $avars{$1} .= " $2";
+ }
+ elsif(/^\-([^\=]+)=(.*)/) {
+ $args{$1} = $2;
+ }
+ elsif(/^\-([^\=]+)$/) {
+ $args{$1}++;
+ }
+ else {
+ push(@{$args{plain}},$_);
+ }
+}
+
+if($args{help} or $args{h}) {
+ usage "Help";
+}
+
+
+my $pwd = `/bin/pwd`;
+chomp($pwd);
+
+$vars{astdir} ||= $astdir;
+
+chdir($vars{astdir});
+my $type = $args{type} || "apps";
+my $env = `make ${type}_env`;
+chdir($pwd);
+
+foreach(split("\n",$env)) {
+ my($var,$val) = /([^\=]+)\=(.*)/;
+ $vars{$var} = $val;
+}
+
+
+
+
+foreach(keys %svars) {
+ $vars{$_} = $svars{$_};
+}
+
+foreach(keys %avars) {
+ $vars{$_} .= $avars{$_};
+}
+
+
+if($args{print}) {
+ print "$vars{$args{print}}";
+ exit;
+}
+
+
+my($base,$ext);
+my $cfile = $args{plain}->[0];
+if($cfile) {
+ ($base,$ext) = $cfile =~ /^([^\.]+)\.(.)/;
+}
+
+if($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);
+
+if($args{install} and $vars{MODULES_DIR}) {
+ $bad = esystem("/bin/cp -p ${base}.so $vars{MODULES_DIR}") if(!$bad);
+}
+