Skip to content

Commit

Permalink
Adjust win32-g++ profile for cross compilation with mingw-w64
Browse files Browse the repository at this point in the history
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:
* Martchus/PKGBUILDs#59
* Martchus/PKGBUILDs#60
  • Loading branch information
Martchus committed May 26, 2018
1 parent 6eef81e commit bd010d1
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 21 deletions.
56 changes: 39 additions & 17 deletions mkspecs/common/g++-win32.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 =

Expand All @@ -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)
4 changes: 2 additions & 2 deletions mkspecs/win32-clang-g++/qmake.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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++
Expand Down
4 changes: 2 additions & 2 deletions mkspecs/win32-g++/qmake.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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++
Expand Down

0 comments on commit bd010d1

Please sign in to comment.