home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / perl / Perl / writemain.SH < prev    next >
Text File  |  1995-12-03  |  3KB  |  98 lines

  1. case $CONFIG 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.     ;;
  13. esac
  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.
  16. case "$0" in
  17. */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  18. esac
  19. echo "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.
  24. rm -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.  
  37. orig="$*"
  38. args=''
  39. : Remove any .a suffixes and any leading path components
  40. for file in `echo $orig | sed 's/\.a//g'` ; do
  41.     case "$file" in
  42.     ext/*)    file=`echo $file | sed 's:ext/\(.*\)/[^/]*:\1:'`
  43.         ;;
  44.     lib/auto/*)    file=`echo $file | sed 's:lib/auto/\(.*\)/[^/]*:\1:'`
  45.         ;;
  46.     */*)
  47.         file=`expr X$file : 'X.*/\(.*\)'`
  48.         ;;
  49.     esac
  50.     args="$args $file"
  51. done
  52.  
  53.  
  54. sed '/Do not delete this line--writemain depends on it/q' miniperlmain.c
  55. if test X"$args" != "X" ; then
  56.     echo "    char *file = __FILE__;"
  57.     ai=''
  58.  
  59.     for ext in $args ; do
  60.  
  61.     : $ext will either be 'Name' or 'Name1/Name2' etc
  62.     : convert ext into cname and mname
  63.     mname=`echo $ext   | sed 's!/!::!g'`
  64.     cname=`echo $mname | sed 's!:!_!g'`
  65.  
  66.     echo "    {   extern void boot_${cname} _((CV* cv));"
  67.     if test "$ext" = "DynaLoader"; then
  68.         : Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!
  69.         : boot_DynaLoader is called directly in DynaLoader.pm
  70.         echo "        newXS(\"${mname}::boot_${ext}\", boot_${cname}, file);"
  71.     else
  72.         echo "        newXS(\"${mname}::bootstrap\", boot_${cname}, file);"
  73.     fi
  74.     # does this extension wish to supply automatic booting code?
  75.     for aifile in ext/$ext/AutoInit.* ; do
  76.         case $aifile in
  77.         *.c)echo "    /* autoinit code from $aifile follows: */"
  78.             echo "    {"; cat $aifile; echo "    }"
  79.             ;;
  80.         *.pl) ai="$ai `cat $aifile | tr '\012' ' '`;"
  81.             ;;
  82.         esac
  83.     done
  84.     echo "    }"
  85.     done
  86.     if test "X$ai" != "X"; then
  87.     echo "    autoboot_preamble = \"BEGIN { $ai }\";"
  88.     fi
  89. fi
  90.  
  91. cat << 'EOP'
  92. }
  93. EOP
  94.  
  95. !NO!SUBS!
  96. chmod 755 writemain
  97. $eunicefix writemain
  98.