[dummy merge]
[p5sagit/p5-mst-13.2.git] / win32 / Makefile
CommitLineData
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
20INST_TOP=C:\perl
21
22#################### do not edit below this line ########################
23#
24INST_BIN=$(INST_TOP)\bin
25INST_LIB=$(INST_TOP)\lib
26INST_POD=$(INST_TOP)\pod
27INST_HTML=$(INST_POD)\html
28LIBDIR=..\lib
0a753a76 29EXTDIR=..\ext
68dc0745 30PODDIR=..\pod
0a753a76 31EXTUTILSDIR=$(LIBDIR)\extutils
68dc0745 32
33#
34# various targets
35PERLLIB=..\libperl.lib
36MINIPERL=..\miniperl.exe
37PERLDLL=..\perl.dll
38PERLEXE=..\perl.exe
39GLOBEXE=..\perlglob.exe
40
41PL2BAT=bin\PL2BAT.BAT
42MAKE=nmake /nologo
3fe9a6f1 43XCOPY=xcopy /i /d /f /r
68dc0745 44NULL=
45
46#
47# filenames given to xsubpp must have forward slashes (since it puts
48# full pathnames in #line strings)
49XSUBPP=..\$(MINIPERL) ..\$(EXTUTILSDIR)\xsubpp -C++ -prototypes
50
51CORE_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
79EXTENSIONS=DynaLoader Socket IO Fcntl Opcode SDBM_File
0a753a76 80
68dc0745 81DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader
82SOCKET=$(EXTDIR)\Socket\Socket
83FCNTL=$(EXTDIR)\Fcntl\Fcntl
84OPCODE=$(EXTDIR)\Opcode\Opcode
85SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File
86IO=$(EXTDIR)\IO\IO
87
88SOCKET_DLL=..\lib\auto\Socket\Socket.dll
89FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll
90OPCODE_DLL=..\lib\auto\Opcode\Opcode.dll
91SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll
92IO_DLL=..\lib\auto\IO\IO.dll
93
94STATICLINKMODULES=DynaLoader
95DYNALOADMODULES= \
96 $(SOCKET_DLL) \
97 $(FCNTL_DLL) \
98 $(OPCODE_DLL) \
99 $(SDBM_FILE_DLL)\
100 $(IO_DLL)
101
102POD2HTML=$(PODDIR)\pod2html
103POD2MAN=$(PODDIR)\pod2man
104POD2LATEX=$(PODDIR)\pod2latex
105POD2TEXT=$(PODDIR)\pod2text
106
107ALL: $(PERLEXE) $(GLOBEXE) $(DYNALOADMODULES)
0a753a76 108
109!IF "$(CFG)" ==""
110CFG=Release
111!ENDIF
112
68dc0745 113modules.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
221doc: $(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 234utils: $(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 242distclean:
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 255install : 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
267inst_lib :
268 copy splittree.pl ..
269 $(MINIPERL) ..\splittree.pl "../LIB" "../LIB/auto"
270 $(XCOPY) /e ..\lib $(INST_LIB)\*.*
0a753a76 271
68dc0745 272test : 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