summaryrefslogtreecommitdiff
path: root/win32/makefile.mk
diff options
context:
space:
mode:
Diffstat (limited to 'win32/makefile.mk')
-rw-r--r--win32/makefile.mk59
1 files changed, 52 insertions, 7 deletions
diff --git a/win32/makefile.mk b/win32/makefile.mk
index d46db1b2c3..a3924729d1 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -112,7 +112,7 @@ USE_LARGE_FILES *= define
#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
#
@@ -220,6 +220,29 @@ CCINCDIR *= $(CCHOME)\include
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)
@@ -475,11 +498,15 @@ LINK_FLAGS += -L"$(CCLIBDIR)\Release"
.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
@@ -491,6 +518,9 @@ a = .a
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++
@@ -783,8 +813,18 @@ CFGH_TMPL = config_H.bc
.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)
@@ -1220,7 +1260,7 @@ $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
$(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 \
@@ -1582,6 +1622,11 @@ test-prep : all utils
.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)