This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
DB_File documentation fix
[perl5.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
43XCOPY=xcopy /d /f /r
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)
0a753a76 120 attrib -r ..\*.h
121 copy dosish.h ..
122 copy EXTERN.h ..
68dc0745 123 $(MAKE) -f libperl.mak CFG="libperl - Win32 $(CFG)"
0a753a76 124
68dc0745 125$(MINIPERL): $(PERLLIB)
126 $(MAKE) -A -f miniperl.mak CFG="miniperl - Win32 $(CFG)"
0a753a76 127 copy config.w32 ..\config.sh
128 cd ..
129 miniperl configpm
130 cd win32
68dc0745 131 if exist lib\* $(XCOPY) /e lib\*.* ..\lib\$(NULL)
0a753a76 132 copy bin\test.bat ..\t
133
68dc0745 134$(PERLDLL): $(MINIPERL) $(PERLLIB)
135 $(MINIPERL) -w makedef.pl > perldll.def
136 $(MAKE) -A -f perldll.mak CFG="perldll - Win32 $(CFG)"
0a753a76 137
68dc0745 138$(PERLEXE): $(MINIPERL) modules.lib $(PERLDLL)
139 attrib -r perlmain.c
140 attrib -r perl.def
141# $(MINIPERL) makemain.pl $(STATICLINKMODUES) > perlmain.c
142# $(MINIPERL) makeperldef.pl $(STATICLINKMODUES) > perl.def
143 $(MINIPERL) makeperldef.pl $(NULL) > perl.def
0a753a76 144 copy runperl.c perlmain.c
68dc0745 145 $(MAKE) -A -f perl.mak CFG="perl - Win32 $(CFG)"
146 copy ..\_perl.exe $(PERLEXE)
0a753a76 147 del ..\_perl.exe
148 del ..\*.exp
149 copy splittree.pl ..
68dc0745 150 $(MINIPERL) ..\splittree.pl "../LIB" "../LIB/auto"
0a753a76 151 attrib -r ..\t\*.*
152 copy test ..\t
68dc0745 153 $(XCOPY) ..\*.h ..\lib\CORE\*.*
154 $(XCOPY) ..\perl.lib ..\lib\CORE
155 $(XCOPY) $(PERLLIB) ..\lib\CORE
156 $(XCOPY) *.h ..\lib\CORE
157 $(XCOPY) /S include ..\lib\CORE
0a753a76 158
68dc0745 159$(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs
160 if not exist ..\lib\auto md ..\lib\auto
161 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
162 cd $(EXTDIR)\$(*B)
163 $(XSUBPP) dl_win32.xs > $(*B).c
0a753a76 164 cd ..\..\win32
165
68dc0745 166$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
167 copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
0a753a76 168
68dc0745 169$(SOCKET).c: $(SOCKET).xs
170 if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B)
171 $(MINIPERL) genxsdef.pl $(*B) > $(*B).def
172 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
173 cd $(EXTDIR)\$(*B)
174 $(XSUBPP) $(*B).xs > $(*B).c
0a753a76 175 cd ..\..\win32
176
68dc0745 177$(IO).c: $(IO).xs
178 if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B)
179 $(MINIPERL) genxsdef.pl $(*B) > $(*B).def
180 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
181 $(XCOPY) /s $(EXTDIR)\$(*B)\lib\*.* $(LIBDIR)
182 cd $(EXTDIR)\$(*B)
183 $(XSUBPP) $(*B).xs > $(*B).c
184 cd ..\..\win32
0a753a76 185
68dc0745 186$(SDBM_FILE).c: $(SDBM_FILE).xs
187 if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B)
188 $(MINIPERL) genxsdef.pl $(*B) > $(*B).def
189 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
190 cd $(EXTDIR)\$(*B)
191 $(XSUBPP) -typemap ./typemap $(*B).xs > $(*B).c
0a753a76 192 cd ..\..\win32
193
68dc0745 194$(FCNTL).c: $(FCNTL).xs
195 if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B)
196 $(MINIPERL) genxsdef.pl $(*B) > $(*B).def
197 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
198 cd $(EXTDIR)\$(*B)
199 $(XSUBPP) $(*B).xs > $(*B).c
200 cd ..\..\win32
0a753a76 201
68dc0745 202$(OPCODE).c: $(OPCODE).xs
203 if not exist ..\lib\auto\$(*B) md ..\lib\auto\$(*B)
204 $(MINIPERL) genxsdef.pl $(*B) > $(*B).def
205 $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
206 $(XCOPY) $(EXTDIR)\$(*B)\*.pm $(LIBDIR)\$(NULL)
207 cd $(EXTDIR)\$(*B)
208 $(XSUBPP) $(*B).xs > $(*B).c
0a753a76 209 cd ..\..\win32
210
68dc0745 211$(SOCKET_DLL): $(SOCKET).c $(PERLDLL)
212 $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)"
0a753a76 213
68dc0745 214$(IO_DLL): $(IO).c $(PERLDLL)
215 $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)"
216
217$(SDBM_FILE_DLL): $(SDBM_FILE).c $(PERLDLL)
218 $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)"
0a753a76 219
68dc0745 220$(FCNTL_DLL): $(FCNTL).c $(PERLDLL)
221 $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)"
0a753a76 222
68dc0745 223$(OPCODE_DLL): $(OPCODE).c $(PERLDLL)
224 $(MAKE) -f $(*B).mak CFG="$(*B) - Win32 $(CFG)"
225
226doc: $(PERLEXE)
227 $(PERLEXE) $(POD2HTML).PL
228 $(PERLEXE) $(POD2MAN).PL
229 $(PERLEXE) $(POD2LATEX).PL
230 $(PERLEXE) $(POD2TEXT).PL
231 $(PERLEXE) $(PL2BAT) $(POD2HTML)
232 $(PERLEXE) $(PL2BAT) $(POD2MAN)
233 $(PERLEXE) $(PL2BAT) $(POD2LATEX)
234 $(PERLEXE) $(PL2BAT) $(POD2TEXT)
235 cd $(PODDIR)
236 $(PERLEXE) pod2html.bat *.pod
237 cd ..\win32
238
239distclean:
240 -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
241 $(PERLLIB) modules.lib
242 -del /f *.def
243 -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) \
244 $(FCNTL_DLL) $(OPCODE_DLL)
245 -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c \
246 $(OPCODE).c $(DYNALOADER).c
247 -del /f $(PODDIR)\*.html
248 -del /f $(PODDIR)\*.bat
249 -rmdir /s /q release
250 -rmdir /s /q debug
251
252install : ALL doc
253 if not exist $(INST_TOP) mkdir $(INST_TOP)
254 echo I $(INST_TOP) L $(LIBDIR)
255 $(XCOPY) $(PERLEXE) $(INST_BIN)\*.*
256 $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
257 $(XCOPY) $(PERLDLL) $(INST_BIN)\*.*
258 $(XCOPY) /e ..\lib $(INST_LIB)\*.*
259 $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.*
260 $(XCOPY) ..\pod\*.pod $(INST_POD)\*.*
261 $(XCOPY) ..\pod\*.html $(INST_HTML)\*.*
262
263inst_lib :
264 copy splittree.pl ..
265 $(MINIPERL) ..\splittree.pl "../LIB" "../LIB/auto"
266 $(XCOPY) /e ..\lib $(INST_LIB)\*.*
0a753a76 267
68dc0745 268test : all
269 $(XCOPY) $(PERLEXE) ..\t\$(NULL)
270 $(XCOPY) $(PERLDLL) ..\t\$(NULL)
271 $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
272 cd ..\t
273 $(PERLEXE) test
274 cd ..\win32