X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=writemain.SH;h=ed8aca69edd692a83b937676b82636101226c983;hb=2d8142c661f64cf38c31c13eb111172cbf9b67fc;hp=d7511e84296efaf214bdcf8dcc9c3db15984b5fa;hpb=a0d0e21ea6ea90a22318550944fe6cb09ae10cda;p=p5sagit%2Fp5-mst-13.2.git diff --git a/writemain.SH b/writemain.SH index d7511e8..ed8aca6 100644 --- a/writemain.SH +++ b/writemain.SH @@ -1,4 +1,4 @@ -case $CONFIG in +case $PERL_CONFIG_SH in '') if test -f config.sh; then TOP=.; elif test -f ../config.sh; then TOP=..; @@ -21,6 +21,7 @@ echo "Extracting writemain (with variable substitutions)" : Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. : Protect any dollar signs and backticks that you do not want interpreted : by putting a backslash in front. You may delete these comments. +rm -f writemain $spitshell >writemain <>writemain <<'!NO!SUBS!' orig="$*" args='' : Remove any .a suffixes and any leading path components -for file in `echo $orig | sed 's/\.a//g'` ; do +for file in $orig ; do + case "$file" in + *.a) file=`echo $file | sed 's/\.a//g'` + ;; + esac case "$file" in ext/*) file=`echo $file | sed 's:ext/\(.*\)/[^/]*:\1:'` ;; + lib/auto/*) file=`echo $file | sed 's:lib/auto/\(.*\)/[^/]*:\1:'` + ;; */*) file=`expr X$file : 'X.*/\(.*\)'` ;; @@ -49,8 +56,30 @@ done sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c + + +if test X"$args" != "X" ; then + for ext in $args ; do +: $ext will either be 'Name' or 'Name1/Name2' etc +: convert ext into cname and mname +mname=`echo $ext | sed 's!/!::!g'` +cname=`echo $mname | sed 's!:!_!g'` + +echo "EXTERN_C void boot_${cname} (pTHX_ CV* cv);" + done +fi + +cat << 'EOP' + +static void +xs_init(pTHX) +{ +EOP + if test X"$args" != "X" ; then echo " char *file = __FILE__;" + echo " dXSUB_SYS;" + ai='' for ext in $args ; do @@ -60,7 +89,6 @@ if test X"$args" != "X" ; then mname=`echo $ext | sed 's!/!::!g'` cname=`echo $mname | sed 's!:!_!g'` - echo " { extern void boot_${cname} _((CV* cv));" if test "$ext" = "DynaLoader"; then : Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'! : boot_DynaLoader is called directly in DynaLoader.pm @@ -68,21 +96,7 @@ if test X"$args" != "X" ; then else echo " newXS(\"${mname}::bootstrap\", boot_${cname}, file);" fi - # does this extension wish to supply automatic booting code? - for aifile in ext/$ext/AutoInit.* ; do - case $aifile in - *.c)echo " /* autoinit code from $aifile follows: */" - echo " {"; cat $aifile; echo " }" - ;; - *.pl) ai="$ai `cat $aifile | tr '\012' ' '`;" - ;; - esac - done - echo " }" done - if test "X$ai" != "X"; then - echo " autoboot_preamble = \"BEGIN { $ai }\";" - fi fi cat << 'EOP'