source: trunk/third/perl/cygwin/Makefile.SHs @ 14545

Revision 14545, 6.4 KB checked in by ghudson, 24 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.
Line 
1# This file is read by Makefile.SH to produce rules for $(LIBPERL) (and
2# some additional rules as well).
3
4# Rerun `sh Makefile.SH; make depend' after making any change.
5
6# Additional rules supported: libperls.a (for static linking),
7# ld2, perlld (dynamic linking tools)
8#
9
10#! /bin/sh
11case $CONFIG in
12'')
13        if test -f config.sh; then TOP=.;
14        elif test -f ../config.sh; then TOP=..;
15        elif test -f ../../config.sh; then TOP=../..;
16        elif test -f ../../../config.sh; then TOP=../../..;
17        elif test -f ../../../../config.sh; then TOP=../../../..;
18        else
19                echo "Can't find config.sh."; exit 1
20        fi
21        . $TOP/config.sh
22        ;;
23esac
24
25addtopath=`pwd`
26$spitshell >>Makefile <<!GROK!THIS!
27
28cygwin.c: cygwin/cygwin.c
29        \$(LNS) cygwin/cygwin.c
30
31# shell script feeding perlld to decent perl
32ld2: $& Makefile perlld ${src}/cygwin/ld2.in
33        @echo "extracting ld2 (with variable substitutions)"
34        @$sed s,@buildpath@,$addtopath,g <${src}/cygwin/ld2.in >ld2
35        @echo "installing ld2 into $installbin"
36# install is included in Cygwin distributions, and we make a note of th
37# requirement in the README.cygwin file. However, let's give them
38# a warning.
39        @install -c -m 755 ld2 ${installbin}/ld2
40        @if test ! -f  ${installbin}/ld2; then \
41                echo "*************************************************" ; \
42                echo "Make will probably fail in a few more steps." ; \
43                echo "When it does, copy \"ld2\" to a directory in" ; \
44                echo "your path, other than \".\"." ; \
45                echo "\"/usr/local/bin\" or something similar will do." ; \
46                echo "Then restart make." ; \
47                echo "*************************************************" ; \
48        fi
49
50!GROK!THIS!
51
52$spitshell >>Makefile <<!GROK!THIS!
53
54# perlld parameters
55#
56# this one is pretty mandatory
57DLLWRAP = 'dllwrap'
58
59# following are optional.
60WRAPDRIVER = gcc
61DLLTOOL = dlltool
62EXPORT_ALL = 1
63
64# if some of extensions are empty,
65# no corresponding output will be done.
66# most probably, you'd like to have an export library
67DEF_EXT = .def
68EXP_EXT = .exp
69
70perlld: $& Makefile ${src}/cygwin/perlld.in
71        @echo "extracting perlld (with variable substitutions)"
72        @$sed -e s,@CC@,\${CC}, -e s,@DLLWRAP@,\${DLLWRAP},g \\
73        -e s,@WRAPDRIVER@,\${WRAPDRIVER},g -e s,@DLLTOOL@,\${DLLTOOL},g \\
74        -e s,@AS@,\${AS},g -e s,@EXPORT_ALL@,\${EXPORT_ALL},g \\
75        -e s,@DEF_EXT@,\${DEF_EXT},g -e s,@EXP_EXT@,\${EXP_EXT},g \\
76        -e s,@LIB_EXT@,\${LIB_EXT},g \\
77        ${src}/cygwin/perlld.in >perlld
78
79!GROK!THIS!
80
81# make sure that all library names are not malformed
82libperl=`echo $libperl|sed -e s,\\\..*,,`
83
84# it would be nice to allow dll to have any name,
85# but for now i insist on 'lib<whatever>.dll'
86if ( ! ( echo $libperl | grep '^lib' >/dev/null ) )
87then
88  libperl=lib$libperl
89fi
90linklibperl=-l`echo $libperl|sed -e s,^lib,,`
91
92$spitshell >>Makefile <<!GROK!THIS!
93LIBPERL = $libperl
94LLIBPERL= $linklibperl
95CLDFLAGS= -L$addtopath $ldflags
96CAT = $cat
97AWK = $awk
98!GROK!THIS!
99
100case "$useshrplib" in
101true)
102        $spitshell >>Makefile <<'!NO!SUBS!'
103cwobj = $(obj)
104
105# override default rule (NB: make croaks!) to force dll usage
106perlmain$(OBJ_EXT): perlmain.c
107        $(CCCMD) $(PLDLFLAGS) -DUSEIMPORTLIB $*.c
108
109# library used to make statically linked executables
110# miniperl is linked against it to avoid libperl.dll locking
111$(LIBPERL)s$(LIB_EXT): $& perl$(OBJ_EXT) $(cwobj)
112        $(AR) rcu $@ perl$(OBJ_EXT) $(cwobj)
113
114# dll and import library
115$(LIBPERL)$(LIB_EXT): $& perl$(OBJ_EXT) $(cwobj) ld2
116        $(LDLIBPTH) ld2 $(SHRPLDFLAGS) -o $(LIBPERL)$(DLSUFFIX) \
117        perl$(OBJ_EXT) $(cwobj) $(libs)
118
119# How to build executables.
120
121# The miniperl -w -MExporter line is a basic cheap test to catch errors
122# before make goes on to run preplibrary and then MakeMaker on extensions.
123# This is very handy because later errors are often caused by miniperl
124# build problems but that's not obvious to the novice.
125# The Module used here must not depend on Config or any extensions.
126
127miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL)s$(LIB_EXT) opmini$(OBJ_EXT)
128        $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL)s $(libs)
129        $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
130
131!NO!SUBS!
132        ;;
133*)
134$spitshell >>Makefile <<'!NO!SUBS!'
135cwobj = $(obj)
136
137# perl library
138$(LIBPERL)$(LIB_EXT): $& perl$(OBJ_EXT) $(cwobj)
139        $(AR) rcu $@ perl$(OBJ_EXT) $(cwobj)
140
141# How to build executables.
142
143# The miniperl -w -MExporter line is a basic cheap test to catch errors
144# before make goes on to run preplibrary and then MakeMaker on extensions.
145# This is very handy because later errors are often caused by miniperl
146# build problems but that's not obvious to the novice.
147# The Module used here must not depend on Config or any extensions.
148
149miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL)$(LIB_EXT) opmini$(OBJ_EXT)
150        $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
151        $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
152
153!NO!SUBS!
154        ;;
155esac
156
157# libperl.a is _the_ library both in dll and static cases
158# $(LIBPERL)$(LIB_EXT) expands to this name dependless of build model
159#
160$spitshell >>Makefile <<'!NO!SUBS!'
161
162opmini$(OBJ_EXT) : op.c
163        $(CCCMD) $(PLDLFLAGS) -DPERL_EXTERNAL_GLOB -o opmini$(OBJ_EXT) op.c
164
165perl: $& perlmain$(OBJ_EXT) $(LIBPERL)$(LIB_EXT) $(DYNALOADER) $(static_ext) ext.libs
166        $(SHRPENV) $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
167
168pureperl: $& perlmain$(OBJ_EXT) $(LIBPERL)$(LIB_EXT) $(DYNALOADER) $(static_ext) ext.libs
169        $(SHRPENV) $(LDLIBPTH) purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
170
171purecovperl: $& perlmain$(OBJ_EXT) $(LIBPERL)$(LIB_EXT) $(DYNALOADER) $(static_ext) ext.libs
172        $(SHRPENV) $(LDLIBPTH) purecov $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o purecovperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
173
174quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL)$(LIB_EXT) $(DYNALOADER) $(static_ext) ext.libs
175        $(SHRPENV) $(LDLIBPTH) quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
176
177!NO!SUBS!
178
179# suid perl is removed - i've never seen suid scripts for win32
180
181##############################################
182# additional targets
183
184$spitshell >>Makefile <<'!NO!SUBS!'
185
186DIST_DIRECTORY = .dist
187
188distdir: miniperl
189        -mkdir $(DIST_DIRECTORY)
190        ./miniperl '-MExtUtils::Manifest' \
191        -e "ExtUtils::Manifest::manicopy(ExtUtils::Manifest::maniread(),'$(DIST_DIRECTORY)')"
192
193!NO!SUBS!
Note: See TracBrowser for help on using the repository browser.