# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-#INST_VER = \5.9.1
+#INST_VER = \5.9.2
#
# Comment this out if you DON'T want your perl installation to have
# VC 6.0 can load the socket dll on demand. Makes the test suite
# run in about 10% less time.
-DELAYLOAD = -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
+DELAYLOAD = -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
!ENDIF
ARCHDIR = ..\lib\$(ARCHNAME)
LIBC = PerlCRT.lib
!ENDIF
-PERLEXE_ICO = perlexe.ico
-PERLEXE_RES = perlexe.res
-PERLDLL_RES =
-
!IF "$(CFG)" == "Debug"
! IF "$(CCTYPE)" == "MSVC20"
OPTIMIZE = -Od -MD -Z7 -DDEBUGGING
! ENDIF
LINK_DBG = -debug
!ELSE
-OPTIMIZE = -MD -DNDEBUG
-LINK_DBG = -release
+OPTIMIZE = -MD -Zi -DNDEBUG
+# we enable debug symbols in release builds also
+LINK_DBG = -debug -opt:ref,icf
+# you may want to enable this if you want COFF symbols in the executables
+# in addition to the PDB symbols. The default Dr. Watson that ships with
+# Windows can use the the former but not latter. The free WinDbg can be
+# installed to get better stack traces from just the PDB symbols, so we
+# avoid the bloat of COFF symbols by default.
+#LINK_DBG = $(LINK_DBG) -debugtype:both
! IF "$(WIN64)" == "define"
# enable Whole Program Optimizations (WPO) and Link Time Code Generation (LTCG)
OPTIMIZE = $(OPTIMIZE) -Ox -GL
LIBBASEFILES = $(CRYPT_LIB) \
oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
- netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
+ netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
version.lib
# win64 doesn't have some libs
PERLEXE = ..\perl.exe
WPERLEXE = ..\wperl.exe
GLOBEXE = ..\perlglob.exe
-CONFIGPM = ..\lib\Config.pm
+CONFIGPM = ..\lib\Config.pm ..\lib\Config_heavy.pl
MINIMOD = ..\lib\ExtUtils\Miniperl.pm
X2P = ..\x2p\a2p.exe
+# Unicode data files generated by mktables
+UNIDATAFILES = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
+ ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
+ ..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
+ ..\lib\unicore\PVA.pl
+
+# Directories of Unicode data files generated by mktables
+UNIDATADIR1 = ..\lib\unicore\To
+UNIDATADIR2 = ..\lib\unicore\lib
+
+PERLEXE_ICO = .\perlexe.ico
+PERLEXE_RES = .\perlexe.res
+PERLDLL_RES =
+
# Nominate a target which causes extensions to be re-built
# This used to be $(PERLEXE), but at worst it is the .dll that they depend
# on and really only the interface - i.e. the .def file used to export symbols
XSAPITEST = $(EXTDIR)\XS\APItest\APItest
XSTYPEMAP = $(EXTDIR)\XS\Typemap\Typemap
UNICODENORMALIZE = $(EXTDIR)\Unicode\Normalize\Normalize
+WIN32_DIR = ext\Win32
SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
XSAPITEST_DLL = $(AUTODIR)\XS\APItest\APItest.dll
XSTYPEMAP_DLL = $(AUTODIR)\XS\Typemap\Typemap.dll
UNICODENORMALIZE_DLL = $(AUTODIR)\Unicode\Normalize\Normalize.dll
+WIN32_DLL = $(AUTODIR)\Win32\Win32.dll
EXTENSION_C = \
$(SOCKET).c \
$(PERLIOVIA).c \
$(XSAPITEST).c \
$(XSTYPEMAP).c \
- $(UNICODENORMALIZE).c
+ $(UNICODENORMALIZE).c \
+ $(WIN32_DIR).c
EXTENSION_DLL = \
$(SOCKET_DLL) \
$(PERLIOVIA_DLL) \
$(XSAPITEST_DLL) \
$(XSTYPEMAP_DLL) \
- $(UNICODENORMALIZE_DLL)
+ $(UNICODENORMALIZE_DLL) \
+ $(WIN32_DLL)
POD2HTML = $(PODDIR)\pod2html
POD2MAN = $(PODDIR)\pod2man
"libpth=$(CCLIBDIR:"=\");$(EXTRALIBDIRS:"=\")" \
"libc=$(LIBC)" \
"make=$(MAKE_BARE)" \
+ "static_ext=$(STATIC_EXT)" \
"usethreads=$(USE_ITHREADS)" \
"useithreads=$(USE_ITHREADS)" \
"usemultiplicity=$(USE_MULTI)" \
# Top targets
#
-all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) \
+all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
$(X2P) Extensions
@echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
#----------------------------------------------------------------------------------
Extensions: buildext.pl $(PERLDEP) $(CONFIGPM)
$(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR)
+ $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext
+
+# Note: The next two targets explicitly remove a "blibdirs.exists" file that
+# currerntly gets left behind, until CPAN RT Ticket #5616 is resolved.
Extensions_clean:
-if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) clean
+ -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext clean
+ -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
+
+Extensions_realclean:
+ -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) $(EXTDIR) realclean
+ -if exist $(MINIPERL) $(MINIPERL) -I..\lib buildext.pl $(MAKE) $(PERLDEP) ext realclean
+ -if exist $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists del /f $(EXTDIR)\SDBM_File\sdbm\blibdirs.exists
#----------------------------------------------------------------------------------
copy ..\README.vms ..\pod\perlvms.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perl591delta.pod ..\pod\perldelta.pod
+ copy ..\pod\perl592delta.pod ..\pod\perldelta.pod
$(MAKE) -f ..\win32\pod.mak converters
cd ..\lib
$(PERLEXE) lib_pm.PL
# the doubled rmdir calls are needed because older cmd shells
# don't understand /q
-distclean: clean
+distclean: realclean
-del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
$(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
-del /f *.def *.map
-del /f $(EXTENSION_DLL)
-del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
-del /f $(EXTDIR)\DynaLoader\dl_win32.xs
+ -del /f $(EXTDIR)\DynaLoader\DynaLoader.pm
+ -del /f $(EXTDIR)\DynaLoader\XSLoader.pm
+ -del /f $(LIBDIR)\Encode.pm $(LIBDIR)\encoding.pm $(LIBDIR)\Errno.pm
+ -del /f $(LIBDIR)\Config.pod $(LIBDIR)\POSIX.pod $(LIBDIR)\threads.pm
-del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
- -del /f $(LIBDIR)\XSLoader.pm
+ -del /f $(LIBDIR)\XSLoader.pm $(LIBDIR)\lib.pm
-del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
-del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm
-del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
-del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
- -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
+ -del /f $(LIBDIR)\ByteLoader.pm
-del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
+ -del /f $(LIBDIR)\Devel\PPPort.pm
-del /f $(LIBDIR)\File\Glob.pm
-del /f $(LIBDIR)\Storable.pm
- -del /f $(LIBDIR)\Filter\Util\Call.pm
-del /f $(LIBDIR)\Digest\MD5.pm
+ -del /f $(LIBDIR)\PerlIO\encoding.pm
-del /f $(LIBDIR)\PerlIO\scalar.pm
-del /f $(LIBDIR)\PerlIO\via.pm
- -del /f $(LIBDIR)\MIME\Base64.pm
- -del /f $(LIBDIR)\MIME\QuotedPrint.pm
- -del /f $(LIBDIR)\List\Util.pm
- -del /f $(LIBDIR)\Scalar\Util.pm
+ -del /f $(LIBDIR)\Sys\Hostname.pm
+ -del /f $(LIBDIR)\Thread\Signal.pm $(LIBDIR)\Thread\Specific.pm
+ -del /f $(LIBDIR)\threads\shared.pm
-del /f $(LIBDIR)\Time\HiRes.pm
- -del /f $(LIBDIR)\XS\APItest.pm
- -del /f $(LIBDIR)\XS\Typemap.pm
-del /f $(LIBDIR)\Unicode\Normalize.pm
+ -del /f $(LIBDIR)\Win32.pm
-if exist $(LIBDIR)\IO rmdir /s /q $(LIBDIR)\IO
-if exist $(LIBDIR)\IO rmdir /s $(LIBDIR)\IO
-if exist $(LIBDIR)\B rmdir /s /q $(LIBDIR)\B
-if exist $(LIBDIR)\B rmdir /s $(LIBDIR)\B
-if exist $(LIBDIR)\Data rmdir /s /q $(LIBDIR)\Data
-if exist $(LIBDIR)\Data rmdir /s $(LIBDIR)\Data
+ -if exist $(LIBDIR)\Encode rmdir /s /q $(LIBDIR)\Encode
+ -if exist $(LIBDIR)\Encode rmdir /s $(LIBDIR)\Encode
-if exist $(LIBDIR)\Filter\Util rmdir /s /q $(LIBDIR)\Filter\Util
-if exist $(LIBDIR)\Filter\Util rmdir /s $(LIBDIR)\Filter\Util
- -if exist $(LIBDIR)\Digest rmdir /s /q $(LIBDIR)\Digest
- -if exist $(LIBDIR)\Digest rmdir /s $(LIBDIR)\Digest
-if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
-if exist $(LIBDIR)\MIME rmdir /s $(LIBDIR)\MIME
-if exist $(LIBDIR)\List rmdir /s /q $(LIBDIR)\List
-if exist $(LIBDIR)\Scalar rmdir /s $(LIBDIR)\Scalar
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-if exist $(LIBDIR)\XS rmdir /s $(LIBDIR)\XS
- cd $(PODDIR)
- -del /f *.html *.bat checkpods \
+ -cd $(PODDIR) && del /f *.html *.bat checkpods \
perlaix.pod perlamiga.pod perlapollo.pod perlbeos.pod \
perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldelta.pod perldgux.pod perldos.pod perlepoc.pod \
perlwin32.pod \
pod2html pod2latex pod2man pod2text pod2usage \
podchecker podselect
- cd ..\utils
- -del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs perldoc perlivp \
- dprofpp perlcc libnetcfg enc2xs piconv cpan xsubpp instmodsh prove
- -del /f *.bat
- cd ..\win32
- cd ..\x2p
- -del /f find2perl s2p psed
- -del /f *.bat
- cd ..\win32
+ -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
+ perldoc perlivp dprofpp perlcc libnetcfg enc2xs piconv cpan *.bat \
+ xsubpp instmodsh prove
+ -cd ..\x2p && del /f find2perl s2p psed *.bat
-del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
-del /f $(CONFIGPM)
-del /f bin\*.bat
- cd ..
- -del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
- cd win32
- cd $(EXTDIR)
- -del /s *.def Makefile Makefile.old
- cd ..\win32
+ -del /f $(PERLEXE_ICO) perl.base
+ -cd .. && del /s *.lib *.map *.pdb *.ilk *.bs *$(o) .exists pm_to_blib
+ -cd $(EXTDIR) && del /s *.def Makefile Makefile.old
-if exist $(AUTODIR) rmdir /s /q $(AUTODIR)
-if exist $(AUTODIR) rmdir /s $(AUTODIR)
-if exist $(COREDIR) rmdir /s /q $(COREDIR)
$(PERLEXE) ..\installperl
if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
$(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
+ if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.*
+ if exist ..\x2p\a2p.pdb $(XCOPY) ..\x2p\a2p.pdb $(INST_BIN)\*.*
$(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
installhtml : doc
$(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
$(RCOPY) ..\lib $(INST_LIB)\*.*
-minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
- $(XCOPY) $(MINIPERL) ..\t\perl.exe
+$(UNIDATAFILES) : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables
+ cd ..\lib\unicore && \
+ ..\$(MINIPERL) -I.. mktables
+
+minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils $(UNIDATAFILES)
+ $(XCOPY) $(MINIPERL) ..\t\$(NULL)
+ if exist ..\t\perl.exe del /f ..\t\perl.exe
+ rename ..\t\miniperl.exe perl.exe
$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
attrib -r ..\t\*.*
- copy test ..\t
- cd ..\t
- $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
- cd ..\win32
+ cd ..\t && \
+ $(MINIPERL) -I..\lib harness base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
test-prep : all utils
$(XCOPY) $(PERLEXE) ..\t\$(NULL)
$(PERLEXE) -I..\lib harness
cd ..\win32
-clean : Extensions_clean
+# the doubled rmdir calls are needed because older cmd shells
+# don't understand /q
+_clean :
-@$(DEL) miniperlmain$(o)
-@$(DEL) $(MINIPERL)
-@$(DEL) perlglob$(o)
-@$(DEL) $(CORE_OBJ)
-if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
-if exist $(MINIDIR) rmdir /s $(MINIDIR)
+ -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
+ -if exist $(UNIDATADIR1) rmdir /s $(UNIDATADIR1)
+ -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
+ -if exist $(UNIDATADIR2) rmdir /s $(UNIDATADIR2)
+ -@$(DEL) $(UNIDATAFILES)
-@$(DEL) $(WIN32_OBJ)
-@$(DEL) $(DLL_OBJ)
-@$(DEL) $(X2P_OBJ)
-@$(DEL) *.ilk
-@$(DEL) *.pdb
+clean : Extensions_clean _clean
+
+realclean : Extensions_realclean _clean
+
# 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.