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 | # |
137443ea |
8 | |
9 | # |
10 | # Set these to wherever you want "nmake install" to put your |
11 | # newly built perl. |
137443ea |
12 | INST_DRV=c: |
13 | INST_TOP=$(INST_DRV)\perl |
14 | |
c90c0ff4 |
15 | # |
16 | # uncomment next line if you wish perl to run on Windows95 also |
17 | #RUNTIME=-MT |
18 | |
19 | # |
20 | # uncomment next line if you are using Visual C++ 2.x |
21 | #CCTYPE=MSVC20 |
22 | |
23 | # |
24 | # uncomment next line if you want debug version of perl (big,slow) |
25 | #CFG=Debug |
137443ea |
26 | |
d484a829 |
27 | # |
28 | # set this to your email address (perl will guess a value from |
29 | # from your loginname and your hostname, which may not be right) |
30 | #EMAIL = |
31 | |
137443ea |
32 | ##################### CHANGE THESE ONLY IF YOU MUST ##################### |
33 | |
34 | # |
35 | # Programs to compile, build .lib files and link |
36 | # |
68dc0745 |
37 | |
137443ea |
38 | CC=cl.exe |
39 | LINK32=link.exe |
40 | LIB32=$(LINK32) -lib |
68dc0745 |
41 | # |
137443ea |
42 | # Options |
43 | # |
44 | PERLDLL = -D "PERLDLL" |
c90c0ff4 |
45 | !IF "$(RUNTIME)" == "" |
137443ea |
46 | RUNTIME = -MD |
c90c0ff4 |
47 | !ENDIF |
137443ea |
48 | INCLUDES = -I ".\include" -I "." -I ".." |
49 | #PCHFLAGS = -Fp"$(INTDIR)/modules.pch" -YX |
50 | DEFINES = -D "WIN32" -D "_CONSOLE" -D "PERLDLL" |
51 | SUBSYS = console |
52 | LIBFILES = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \ |
53 | advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib |
54 | |
55 | !IF "$(RUNTIME)" == "-MD" |
56 | WINIOMAYBE = |
57 | !ELSE |
58 | WINIOMAYBE = win32io.obj |
59 | !ENDIF |
60 | |
61 | !IF "$(CFG)" == "Debug" |
62 | ! IF "$(CCTYPE)" == "MSVC20" |
63 | OPTIMIZE = -Od $(RUNTIME) -Z7 -D "_DEBUG" |
64 | ! ELSE |
65 | OPTIMIZE = -Od $(RUNTIME)d -Z7 -D "_DEBUG" |
66 | ! ENDIF |
96e4d5b1 |
67 | LINK_DBG = -debug -pdb:none |
137443ea |
68 | !ELSE |
69 | ! IF "$(CCTYPE)" == "MSVC20" |
70 | OPTIMIZE = -Od $(RUNTIME) -D "NDEBUG" |
71 | ! ELSE |
96e4d5b1 |
72 | OPTIMIZE = -Od $(RUNTIME) -D "NDEBUG" |
137443ea |
73 | ! ENDIF |
74 | LINK_DBG = -release |
75 | !ENDIF |
68dc0745 |
76 | |
137443ea |
77 | CFLAGS = -nologo -W3 $(INCLUDES) $(DEFINES) $(PCHFLAGS) $(OPTIMIZE) |
78 | LINK_FLAGS = -nologo $(LIBFILES) $(LINK_DBG) -machine:I386 |
79 | |
80 | #################### do not edit below this line ####################### |
81 | ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ############## |
82 | |
83 | # |
84 | # Rules |
85 | # |
86 | .SUFFIXES : |
87 | .SUFFIXES : .c .obj .dll .lib .exe |
88 | |
89 | .c.obj: |
90 | $(CC) -c $(CFLAGS) -Fo$@ $< |
91 | |
92 | .obj.dll: |
93 | $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def -out:$@ $(LINK_FLAGS) $< $(LIBPERL) |
68dc0745 |
94 | |
68dc0745 |
95 | # |
96 | INST_BIN=$(INST_TOP)\bin |
97 | INST_LIB=$(INST_TOP)\lib |
137443ea |
98 | INST_POD=$(INST_LIB)\pod |
68dc0745 |
99 | INST_HTML=$(INST_POD)\html |
100 | LIBDIR=..\lib |
0a753a76 |
101 | EXTDIR=..\ext |
68dc0745 |
102 | PODDIR=..\pod |
0a753a76 |
103 | EXTUTILSDIR=$(LIBDIR)\extutils |
68dc0745 |
104 | |
105 | # |
106 | # various targets |
54310121 |
107 | PERLIMPLIB=..\perl.lib |
68dc0745 |
108 | MINIPERL=..\miniperl.exe |
109 | PERLDLL=..\perl.dll |
110 | PERLEXE=..\perl.exe |
111 | GLOBEXE=..\perlglob.exe |
137443ea |
112 | CONFIGPM=..\lib\Config.pm |
83437bec |
113 | MINIMOD=..\lib\ExtUtils\Miniperl.pm |
68dc0745 |
114 | |
115 | PL2BAT=bin\PL2BAT.BAT |
137443ea |
116 | MAKE=nmake -nologo |
c90c0ff4 |
117 | XCOPY=xcopy /f /r /i /d |
118 | RCOPY=xcopy /f /r /i /e /d |
68dc0745 |
119 | NULL= |
120 | |
121 | # |
122 | # filenames given to xsubpp must have forward slashes (since it puts |
123 | # full pathnames in #line strings) |
137443ea |
124 | XSUBPP=..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp -C++ -prototypes |
68dc0745 |
125 | |
137443ea |
126 | CORE_C= ..\av.c \ |
68dc0745 |
127 | ..\deb.c \ |
128 | ..\doio.c \ |
129 | ..\doop.c \ |
130 | ..\dump.c \ |
131 | ..\globals.c \ |
132 | ..\gv.c \ |
133 | ..\hv.c \ |
134 | ..\mg.c \ |
135 | ..\op.c \ |
136 | ..\perl.c \ |
137 | ..\perlio.c \ |
138 | ..\perly.c \ |
139 | ..\pp.c \ |
140 | ..\pp_ctl.c \ |
141 | ..\pp_hot.c \ |
142 | ..\pp_sys.c \ |
143 | ..\regcomp.c \ |
144 | ..\regexec.c \ |
145 | ..\run.c \ |
146 | ..\scope.c \ |
147 | ..\sv.c \ |
148 | ..\taint.c \ |
149 | ..\toke.c \ |
150 | ..\universal.c \ |
151 | ..\util.c |
0a753a76 |
152 | |
137443ea |
153 | CORE_OBJ=..\av.obj \ |
154 | ..\deb.obj \ |
155 | ..\doio.obj \ |
156 | ..\doop.obj \ |
157 | ..\dump.obj \ |
158 | ..\globals.obj \ |
159 | ..\gv.obj \ |
160 | ..\hv.obj \ |
161 | ..\mg.obj \ |
162 | ..\op.obj \ |
163 | ..\perl.obj \ |
164 | ..\perlio.obj \ |
165 | ..\perly.obj \ |
166 | ..\pp.obj \ |
167 | ..\pp_ctl.obj \ |
168 | ..\pp_hot.obj \ |
169 | ..\pp_sys.obj \ |
170 | ..\regcomp.obj \ |
171 | ..\regexec.obj \ |
172 | ..\run.obj \ |
173 | ..\scope.obj \ |
174 | ..\sv.obj \ |
175 | ..\taint.obj \ |
176 | ..\toke.obj \ |
177 | ..\universal.obj \ |
178 | ..\util.obj |
179 | |
180 | WIN32_C = perllib.c \ |
181 | win32.c \ |
182 | win32io.c \ |
183 | win32sck.c \ |
184 | |
185 | WIN32_OBJ = win32.obj \ |
186 | win32io.obj \ |
187 | win32sck.obj \ |
188 | |
189 | DLL_OBJ = perllib.obj $(DYNALOADER).obj |
190 | |
191 | CORE_H = "..\av.h"\ |
192 | "..\cop.h"\ |
193 | "..\cv.h"\ |
194 | "..\dosish.h"\ |
195 | "..\embed.h"\ |
196 | "..\form.h"\ |
197 | "..\gv.h"\ |
198 | "..\handy.h"\ |
199 | "..\hv.h"\ |
200 | "..\mg.h"\ |
201 | "..\nostdio.h"\ |
202 | "..\op.h"\ |
203 | "..\opcode.h"\ |
204 | "..\perl.h"\ |
205 | "..\perlio.h"\ |
206 | "..\perlsdio.h"\ |
207 | "..\perlsfio.h"\ |
208 | "..\perly.h"\ |
209 | "..\pp.h"\ |
210 | "..\proto.h"\ |
211 | "..\regexp.h"\ |
212 | "..\scope.h"\ |
213 | "..\sv.h"\ |
214 | "..\unixish.h"\ |
215 | "..\util.h"\ |
216 | "..\XSUB.h"\ |
217 | ".\config.h"\ |
218 | "..\EXTERN.h"\ |
219 | ".\include\dirent.h"\ |
220 | ".\include\netdb.h"\ |
221 | ".\include\sys\socket.h"\ |
222 | ".\win32.h" |
223 | |
224 | |
0a753a76 |
225 | EXTENSIONS=DynaLoader Socket IO Fcntl Opcode SDBM_File |
0a753a76 |
226 | |
68dc0745 |
227 | DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader |
228 | SOCKET=$(EXTDIR)\Socket\Socket |
229 | FCNTL=$(EXTDIR)\Fcntl\Fcntl |
230 | OPCODE=$(EXTDIR)\Opcode\Opcode |
231 | SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File |
232 | IO=$(EXTDIR)\IO\IO |
233 | |
234 | SOCKET_DLL=..\lib\auto\Socket\Socket.dll |
235 | FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll |
236 | OPCODE_DLL=..\lib\auto\Opcode\Opcode.dll |
237 | SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll |
238 | IO_DLL=..\lib\auto\IO\IO.dll |
239 | |
240 | STATICLINKMODULES=DynaLoader |
241 | DYNALOADMODULES= \ |
242 | $(SOCKET_DLL) \ |
243 | $(FCNTL_DLL) \ |
244 | $(OPCODE_DLL) \ |
245 | $(SDBM_FILE_DLL)\ |
246 | $(IO_DLL) |
247 | |
248 | POD2HTML=$(PODDIR)\pod2html |
249 | POD2MAN=$(PODDIR)\pod2man |
250 | POD2LATEX=$(PODDIR)\pod2latex |
251 | POD2TEXT=$(PODDIR)\pod2text |
252 | |
137443ea |
253 | # |
254 | # Top targets |
255 | # |
0a753a76 |
256 | |
83437bec |
257 | ALL: $(PERLEXE) $(GLOBEXE) $(DYNALOADMODULES) $(MINIMOD) |
0a753a76 |
258 | |
137443ea |
259 | $(DYNALOADER).obj : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c |
0a753a76 |
260 | |
137443ea |
261 | #------------------------------------------------------------ |
0a753a76 |
262 | |
137443ea |
263 | $(GLOBEXE): perlglob.obj |
264 | $(LINK32) $(LINK_FLAGS) -out:$@ -subsystem:$(SUBSYS) perlglob.obj setargv.obj |
0a753a76 |
265 | |
137443ea |
266 | perlglob.obj : perlglob.c |
267 | |
268 | ..\miniperlmain.obj : ..\miniperlmain.c $(CORE_H) |
269 | |
270 | ..\config.sh : config.w32 $(MINIPERL) config_sh.PL |
271 | $(MINIPERL) -I..\lib config_sh.PL "INST_DRV=$(INST_DRV)" "INST_TOP=$(INST_TOP)"\ |
d484a829 |
272 | "cc=$(CC)" "ccflags=$(RUNTIME) -DWIN32" "cf_email=$(EMAIL)" config.w32 > ..\config.sh |
137443ea |
273 | |
83437bec |
274 | $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl |
137443ea |
275 | cd .. && miniperl configpm |
c90c0ff4 |
276 | if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL) |
137443ea |
277 | $(XCOPY) ..\*.h ..\lib\CORE\*.* |
278 | $(XCOPY) *.h ..\lib\CORE\*.* |
c90c0ff4 |
279 | $(RCOPY) include ..\lib\CORE\*.* |
280 | $(MINIPERL) -I..\lib config_h.PL || $(MAKE) CCTYPE=$(CCTYPE) RUNTIME=$(RUNTIME) CFG=$(CFG) $(CONFIGPM) |
137443ea |
281 | |
282 | $(MINIPERL) : ..\miniperlmain.obj $(CORE_OBJ) $(WIN32_OBJ) |
283 | $(LINK32) -subsystem:console -out:$@ @<< |
284 | $(LINK_FLAGS) ..\miniperlmain.obj $(CORE_OBJ) $(WIN32_OBJ) |
285 | << |
286 | |
287 | $(WIN32_OBJ) : $(CORE_H) |
288 | $(CORE_OBJ) : $(CORE_H) |
289 | $(DLL_OBJ) : $(CORE_H) |
0a753a76 |
290 | |
137443ea |
291 | perldll.def : $(MINIPERL) $(CONFIGPM) |
68dc0745 |
292 | $(MINIPERL) -w makedef.pl > perldll.def |
0a753a76 |
293 | |
137443ea |
294 | $(PERLDLL): perldll.def $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) |
295 | $(LINK32) -dll -def:perldll.def -out:$@ @<< |
296 | $(LINK_FLAGS) $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) |
297 | << |
298 | $(XCOPY) $(PERLIMPLIB) ..\lib\CORE |
299 | |
300 | perl.def : $(MINIPERL) makeperldef.pl |
301 | $(MINIPERL) -I..\lib makeperldef.pl $(NULL) > perl.def |
302 | |
83437bec |
303 | $(MINIMOD) : $(MINIPERL) ..\minimod.pl |
304 | cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm |
305 | |
306 | perlmain.c : runperl.c |
0a753a76 |
307 | copy runperl.c perlmain.c |
137443ea |
308 | |
309 | perlmain.obj : perlmain.c |
310 | $(CC) $(CFLAGS) -U "PERLDLL" -c perlmain.c |
311 | |
312 | $(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain.obj |
313 | $(LINK32) -subsystem:console -out:perl.exe $(LINK_FLAGS) perlmain.obj $(WINIOMAYBE) $(PERLIMPLIB) |
314 | copy perl.exe $@ |
315 | del perl.exe |
0a753a76 |
316 | copy splittree.pl .. |
137443ea |
317 | $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" |
0a753a76 |
318 | attrib -r ..\t\*.* |
319 | copy test ..\t |
0a753a76 |
320 | |
137443ea |
321 | $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) |
68dc0745 |
322 | if not exist ..\lib\auto md ..\lib\auto |
323 | $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) |
324 | cd $(EXTDIR)\$(*B) |
325 | $(XSUBPP) dl_win32.xs > $(*B).c |
0a753a76 |
326 | cd ..\..\win32 |
327 | |
68dc0745 |
328 | $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs |
329 | copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs |
0a753a76 |
330 | |
137443ea |
331 | $(IO_DLL): $(PERLEXE) $(CONFIGPM) $(IO).xs |
68dc0745 |
332 | cd $(EXTDIR)\$(*B) |
137443ea |
333 | ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl |
334 | $(MAKE) |
0a753a76 |
335 | cd ..\..\win32 |
336 | |
137443ea |
337 | $(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs |
68dc0745 |
338 | cd $(EXTDIR)\$(*B) |
137443ea |
339 | ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl |
340 | $(MAKE) |
68dc0745 |
341 | cd ..\..\win32 |
0a753a76 |
342 | |
137443ea |
343 | $(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs |
68dc0745 |
344 | cd $(EXTDIR)\$(*B) |
137443ea |
345 | ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl |
346 | $(MAKE) |
0a753a76 |
347 | cd ..\..\win32 |
348 | |
137443ea |
349 | $(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs |
68dc0745 |
350 | cd $(EXTDIR)\$(*B) |
137443ea |
351 | ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl |
352 | $(MAKE) |
68dc0745 |
353 | cd ..\..\win32 |
0a753a76 |
354 | |
137443ea |
355 | $(SOCKET_DLL): $(SOCKET).xs $(PERLEXE) |
68dc0745 |
356 | cd $(EXTDIR)\$(*B) |
137443ea |
357 | ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl |
358 | $(MAKE) |
0a753a76 |
359 | cd ..\..\win32 |
360 | |
68dc0745 |
361 | doc: $(PERLEXE) |
137443ea |
362 | cd $(PODDIR) |
363 | nmake -f ../win32/pod.mak |
364 | cd ..\win32 |
68dc0745 |
365 | |
3fe9a6f1 |
366 | utils: $(PERLEXE) |
367 | cd ..\utils |
368 | nmake PERL=$(MINIPERL) |
369 | $(PERLEXE) ..\win32\$(PL2BAT) h2ph splain perlbug pl2pm c2ph \ |
370 | h2xs perldoc pstruct |
371 | $(XCOPY) *.bat ..\win32\bin\*.* |
372 | cd ..\win32 |
373 | |
137443ea |
374 | distclean: clean |
375 | -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \ |
83437bec |
376 | $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD) |
68dc0745 |
377 | -del /f *.def |
54310121 |
378 | -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) $(FCNTL_DLL) \ |
379 | $(OPCODE_DLL) |
380 | -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \ |
381 | $(DYNALOADER).c |
68dc0745 |
382 | -del /f $(PODDIR)\*.html |
383 | -del /f $(PODDIR)\*.bat |
54310121 |
384 | -rmdir /s /q ..\lib\auto |
385 | -rmdir /s /q ..\lib\CORE |
68dc0745 |
386 | |
3fe9a6f1 |
387 | install : ALL doc utils |
68dc0745 |
388 | if not exist $(INST_TOP) mkdir $(INST_TOP) |
389 | echo I $(INST_TOP) L $(LIBDIR) |
390 | $(XCOPY) $(PERLEXE) $(INST_BIN)\*.* |
391 | $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* |
392 | $(XCOPY) $(PERLDLL) $(INST_BIN)\*.* |
3fe9a6f1 |
393 | $(XCOPY) bin\*.* $(INST_BIN)\*.* |
c90c0ff4 |
394 | $(RCOPY) ..\lib $(INST_LIB)\*.* |
68dc0745 |
395 | $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.* |
396 | $(XCOPY) ..\pod\*.pod $(INST_POD)\*.* |
397 | $(XCOPY) ..\pod\*.html $(INST_HTML)\*.* |
398 | |
137443ea |
399 | inst_lib : $(CONFIGPM) |
68dc0745 |
400 | copy splittree.pl .. |
137443ea |
401 | $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" |
c90c0ff4 |
402 | $(RCOPY) ..\lib $(INST_LIB)\*.* |
0a753a76 |
403 | |
137443ea |
404 | minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) |
405 | $(XCOPY) $(MINIPERL) ..\t\perl.exe |
406 | $(XCOPY) $(GLOBEXE) ..\t\$(NULL) |
407 | attrib -r ..\t\*.* |
408 | copy test ..\t |
409 | cd ..\t |
410 | $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t |
411 | cd ..\win32 |
412 | |
68dc0745 |
413 | test : all |
414 | $(XCOPY) $(PERLEXE) ..\t\$(NULL) |
415 | $(XCOPY) $(PERLDLL) ..\t\$(NULL) |
416 | $(XCOPY) $(GLOBEXE) ..\t\$(NULL) |
137443ea |
417 | cd ..\t |
418 | $(PERLEXE) -I..\lib harness |
68dc0745 |
419 | cd ..\win32 |
137443ea |
420 | |
421 | clean : |
422 | -@erase miniperlmain.obj |
423 | -@erase $(MINIPERL) |
424 | -@erase perlglob.obj |
425 | -@erase perlmain.obj |
426 | -@erase $(GLOBEXE) |
427 | -@erase $(PERLEXE) |
428 | -@erase $(PERLDLL) |
429 | -@erase $(CORE_OBJ) |
430 | -@erase $(WIN32_OBJ) |
431 | -@erase $(DLL_OBJ) |
432 | -@erase ..\*.obj *.obj ..\*.lib ..\*.exp |
433 | -@erase *.ilk |
434 | -@erase *.pdb |
435 | |
436 | |