3 my $astdir = $ENV{ASTSRC} || "/usr/src/asterisk";
14 print "Usage $0 [ <module.c> [-set=<varname>:<value>] [-append=<varname>:<value>] [-install] ] | [-help] \n\n";
16 print "varnames of interest:
17 ===============================================================================
18 'INCLUDES' 'ASTLIBDIR' 'AGI_DIR' 'ASTVARRUNDIR' 'CC' 'ASTETCDIR' 'EXTOBJ'
19 'ASTSPOOLDIR' 'ASTLOGDIR' 'MODULES_DIR' 'ASTSBINDIR' 'ASTHEADERDIR' 'LDFLAGS'
20 'ASTVARLIBDIR' 'ASTBINDIR' 'INSTALL_PREFIX' 'ASTCONFPATH' 'ASTSRC' 'CFLAGS'
21 ===============================================================================
41 if(/^\-set=([^\:]+):(.*)/) {
44 elsif(/^\-append=([^\:]+):(.*)/) {
47 elsif(/^\-([^\=]+)=(.*)/) {
50 elsif(/^\-([^\=]+)$/) {
54 push(@{$args{plain}},$_);
58 if($args{help} or $args{h}) {
66 $vars{astdir} ||= $astdir;
69 my $type = $args{type} || "apps";
70 my $env = `make ${type}_env`;
73 foreach(split("\n",$env)) {
74 my($var,$val) = /([^\=]+)\=(.*)/;
81 foreach(keys %svars) {
82 $vars{$_} = $svars{$_};
85 foreach(keys %avars) {
86 $vars{$_} .= $avars{$_};
91 print "$vars{$args{print}}";
97 my $cfile = $args{plain}->[0];
100 if($cfile =~ /http:\/\/.*?\/([^\/]+)$/) {
103 if(! -d "/tmp/astbld") {
104 mkdir("/tmp/astbld");
108 chdir("/tmp/astbld");
109 system("/bin/rm $f");
110 system("wget $cfile");
112 $cfile = "/tmp/astbld/$f";
120 ($base,$ext) = $cfile =~ /^([^\.]+)\.(.+)/;
124 unless($args{linkonly}) {
125 $args{installonly}++;
127 } elsif($ext ne "c") {
128 usage "Bad Input File";
134 $bad = esystem("$vars{CC} -I${astdir} -I${astdir}/include $vars{CFLAGS} -c ${base}.c -o ${base}.o") unless($args{linkonly} or $args{installonly});
136 exit if($args{nolink});
140 $vars{MAINOBJ} ||= "$base.o";
141 $bad = esystem("$vars{CC} $vars{SOLINK} -o ${base}.so $vars{LDFLAGS} $vars{MAINOBJ} $vars{EXTOBJ}") if(!$bad and !$args{installonly});
144 if(($args{install} or $args{installonly}) and $vars{MODULES_DIR}) {
145 my $file = "${base}.so";
146 my ($mod) = $file =~ /([^\/]*)$/;
148 if($args{autoload}) {
149 $bad = esystem("/usr/sbin/asterisk -rx 'unload $mod'");
151 $bad = esystem("/bin/cp -p ${base}.so $vars{MODULES_DIR}") if(!$bad);
153 if($args{autoload}) {
154 $bad = esystem("/usr/sbin/asterisk -rx 'load $mod'");