1case $PERL_CONFIG_SH in 2'') 3 if test -f config.sh; then TOP=.; 4 elif test -f ../config.sh; then TOP=..; 5 elif test -f ../../config.sh; then TOP=../..; 6 elif test -f ../../../config.sh; then TOP=../../..; 7 elif test -f ../../../../config.sh; then TOP=../../../..; 8 else 9 echo "Can't find config.sh."; exit 1 10 fi 11 . $TOP/config.sh 12 ;; 13esac 14: This forces SH files to create target in same directory as SH file. 15: This is so that make depend always knows where to find SH derivatives. 16case "$0" in 17*/*) cd `expr X$0 : 'X\(.*\)/'` ;; 18esac 19echo "Extracting writemain (with variable substitutions)" 20: This section of the file will have variable substitutions done on it. 21: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. 22: Protect any dollar signs and backticks that you do not want interpreted 23: by putting a backslash in front. You may delete these comments. 24rm -f writemain 25$spitshell >writemain <<!GROK!THIS! 26$startsh 27!GROK!THIS! 28 29: In the following dollars and backticks do not need the extra backslash. 30$spitshell >>writemain <<'!NO!SUBS!' 31# This script takes the plain miniperlmain.c and writes out perlmain.c 32# which includes all the extensions. 33# The command line arguments name extensions to be used. 34# E.g.: sh writemain SDBM_File POSIX > perlmain.c 35# 36 37orig="$*" 38args='' 39: Remove any .a suffixes and any leading path components 40for file in $orig ; do 41 case "$file" in 42 *.a) file=`echo $file | sed 's/\.a//g'` 43 ;; 44 esac 45 case "$file" in 46 ext/*) file=`echo $file | sed 's:ext/\(.*\)/[^/]*:\1:'` 47 ;; 48 lib/auto/*) file=`echo $file | sed 's:lib/auto/\(.*\)/[^/]*:\1:'` 49 ;; 50 */*) 51 file=`expr X$file : 'X.*/\(.*\)'` 52 ;; 53 esac 54 args="$args $file" 55done 56 57 58sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c 59 60 61if test X"$args" != "X" ; then 62 for ext in $args ; do 63: $ext will either be 'Name' or 'Name1/Name2' etc 64: convert ext into cname and mname 65mname=`echo $ext | sed 's!/!::!g'` 66cname=`echo $mname | sed 's!:!_!g'` 67 68echo "EXTERN_C void boot_${cname} (pTHX_ CV* cv);" 69 done 70fi 71 72cat << 'EOP' 73 74static void 75xs_init(pTHX) 76{ 77EOP 78 79if test X"$args" != "X" ; then 80 echo " char *file = __FILE__;" 81 echo " dXSUB_SYS;" 82 83 ai='' 84 85 for ext in $args ; do 86 87 : $ext will either be 'Name' or 'Name1/Name2' etc 88 : convert ext into cname and mname 89 mname=`echo $ext | sed 's!/!::!g'` 90 cname=`echo $mname | sed 's!:!_!g'` 91 92 if test "$ext" = "DynaLoader"; then 93 : Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'! 94 : boot_DynaLoader is called directly in DynaLoader.pm 95 echo " newXS(\"${mname}::boot_${ext}\", boot_${cname}, file);" 96 else 97 echo " newXS(\"${mname}::bootstrap\", boot_${cname}, file);" 98 fi 99 done 100fi 101 102cat << 'EOP' 103} 104EOP 105 106!NO!SUBS! 107chmod 755 writemain 108$eunicefix writemain 109