# Makefile to build perl on Windows NT using Microsoft NMAKE.
#
# This is set up to build a perl.exe that runs off a shared library
-# (perl.dll). Also makes individual DLLs for the XS extensions.
+# (perl56.dll). Also makes individual DLLs for the XS extensions.
#
##
#USE_MULTI = define
#
-# XXX WARNING! This option is still very experimental. May be broken.
-#
# Beginnings of interpreter cloning/threads; still very incomplete.
# This should be enabled to get the fork() emulation. This needs
# USE_MULTI as well.
#BUILDOPT = $(BUILDOPT) -DPERL_TEXTMODE_SCRIPTS
#
-# This should normally be disabled. Enabling it runs a cloned toplevel
-# interpreter (*EXPERIMENTAL*, fails tests)
-#BUILDOPT = $(BUILDOPT) -DTOP_CLONE
-
-#
# specify semicolon-separated list of extra directories that modules will
# look for libraries (spaces in path names need not be quoted)
#
CXX_FLAG = -TP -GX
!IF "$(USE_PERLCRT)" != "define"
-PERLCRTLIBC = msvcrt.lib
+LIBC = msvcrt.lib
!ELSE
-PERLCRTLIBC = PerlCRT.lib
+LIBC = PerlCRT.lib
!ENDIF
PERLEXE_RES =
DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
- Sys/Hostname
+ Sys/Hostname Storable
STATIC_EXT = DynaLoader
NONXS_EXT = Errno
DPROF = $(EXTDIR)\Devel\DProf\DProf
GLOB = $(EXTDIR)\File\Glob\Glob
HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname
+STORABLE = $(EXTDIR)\Storable\Storable
SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
DPROF_DLL = $(AUTODIR)\Devel\DProf\DProf.dll
GLOB_DLL = $(AUTODIR)\File\Glob\Glob.dll
HOSTNAME_DLL = $(AUTODIR)\Sys\Hostname\Hostname.dll
+STORABLE_DLL = $(AUTODIR)\Storable\Storable.dll
ERRNO_PM = $(LIBDIR)\Errno.pm
$(BYTELOADER).c \
$(DPROF).c \
$(GLOB).c \
- $(HOSTNAME).c
+ $(HOSTNAME).c \
+ $(STORABLE).c
EXTENSION_DLL = \
$(SOCKET_DLL) \
$(BYTELOADER_DLL) \
$(DPROF_DLL) \
$(GLOB_DLL) \
- $(HOSTNAME_DLL)
+ $(HOSTNAME_DLL) \
+ $(STORABLE_DLL)
EXTENSION_PM = \
$(ERRNO_PM)
$(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
- $(LINK32) -subsystem:console -out:$@ -stack:0x8000000 $(LINK_FLAGS) \
+ $(LINK32) -subsystem:console -out:$@ -stack:0x1000000 $(LINK_FLAGS) \
$(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
copy $(PERLEXE) $(WPERLEXE)
$(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
$(MAKE)
cd ..\..\win32
+$(STORABLE_DLL): $(PERLEXE) $(STORABLE).xs
+ cd $(EXTDIR)\$(*B)
+ ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+ $(MAKE)
+ cd ..\..\win32
+
$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
cd $(EXTDIR)\$(*B)
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd ..\utils
$(MAKE) PERL=$(MINIPERL)
cd ..\pod
+ copy ..\README.amiga .\perlamiga.pod
+ copy ..\README.cygwin .\perlcygwin.pod
+ copy ..\README.dos .\perldos.pod
+ copy ..\README.hpux .\perlhpux.pod
+ copy ..\README.machten .\perlmachten.pod
+ copy ..\README.os2 .\perlos2.pod
+ copy ..\vms\perlvms.pod .\perlvms.pod
copy ..\README.win32 .\perlwin32.pod
$(MAKE) -f ..\win32\pod.mak converters
+ cd ..\lib
+ $(PERLEXE) lib_pm.PL
cd ..\win32
$(PERLEXE) $(PL2BAT) $(UTILS)
-del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
-del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
-del /f $(LIBDIR)\File\Glob.pm
- -rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
- -rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
- -rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
- -rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
+ -del /f $(LIBDIR)\Storable.pm
+ -if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
+ -if exist $(LIBDIR)\Thread rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
+ -if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
+ -if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
-del /f $(PODDIR)\*.html
-del /f $(PODDIR)\*.bat
cd ..\utils
cd $(EXTDIR)
-del /s *.lib *.def *.map *.pdb *.bs Makefile *$(o) pm_to_blib
cd ..\win32
- -rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
- -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
+ -if exist $(AUTODIR) rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
+ -if exist $(COREDIR) rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
install : all installbare installhtml
-@erase $(WPERLEXE)
-@erase $(PERLDLL)
-@erase $(CORE_OBJ)
- -rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
+ -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
-@erase $(WIN32_OBJ)
-@erase $(DLL_OBJ)
-@erase $(X2P_OBJ)
-@erase ..\x2p\*.exe ..\x2p\*.bat
-@erase *.ilk
-@erase *.pdb
+
+# Handy way to run perlbug -ok without having to install and run the
+# installed perlbug. We don't re-run the tests here - we trust the user.
+# Please *don't* use this unless all tests pass.
+# If you want to report test failures, use "nmake nok" instead.
+ok: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)"
+
+okfile: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
+
+nok: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
+
+nokfile: utils
+ $(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok