From aa820ac9405d4a3f4fb6532730d830312304fa77 Mon Sep 17 00:00:00 2001 From: anthm Date: Mon, 26 Apr 2004 23:22:34 +0000 Subject: 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 --- contrib/scripts/astxs | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 contrib/scripts/astxs (limited to 'contrib') 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 [ [-set=:] [-append=:] [-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); +} + -- cgit v1.2.3