INST_TOP *= $(INST_DRV)\perl
#
+# Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
+# on a 64-bit version of Windows.
+#WIN64 *= undef
+
+#
# Comment this out if you DON'T want your perl installation to be versioned.
# This means that the new installation will overwrite any files from the
# old installation at the same INST_TOP location. Leaving it enabled is
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-#INST_VER *= \5.11.1
+#INST_VER *= \5.11.2
#
# Comment this out if you DON'T want your perl installation to have
#CCTYPE *= MSVC90
# Borland 5.02 or later
#CCTYPE *= BORLAND
-# MinGW with gcc-2.95.2 or later
+# MinGW or mingw-w64 with gcc-2.95.2 or later
CCTYPE *= GCC
#
CCLIBDIR *= $(CCHOME)\lib
#
+# If building with gcc-4.x.x (or x86_64-w64-mingw32-gcc-4.x.x), then
+# uncomment the following assignment to GCC_4XX, make sure that CCHOME
+# has been set correctly above, and uncomment the appropriate
+# GCCHELPERDLL line.
+# The name of the dll can change, depending upon which vendor has supplied
+# your 4.x.x compiler, and upon the values of "x".
+# (The dll will be in your mingw/bin folder, so check there if you're
+# unsure about the correct name.)
+# Without these corrections, the op/taint.t test script will fail.
+#
+#GCC_4XX *= define
+#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_sjlj-1.dll
+#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_dw2-1.dll
+#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_1.dll
+
+#
+# uncomment this if you are using x86_64-w64-mingw32 cross-compiler
+# ie if your gcc executable is called 'x86_64-w64-mingw32-gcc'
+# instead of the usual 'gcc'.
+#
+#GCCCROSS *= define
+
+#
# Additional compiler flags can be specified here.
#
BUILDOPT *= $(BUILDOPTEXTRA)
kernel32.lib user32.lib gdi32.lib winspool.lib \
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
- version.lib odbc32.lib odbccp32.lib \
+ version.lib odbc32.lib odbccp32.lib comctl32.lib \
import32.lib $(LIBC)
.IF "$(CFG)" == "Debug"
.ELIF "$(CCTYPE)" == "GCC"
-CC = gcc
-LINK32 = g++
-LIB32 = ar rc
-IMPLIB = dlltool
-RSC = windres
+.IF "$(GCCCROSS)" == "define"
+ARCHPREFIX = x86_64-w64-mingw32-
+.ENDIF
+
+CC = $(ARCHPREFIX)gcc
+LINK32 = $(ARCHPREFIX)g++
+LIB32 = $(ARCHPREFIX)ar rc
+IMPLIB = $(ARCHPREFIX)dlltool
+RSC = $(ARCHPREFIX)windres
i = .i
o = .o
INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
DEFINES = -DWIN32 $(CRYPT_FLAG)
+.IF "$(WIN64)" == "define"
+DEFINES += -DWIN64 -DCONSERVATIVE
+.ENDIF
LOCDEFS = -DPERLDLL -DPERL_CORE
SUBSYS = console
CXX_FLAG = -xc++
-lmoldname -lkernel32 -luser32 -lgdi32 \
-lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
-loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr \
- -lwinmm -lversion -lodbc32 -lodbccp32
+ -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
.IF "$(CFG)" == "Debug"
OPTIMIZE = -g -O2 -DDEBUGGING
oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib \
- version.lib odbc32.lib odbccp32.lib
+ version.lib odbc32.lib odbccp32.lib comctl32.lib
# The 64 bit Platform SDK compilers contain a runtime library that doesn't
# include the buffer overrun verification code used by the /GS switch.
# Since the code links against libraries that are compiled with /GS, this
# "security cookie verification" must be included via bufferoverlow.lib.
.IF "$(WIN64)" == "define"
-LIBBASEFILES = $(LIBBASEFILES) bufferoverflowU.lib
+LIBBASEFILES += bufferoverflowU.lib
.ENDIF
# we add LIBC here, since we may be using PerlCRT.dll
CFLAGS_O = $(CFLAGS) $(BUILDOPT)
+.IF "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE" || \
+ "$(CCTYPE)" == "MSVC90" || "$(CCTYPE)" == "MSVC90FREE"
+LINK_FLAGS += "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
+.ELSE
+RSC_FLAGS = -DINCLUDE_MANIFEST
+.ENDIF
+
+
# used to allow local linking flags that are not propogated into Config.pm,
# currently unused
# -- BKS, 12-12-1999
.rc.res:
.IF "$(CCTYPE)" == "GCC"
- $(RSC) --use-temp-file --include-dir=. --include-dir=.. -O COFF -i $< -o $@
+ $(RSC) --use-temp-file --include-dir=. --include-dir=.. -O COFF -D INCLUDE_MANIFEST -i $< -o $@
.ELSE
- $(RSC) -i.. $<
+ $(RSC) -i.. -DINCLUDE_MANIFEST $<
.ENDIF
#
.ENDIF
# Unicode data files generated by mktables
-UNIDATAFILES = ..\lib\unicore\Canonical.pl ..\lib\unicore\Exact.pl \
- ..\lib\unicore\Properties ..\lib\unicore\Decomposition.pl \
+UNIDATAFILES = ..\lib\unicore\Decomposition.pl ..\lib\unicore\TestProp.pl \
..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
- ..\lib\unicore\PVA.pl
+ ..\lib\unicore\Heavy.pl ..\lib\unicore\mktables.lst
# Directories of Unicode data files generated by mktables
UNIDATADIR1 = ..\lib\unicore\To
UNIDATADIR2 = ..\lib\unicore\lib
+PERLEXE_MANIFEST= .\perlexe.manifest
PERLEXE_ICO = .\perlexe.ico
PERLEXE_RES = .\perlexe.res
PERLDLL_RES =
.ELIF "$(CCTYPE)" == "GCC"
+.IF "$(WIN64)" == "define"
+.IF "$(GCCCROSS)" == "define"
+CFGSH_TMPL = config.gc64
+CFGH_TMPL = config_H.gc64
+.ELSE
+CFGSH_TMPL = config.gc64nox
+CFGH_TMPL = config_H.gc64nox
+.ENDIF
+.ELSE
CFGSH_TMPL = config.gc
CFGH_TMPL = config_H.gc
+.ENDIF
PERLIMPLIB = ..\libperl511$(a)
PERLSTATICLIB = ..\libperl511s$(a)
$(mktmp $(LKPRE) $(PERLDLL_OBJ) \
$(shell @type Extensions_static) \
$(LIBFILES) $(LKPOST))
- dlltool --output-lib $(PERLIMPLIB) \
+ $(IMPLIB) --output-lib $(PERLIMPLIB) \
--dllname $(PERLDLL:b).dll \
--def perldll.def \
--base-file perl.base \
.ENDIF
$(XCOPY) $(PERLSTATICLIB) $(COREDIR)
-$(PERLEXE_RES): perlexe.rc $(PERLEXE_ICO)
+$(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
$(MINIMOD) : $(MINIPERL) ..\minimod.pl
cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
copy ..\README.vmesa ..\pod\perlvmesa.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perl5111delta.pod ..\pod\perldelta.pod
+ copy ..\pod\perl5113delta.pod ..\pod\perldelta.pod
cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
$(PERLEXE) $(PL2BAT) $(UTILS)
$(PERLEXE) $(ICWD) ..\autodoc.pl ..
perlmpeix.pod perlnetware.pod perlopenbsd.pod perlos2.pod \
perlos390.pod perlos400.pod perlplan9.pod perlqnx.pod \
perlriscos.pod perlsolaris.pod perlsymbian.pod perltoc.pod \
- perltru64.pod perltw.pod perluts.pod perlvmesa.pod perlvos.pod \
- perlwin32.pod \
+ perltru64.pod perltw.pod perluniprops.pod perluts.pod \
+ perlvmesa.pod perlvos.pod perlwin32.pod \
pod2html pod2latex pod2man pod2text pod2usage \
podselect
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
-del /f ..\lib\Config_git.pl
-del /f bin\*.bat
-del /f perllibst.h
- -del /f perl.base
+ -del /f $(PERLEXE_RES) perl.base
-cd .. && del /s *$(a) *.map *.pdb *.ilk *.tds *.bs *$(o) .exists pm_to_blib ppport.h
-cd $(EXTDIR) && del /s *.def Makefile Makefile.old
-cd $(DISTDIR) && del /s *.def Makefile Makefile.old
inst_lib : $(CONFIGPM)
$(RCOPY) ..\lib $(INST_LIB)\*.*
-$(UNIDATAFILES) .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
+$(UNIDATAFILES) ..\pod\perluniprops.pod .UPDATEALL : $(MINIPERL) $(CONFIGPM) ..\lib\unicore\mktables Extensions_nonxs
cd ..\lib\unicore && \
- ..\$(MINIPERL) -I.. -I..\..\cpan\Cwd\lib mktables
+ ..\$(MINIPERL) -I.. -I..\..\cpan\Cwd\lib -I..\..\cpan\Cwd mktables -P ..\..\pod -maketest -makelist -p
minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) $(UNIDATAFILES) utils
$(XCOPY) $(MINIPERL) ..\t\$(NULL)
.ELSE
$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
.ENDIF
+.IF "$(CCTYPE)" == "GCC"
+.IF "$(GCC_4XX)" == "define"
+ $(XCOPY) $(GCCHELPERDLL) ..\t\$(NULL)
+.ENDIF
+.ENDIF
test : $(RIGHTMAKE) test-prep
cd ..\t && $(PERLEXE) -I..\lib harness $(TEST_SWITCHES) $(TEST_FILES)