source: trunk/third/perl/writemain.SH @ 14545

Revision 14545, 2.8 KB checked in by ghudson, 25 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
  • Property svn:executable set to *
Line 
1case $CONFIGDOTSH 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
Note: See TracBrowser for help on using the repository browser.