mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	applied final release of bug 1353 per Mark's permission
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2782 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										114
									
								
								contrib/scripts/astxs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										114
									
								
								contrib/scripts/astxs
									
									
									
									
									
										Executable file
									
								
							| @@ -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); | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user