diff options
author | Larry Wall <lwall@netlabs.com> | 1994-10-17 23:00:00 +0000 |
---|---|---|
committer | Larry Wall <lwall@netlabs.com> | 1994-10-17 23:00:00 +0000 |
commit | a0d0e21ea6ea90a22318550944fe6cb09ae10cda (patch) | |
tree | faca1018149b736b1142f487e44d1ff2de5cc1fa /writemain.SH | |
parent | 85e6fe838fb25b257a1b363debf8691c0992ef71 (diff) | |
download | perl-a0d0e21ea6ea90a22318550944fe6cb09ae10cda.tar.gz |
perl 5.000perl-5.000
[editor's note: this commit combines approximate 4 months of furious
releases of Andy Dougherty and Larry Wall - see pod/perlhist.pod for
details. Andy notes that;
Alas neither my "Irwin AccuTrack" nor my DC 600A quarter-inch cartridge
backup tapes from that era seem to be readable anymore. I guess 13 years
exceeds the shelf life for that backup technology :-(.
]
Diffstat (limited to 'writemain.SH')
-rw-r--r-- | writemain.SH | 77 |
1 files changed, 58 insertions, 19 deletions
diff --git a/writemain.SH b/writemain.SH index ea8aeabbd2..d7511e8429 100644 --- a/writemain.SH +++ b/writemain.SH @@ -27,29 +27,68 @@ $startsh : In the following dollars and backticks do not need the extra backslash. $spitshell >>writemain <<'!NO!SUBS!' -: This script takes the plain miniperlmain.c and writes out perlmain.c -: which includes all the extensions. -: The command line arguments name extensions to be used. -: E.g.: sh writemain SDBM_File POSIX > perlmain.c -: -args="$*" -if test X"$args" = "X" ; then - cat miniperlmain.c -else - sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c - cat << 'EOP' - -#ifdef USE_DYNAMIC_LOADING - boot_DynamicLoader(); -#endif +# This script takes the plain miniperlmain.c and writes out perlmain.c +# which includes all the extensions. +# The command line arguments name extensions to be used. +# E.g.: sh writemain SDBM_File POSIX > perlmain.c +# -EOP - for ext in $args; do - echo " newXSUB(\"${ext}::bootstrap\", 0, boot_${ext}, file);" +orig="$*" +args='' +: Remove any .a suffixes and any leading path components +for file in `echo $orig | sed 's/\.a//g'` ; do + case "$file" in + ext/*) file=`echo $file | sed 's:ext/\(.*\)/[^/]*:\1:'` + ;; + */*) + file=`expr X$file : 'X.*/\(.*\)'` + ;; + esac + args="$args $file" +done + + +sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c +if test X"$args" != "X" ; then + echo " char *file = __FILE__;" + ai='' + + 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 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 + echo " newXS(\"${mname}::boot_${ext}\", boot_${cname}, file);" + 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 - echo '}' + if test "X$ai" != "X"; then + echo " autoboot_preamble = \"BEGIN { $ai }\";" + fi fi +cat << 'EOP' +} +EOP + !NO!SUBS! chmod 755 writemain $eunicefix writemain |