aboutsummarylogtreecommitdiffstats
path: root/0001-Adjust-win32-g-profile-for-cross-compilation-with-mi.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-Adjust-win32-g-profile-for-cross-compilation-with-mi.patch')
-rw-r--r--0001-Adjust-win32-g-profile-for-cross-compilation-with-mi.patch174
1 files changed, 174 insertions, 0 deletions
diff --git a/0001-Adjust-win32-g-profile-for-cross-compilation-with-mi.patch b/0001-Adjust-win32-g-profile-for-cross-compilation-with-mi.patch
new file mode 100644
index 000000000000..013d327fd298
--- /dev/null
+++ b/0001-Adjust-win32-g-profile-for-cross-compilation-with-mi.patch
@@ -0,0 +1,174 @@
+From bd010d1fb00f61dd6cca52c93a4285c5d967029b Mon Sep 17 00:00:00 2001
+From: Martchus <martchus@gmx.net>
+Date: Fri, 3 Feb 2017 18:30:51 +0100
+Subject: [PATCH 01/33] Adjust win32-g++ profile for cross compilation with
+ mingw-w64
+
+Adding a new, separate mkspec instead of patching the existing one
+might be the cleaner solution. However tools like windeployqt and
+qbs do checks based on the hardcoded mkspec name to detect MinGW.
+So for this to work, the mkspec must be called win32-g++.
+
+Also see the following issues:
+* https://github.com/Martchus/PKGBUILDs/issues/59
+* https://github.com/Martchus/PKGBUILDs/issues/60
+---
+ mkspecs/common/g++-win32.conf | 56 +++++++++++++++++++++---------
+ mkspecs/win32-clang-g++/qmake.conf | 4 +--
+ mkspecs/win32-g++/qmake.conf | 4 +--
+ 3 files changed, 43 insertions(+), 21 deletions(-)
+
+diff --git a/mkspecs/common/g++-win32.conf b/mkspecs/common/g++-win32.conf
+index 610503379d..f099380cca 100644
+--- a/mkspecs/common/g++-win32.conf
++++ b/mkspecs/common/g++-win32.conf
+@@ -8,22 +8,31 @@
+ # Compiler-specific settings go into win32-g++/qmake.conf and
+ # win32-clang-g++/qmake.conf
+ #
++# The device options CROSS_COMPILE_CUSTOM_CONFIG and CROSS_COMPILE_CFLAGS can be used
++# to specify custom config/flags for cross compilation.
++#
+
+ load(device_config)
+ include(gcc-base.conf)
+ include(g++-base.conf)
+
++include(angle.conf)
++include(windows-vulkan.conf)
++
+ # modifications to gcc-base.conf and g++-base.conf
+
+ MAKEFILE_GENERATOR = MINGW
+ QMAKE_PLATFORM = win32 mingw
+-CONFIG += debug_and_release debug_and_release_target precompile_header
+-DEFINES += UNICODE _UNICODE WIN32
+-QMAKE_COMPILER_DEFINES += __GNUC__ _WIN32
++CONFIG += debug_and_release debug_and_release_target precompile_header $${CROSS_COMPILE_CUSTOM_CONFIG}
++DEFINES += UNICODE _UNICODE
++QMAKE_COMPILER_DEFINES += __GNUC__ _WIN32 WIN32
+ # can't add 'DEFINES += WIN64' and 'QMAKE_COMPILER_DEFINES += _WIN64' defines for
+ # x86_64 platform similar to 'msvc-desktop.conf' toolchain, because, unlike for MSVC,
+ # 'QMAKE_TARGET.arch' is inherently unavailable.
+
++# prevent definition of _xgetbv() in psdk_inc/intrin-impl.h (already defined in xsaveintrin.h)
++DEFINES += __INTRINSIC_DEFINED__xgetbv
++
+ QMAKE_LEX = flex
+ QMAKE_LEXFLAGS =
+ QMAKE_YACC = bison -y
+@@ -34,6 +43,7 @@ QMAKE_CFLAGS_SSE2 += -mstackrealign
+ QMAKE_CXXFLAGS_RTTI_ON = -frtti
+ QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
+ QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
++QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
+
+ QMAKE_INCDIR =
+
+@@ -42,41 +52,53 @@ QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+ QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
+ QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
++QMAKE_LFLAGS = -g
+ QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
+-QMAKE_LFLAGS_RELEASE = -Wl,-s
++QMAKE_LFLAGS_RELEASE =
++QMAKE_LFLAGS_DEBUG =
+ QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
+ QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
+ QMAKE_LFLAGS_DLL = -shared
+ QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections
+-equals(QMAKE_HOST.os, Windows) {
+- QMAKE_LINK_OBJECT_MAX = 10
+- QMAKE_LINK_OBJECT_SCRIPT = object_script
+-}
++QMAKE_LINK_OBJECT_MAX = 10
++QMAKE_LINK_OBJECT_SCRIPT = object_script
+ QMAKE_EXT_OBJ = .o
+ QMAKE_EXT_RES = _res.o
+ QMAKE_PREFIX_SHLIB =
+ QMAKE_EXTENSION_SHLIB = dll
+ QMAKE_PREFIX_STATICLIB = lib
+ QMAKE_EXTENSION_STATICLIB = a
+-QMAKE_LIB_EXTENSIONS = a dll.a
++QMAKE_EXTENSION_IMPORTLIB = dll.a
++
++PKG_CONFIG = $${CROSS_COMPILE}pkg-config
++QMAKE_PKG_CONFIG = $${CROSS_COMPILE}pkg-config
+
+ QMAKE_LIBS =
+-QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32
+-QMAKE_LIBS_NETWORK = -lws2_32
++QMAKE_LIBS_CORE = -lz -lpcre2-16 -liconv -lversion -lnetapi32 -luserenv -lole32 -luuid -lwinmm -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32
++QMAKE_LIBS_GUI = -lopengl32 -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32 -ljpeg -lpng \
++ $$system($${QMAKE_PKG_CONFIG} --libs harfbuzz) \
++ $$system($${QMAKE_PKG_CONFIG} --libs freetype2)
++QMAKE_LIBS_GUI_STATIC = -lopengl32 -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32 -ljpeg -lpng \
++ $$system($${QMAKE_PKG_CONFIG} --static --libs harfbuzz) \
++ $$system($${QMAKE_PKG_CONFIG} --static --libs freetype2)
++QMAKE_LIBS_NETWORK = -lws2_32 -lcrypt32 -ldnsapi -liphlpapi
++QMAKE_LIBS_NETWORK_STATIC = $$system($${QMAKE_PKG_CONFIG} --static --libs openssl) -lws2_32 -lcrypt32 -ldnsapi -liphlpapi
++QMAKE_LIBS_DBUS = $$system($${QMAKE_PKG_CONFIG} --libs dbus-1)
++QMAKE_LIBS_DBUS_STATIC = $$system($${QMAKE_PKG_CONFIG} --static --libs dbus-1)
++QMAKE_LIBS_WIDGETS_STATIC = -ldwmapi -luxtheme
+ QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32
+-QMAKE_LIBS_OPENGL_ES2 = -lgdi32 -luser32
+-QMAKE_LIBS_OPENGL_ES2_DEBUG = -lgdi32 -luser32
++QMAKE_LIBS_OPENGL_ES2 = -l$${LIBEGL_NAME} -l$${LIBGLESV2_NAME} -ld3d9 -ldxguid -lgdi32 -luser32
++QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBEGL_NAME} -l$${LIBGLESV2_NAME} -ld3d9 -ldxguid -lgdi32 -luser32
+ QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
+ QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
+
+-QMAKE_IDL = midl
++QMAKE_IDL = $${CROSS_COMPILE}widl
+ QMAKE_LIB = $${CROSS_COMPILE}ar -rc
+ QMAKE_RC = $${CROSS_COMPILE}windres
++QMAKE_DLLTOOL = $${CROSS_COMPILE}dlltool
++QMAKE_LRELEASE = $${CROSS_COMPILE}lrelease-qt5
+
+ QMAKE_STRIP = $${CROSS_COMPILE}strip
+ QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+ QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy
+ QMAKE_NM = $${CROSS_COMPILE}nm -P
+-
+-include(angle.conf)
+-include(windows-vulkan.conf)
+diff --git a/mkspecs/win32-clang-g++/qmake.conf b/mkspecs/win32-clang-g++/qmake.conf
+index 4630ec4602..4981a28736 100644
+--- a/mkspecs/win32-clang-g++/qmake.conf
++++ b/mkspecs/win32-clang-g++/qmake.conf
+@@ -14,11 +14,11 @@ include(../common/g++-win32.conf)
+ QMAKE_COMPILER += clang llvm # clang pretends to be gcc
+
+ QMAKE_CC = $${CROSS_COMPILE}clang
+-QMAKE_CFLAGS +=
++QMAKE_CFLAGS += -g -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fno-keep-inline-dllexport $${CROSS_COMPILE_CFLAGS}
+ QMAKE_CFLAGS_WARN_ON += -Wextra -Wno-ignored-attributes
+
+ QMAKE_CXX = $${CROSS_COMPILE}clang++
+-QMAKE_CXXFLAGS +=
++QMAKE_CXXFLAGS += $${QMAKE_CFLAGS}
+ QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+
+ QMAKE_LINK = $${CROSS_COMPILE}clang++
+diff --git a/mkspecs/win32-g++/qmake.conf b/mkspecs/win32-g++/qmake.conf
+index ed131c6823..b77d86cd6b 100644
+--- a/mkspecs/win32-g++/qmake.conf
++++ b/mkspecs/win32-g++/qmake.conf
+@@ -12,11 +12,11 @@ include(../common/g++-win32.conf)
+ # modifications to g++-win32.conf
+
+ QMAKE_CC = $${CROSS_COMPILE}gcc
+-QMAKE_CFLAGS += -fno-keep-inline-dllexport
++QMAKE_CFLAGS += -g -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fno-keep-inline-dllexport $${CROSS_COMPILE_CFLAGS}
+ QMAKE_CFLAGS_WARN_ON += -Wextra
+
+ QMAKE_CXX = $${CROSS_COMPILE}g++
+-QMAKE_CXXFLAGS += -fno-keep-inline-dllexport
++QMAKE_CXXFLAGS += $${QMAKE_CFLAGS}
+ QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+
+ QMAKE_LINK = $${CROSS_COMPILE}g++
+--
+2.17.0
+