Commit | Line | Data |
68dc0745 |
1 | # |
2 | # Makefile to build perl on Windowns NT using Microsoft NMAKE. |
3 | # |
4 | # |
5 | # This is set up to build a perl.exe that runs off a shared library |
6 | # (perl.dll). Also makes individual DLLs for the XS extensions. |
7 | # |
8 | # There's no support for building an all-static perl yet. |
9 | # Doesn't build any of the stuff in ..\utils yet. |
10 | # No support for installing documentation, uh, yet. |
11 | # |
0a753a76 |
12 | |
68dc0745 |
13 | |
14 | # |
15 | # Set this to wherever you want "nmake install" to put your |
16 | # newly built perl. If you change this, you better change |
17 | # all occurrences of this prefix in $(INST_TOP)\lib\Config.pm |
18 | # as well. |
19 | |
20 | INST_TOP=C:\perl |
21 | |
22 | #################### do not edit below this line ######################## |
23 | # |
24 | INST_BIN=$(INST_TOP)\bin |
25 | INST_LIB=$(INST_TOP)\lib |
26 | INST_POD=$(INST_TOP)\pod |
27 | INST_HTML=$(INST_POD)\html |
28 | LIBDIR=..\lib |
0a753a76 |
29 | EXTDIR=..\ext |
68dc0745 |
30 | PODDIR=..\pod |
0a753a76 |
31 | EXTUTILSDIR=$(LIBDIR)\extutils |
68dc0745 |
32 | |
33 | # |
34 | # various targets |
35 | PERLLIB=..\libperl.lib |
36 | MINIPERL=..\miniperl.exe |
37 | PERLDLL=..\perl.dll |
38 | PERLEXE=..\perl.exe |
39 | GLOBEXE=..\perlglob.exe |
40 | |
41 | PL2BAT=bin\PL2BAT.BAT |
42 | MAKE=nmake /nologo |
3fe9a6f1 |
43 | XCOPY=xcopy /i /d /f /r |
68dc0745 |
44 | NULL= |
45 | |
46 | # |
47 | # filenames given to xsubpp must have forward slashes (since it puts |
48 | # full pathnames in #line strings) |
49 | XSUBPP=..\$(MINIPERL) ..\$(EXTUTILSDIR)\xsubpp -C++ -prototypes |
50 | |
51 | CORE_C= \ |
52 | ..\av.c \ |
53 | ..\deb.c \ |
54 | ..\doio.c \ |
55 | ..\doop.c \ |
56 | ..\dump.c \ |
57 | ..\globals.c \ |
58 | ..\gv.c \ |
59 | ..\hv.c \ |
60 | ..\mg.c \ |
61 | ..\op.c \ |
62 | ..\perl.c \ |
63 | ..\perlio.c \ |
64 | ..\perly.c \ |
65 | ..\pp.c \ |
66 | ..\pp_ctl.c \ |
67 | ..\pp_hot.c \ |
68 | ..\pp_sys.c \ |
69 | ..\regcomp.c \ |
70 | ..\regexec.c \ |
71 | ..\run.c \ |
72 | ..\scope.c \ |
73 | ..\sv.c \ |
74 | ..\taint.c \ |
75 | ..\toke.c \ |
76 | ..\universal.c \ |
77 | ..\util.c |
0a753a76 |
78 | |
79 | EXTENSIONS=DynaLoader Socket IO Fcntl Opcode SDBM_File |
0a753a76 |
80 | |
68dc0745 |
81 | DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader |
82 | SOCKET=$(EXTDIR)\Socket\Socket |
83 | FCNTL=$(EXTDIR)\Fcntl\Fcntl |
84 | OPCODE=$(EXTDIR)\Opcode\Opcode |
85 | SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File |
86 | IO=$(EXTDIR)\IO\IO |
87 | |
88 | SOCKET_DLL=..\lib\auto\Socket\Socket.dll |
89 | FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll |
90 | OPCODE_DLL=..\lib\auto\Opcode\Opcode.dll |
91 | SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll |
92 | IO_DLL=..\lib\auto\IO\IO.dll |
93 | |
94 | STATICLINKMODULES=DynaLoader |
95 | DYNALOADMODULES= \ |
96 | $(SOCKET_DLL) \ |
97 | $(FCNTL_DLL) \ |
98 | $(OPCODE_DLL) \ |
99 | $(SDBM_FILE_DLL)\ |
100 | $(IO_DLL) |
101 | |
102 | POD2HTML=$(PODDIR)\pod2html |
103 | POD2MAN=$(PODDIR)\pod2man |
104 | POD2LATEX=$(PODDIR)\pod2latex |
105 | POD2TEXT=$(PODDIR)\pod2text |
106 | |
107 | ALL: $(PERLEXE) $(GLOBEXE) $(DYNALOADMODULES) |
0a753a76 |
108 | |
109 | !IF "$(CFG)" =="" |
110 | CFG=Release |
111 | !ENDIF |
112 | |
68dc0745 |
113 | modules.lib : $(DYNALOADER).c |
114 | $(MAKE) -A -f modules.mak CFG="modules - Win32 $(CFG)" |
0a753a76 |
115 | |
68dc0745 |
116 | $(GLOBEXE): |
117 | $(MAKE) -f perlglob.mak CFG="perlglob - Win32 Release" |
0a753a76 |
118 | |
68dc0745 |
119 | $(PERLLIB): $(CORE_C) |
68dc0745 |
120 | $(MAKE) -f libperl.mak CFG="libperl - Win32 $(CFG)" |
0a753a76 |
121 | |
68dc0745 |
122 | $(MINIPERL): $(PERLLIB) |
123 | $(MAKE) -A -f miniperl.mak CFG="miniperl - Win32 $(CFG)" |
0a753a76 |
124 | copy config.w32 ..\config.sh |
125 | cd .. |
126 | miniperl configpm |
127 | cd win32 |
68dc0745 |
128 | if exist lib\* $(XCOPY) /e lib\*.* ..\lib\$(NULL) |
0a753a76 |
129 | copy bin\test.bat ..\t |
130 | |
68dc0745 |
131 | $(PERLDLL): $(MINIPERL) $(PERLLIB) |
132 | $(MINIPERL) -w makedef.pl > perldll.def |
133 | $(MAKE) -A -f perldll.mak CFG="perldll - Win32 $(CFG)" |
0a753a76 |
134 | |
68dc0745 |
135 | $(PERLEXE): $(MINIPERL) modules.lib $(PERLDLL) |
68dc0745 |
136 | # $(MINIPERL) makemain.pl $(STATICLINKMODUES) > perlmain.c |
137 | # $(MINIPERL) makeperldef.pl $(STATICLINKMODUES) > perl.def |
138 | $(MINIPERL) makeperldef.pl $(NULL) > perl.def |
0a753a76 |
139 | copy runperl.c perlmain.c |
68dc0745 |
140 | $(MAKE) -A -f perl.mak CFG="perl - Win32 $(CFG)" |
141 | copy ..\_perl.exe $(PERLEXE) |
0a753a76 |
142 | del ..\_perl.exe |
143 | del ..\*.exp |
144 | copy splittree.pl .. |
68dc0745 |
145 | $(MINIPERL) ..\splittree.pl "../LIB" "../LIB/auto" |
0a753a76 |
146 | attrib -r ..\t\*.* |
147 | copy test ..\t |
68dc0745 |
148 | $(XCOPY) ..\*.h ..\lib\CORE\*.* |
149 | $(XCOPY) ..\perl.lib ..\lib\CORE |
150 | $(XCOPY) $(PERLLIB) ..\lib\CORE |
151 | $(XCOPY) *.h ..\lib\CORE |
152 | $(XCOPY) /S include ..\lib\CORE |
0a753a76 |
153 | |
68dc0745 |
154 | $(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs |
155 | if not exist ..\lib\auto md ..\lib\auto |
156 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
157 | cd $(EXTDIR)\$(*B) |
158 | $(XSUBPP) dl_win32.xs > $(*B).c |
0a753a76 |
159 | cd ..\..\win32 |
160 | |
68dc0745 |
161 | $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs |
162 | copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs |
0a753a76 |
163 | |
68dc0745 |
164 | $(SOCKET).c: $(SOCKET).xs |
165 | if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B) |
166 | $(MINIPERL) genxsdef.pl $(*B) > $(*B).def |
167 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
168 | cd $(EXTDIR)\$(*B) |
169 | $(XSUBPP) $(*B).xs > $(*B).c |
0a753a76 |
170 | cd ..\..\win32 |
171 | |
68dc0745 |
172 | $(IO).c: $(IO).xs |
173 | if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B) |
174 | $(MINIPERL) genxsdef.pl $(*B) > $(*B).def |
175 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
176 | $(XCOPY) /s $(EXTDIR)\$(*B)\lib\*.* $(LIBDIR) |
177 | cd $(EXTDIR)\$(*B) |
178 | $(XSUBPP) $(*B).xs > $(*B).c |
179 | cd ..\..\win32 |
0a753a76 |
180 | |
68dc0745 |
181 | $(SDBM_FILE).c: $(SDBM_FILE).xs |
182 | if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B) |
183 | $(MINIPERL) genxsdef.pl $(*B) > $(*B).def |
184 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
185 | cd $(EXTDIR)\$(*B) |
186 | $(XSUBPP) -typemap ./typemap $(*B).xs > $(*B).c |
0a753a76 |
187 | cd ..\..\win32 |
188 | |
68dc0745 |
189 | $(FCNTL).c: $(FCNTL).xs |
190 | if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B) |
191 | $(MINIPERL) genxsdef.pl $(*B) > $(*B).def |
192 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
193 | cd $(EXTDIR)\$(*B) |
194 | $(XSUBPP) $(*B).xs > $(*B).c |
195 | cd ..\..\win32 |
0a753a76 |
196 | |
68dc0745 |
197 | $(OPCODE).c: $(OPCODE).xs |
198 | if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B) |
199 | $(MINIPERL) genxsdef.pl $(*B) > $(*B).def |
200 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
201 | $(XCOPY) $(EXTDIR)\$(*B)\*.pm $(LIBDIR)\$(NULL) |
202 | cd $(EXTDIR)\$(*B) |
203 | $(XSUBPP) $(*B).xs > $(*B).c |
0a753a76 |
204 | cd ..\..\win32 |
205 | |
68dc0745 |
206 | $(SOCKET_DLL): $(SOCKET).c $(PERLDLL) |
207 | $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)" |
0a753a76 |
208 | |
68dc0745 |
209 | $(IO_DLL): $(IO).c $(PERLDLL) |
210 | $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)" |
211 | |
212 | $(SDBM_FILE_DLL): $(SDBM_FILE).c $(PERLDLL) |
213 | $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)" |
0a753a76 |
214 | |
68dc0745 |
215 | $(FCNTL_DLL): $(FCNTL).c $(PERLDLL) |
216 | $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)" |
0a753a76 |
217 | |
68dc0745 |
218 | $(OPCODE_DLL): $(OPCODE).c $(PERLDLL) |
219 | $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)" |
220 | |
221 | doc: $(PERLEXE) |
222 | $(PERLEXE) $(POD2HTML).PL |
223 | $(PERLEXE) $(POD2MAN).PL |
224 | $(PERLEXE) $(POD2LATEX).PL |
225 | $(PERLEXE) $(POD2TEXT).PL |
226 | $(PERLEXE) $(PL2BAT) $(POD2HTML) |
227 | $(PERLEXE) $(PL2BAT) $(POD2MAN) |
228 | $(PERLEXE) $(PL2BAT) $(POD2LATEX) |
229 | $(PERLEXE) $(PL2BAT) $(POD2TEXT) |
230 | cd $(PODDIR) |
231 | $(PERLEXE) pod2html.bat *.pod |
232 | cd ..\win32 |
233 | |
3fe9a6f1 |
234 | utils: $(PERLEXE) |
235 | cd ..\utils |
236 | nmake PERL=$(MINIPERL) |
237 | $(PERLEXE) ..\win32\$(PL2BAT) h2ph splain perlbug pl2pm c2ph \ |
238 | h2xs perldoc pstruct |
239 | $(XCOPY) *.bat ..\win32\bin\*.* |
240 | cd ..\win32 |
241 | |
68dc0745 |
242 | distclean: |
243 | -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \ |
244 | $(PERLLIB) modules.lib |
245 | -del /f *.def |
246 | -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) \ |
247 | $(FCNTL_DLL) $(OPCODE_DLL) |
248 | -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c \ |
249 | $(OPCODE).c $(DYNALOADER).c |
250 | -del /f $(PODDIR)\*.html |
251 | -del /f $(PODDIR)\*.bat |
252 | -rmdir /s /q release |
253 | -rmdir /s /q debug |
254 | |
3fe9a6f1 |
255 | install : ALL doc utils |
68dc0745 |
256 | if not exist $(INST_TOP) mkdir $(INST_TOP) |
257 | echo I $(INST_TOP) L $(LIBDIR) |
258 | $(XCOPY) $(PERLEXE) $(INST_BIN)\*.* |
259 | $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* |
260 | $(XCOPY) $(PERLDLL) $(INST_BIN)\*.* |
3fe9a6f1 |
261 | $(XCOPY) bin\*.* $(INST_BIN)\*.* |
68dc0745 |
262 | $(XCOPY) /e ..\lib $(INST_LIB)\*.* |
263 | $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.* |
264 | $(XCOPY) ..\pod\*.pod $(INST_POD)\*.* |
265 | $(XCOPY) ..\pod\*.html $(INST_HTML)\*.* |
266 | |
267 | inst_lib : |
268 | copy splittree.pl .. |
269 | $(MINIPERL) ..\splittree.pl "../LIB" "../LIB/auto" |
270 | $(XCOPY) /e ..\lib $(INST_LIB)\*.* |
0a753a76 |
271 | |
68dc0745 |
272 | test : all |
273 | $(XCOPY) $(PERLEXE) ..\t\$(NULL) |
274 | $(XCOPY) $(PERLDLL) ..\t\$(NULL) |
275 | $(XCOPY) $(GLOBEXE) ..\t\$(NULL) |
276 | cd ..\t |
277 | $(PERLEXE) test |
278 | cd ..\win32 |