qt5-static: Added Thiago's lto patch (1bd27f)
.. but don't use it for now (the configure script work isn't done). Instead LTO can be attempted via QMAKE_CFLAGS and QMAKE_LFLAGS by setting _ltcg="yes". This is also disabled for now as it doesn't work. adipose's lto investigations can be found at: https://github.com/Alexpux/MINGW-packages/issues/186
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
From 1bd27f24fb7f7d82f4b67cffe43e0af644709106 Mon Sep 17 00:00:00 2001
|
||||
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||
Date: Thu, 26 Jun 2014 14:56:06 -0700
|
||||
Subject: [PATCH] Add link-time optimization support for Clang, GCC and ICC
|
||||
|
||||
GCC currently requires fat object files for static libraries, since the
|
||||
linker would otherwise not load the .o file from the archive at all and
|
||||
the linking would fail with a lot of undefined references. Clang on
|
||||
Linux also needs this, but it has no equivalent flag, so enabling LTCG
|
||||
for Clang on static libraries will result in linker error.
|
||||
|
||||
This commit does not add support for enabling it in configure. It can be
|
||||
enabled on a per-project basis by doing CONFIG += ltcg or by passing
|
||||
-config ltcg to qmake's command-line.
|
||||
|
||||
Change-Id: I52cf99f1ed9f1701e23a3b457ba3502fd28126ce
|
||||
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
|
||||
---
|
||||
mkspecs/common/clang.conf | 6 ++++-
|
||||
mkspecs/common/gcc-base.conf | 3 +++
|
||||
mkspecs/features/ltcg.prf | 54 +++++++++++++++++++++++++++++++++++++++++
|
||||
mkspecs/features/win32/ltcg.prf | 5 ----
|
||||
mkspecs/linux-icc/qmake.conf | 3 +++
|
||||
mkspecs/macx-icc/qmake.conf | 3 +++
|
||||
7 files changed, 71 insertions(+), 6 deletions(-)
|
||||
create mode 100644 mkspecs/features/ltcg.prf
|
||||
delete mode 100644 mkspecs/features/win32/ltcg.prf
|
||||
|
||||
diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf
|
||||
index d58b44b..6235296 100644
|
||||
--- a/mkspecs/common/clang.conf
|
||||
+++ b/mkspecs/common/clang.conf
|
||||
@@ -16,8 +16,12 @@ QMAKE_PCH_OUTPUT_EXT = .pch
|
||||
QMAKE_CFLAGS_ISYSTEM = -isystem
|
||||
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
|
||||
QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT}
|
||||
+QMAKE_CFLAGS_LTCG = -flto
|
||||
+
|
||||
QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
|
||||
QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
+QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
||||
|
||||
-QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
||||
QMAKE_LFLAGS_CXX11 =
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
|
||||
index fcff502a..06d87d7 100644
|
||||
--- a/mkspecs/common/gcc-base.conf
|
||||
+++ b/mkspecs/common/gcc-base.conf
|
||||
@@ -48,6 +48,7 @@ QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
|
||||
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
||||
QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions
|
||||
QMAKE_CFLAGS_SPLIT_SECTIONS += -ffunction-sections
|
||||
+QMAKE_CFLAGS_LTCG = -flto
|
||||
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
|
||||
QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
|
||||
@@ -62,12 +63,14 @@ QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
|
||||
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
|
||||
QMAKE_CXXFLAGS_EXCEPTIONS_OFF += $$QMAKE_CFLAGS_EXCEPTIONS_OFF
|
||||
QMAKE_CXXFLAGS_SPLIT_SECTIONS += $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LFLAGS +=
|
||||
QMAKE_LFLAGS_DEBUG +=
|
||||
QMAKE_LFLAGS_APP +=
|
||||
QMAKE_LFLAGS_RELEASE +=
|
||||
QMAKE_LFLAGS_EXCEPTIONS_OFF +=
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG -fuse-linker-plugin
|
||||
|
||||
QMAKE_CFLAGS_SSE2 += -msse2
|
||||
QMAKE_CFLAGS_SSE3 += -msse3
|
||||
diff --git a/mkspecs/features/ltcg.prf b/mkspecs/features/ltcg.prf
|
||||
new file mode 100644
|
||||
index 0000000..b418135
|
||||
--- /dev/null
|
||||
+++ b/mkspecs/features/ltcg.prf
|
||||
@@ -0,0 +1,54 @@
|
||||
+CONFIG(release, debug|release) {
|
||||
+ # We need fat object files when creating static libraries on some platforms
|
||||
+ # so the linker will know to load a particular object from the library
|
||||
+ # in the first place. With GCC, we have -ffat-lto-objects. MSVC
|
||||
+ # seems to work just fine. For other compilers, we disable LTCG
|
||||
+ # for static libraries.
|
||||
+ msvc {
|
||||
+ # Nothing to do
|
||||
+ } else: gcc {
|
||||
+ !clang:!intel_icc {
|
||||
+ static|fat-lto {
|
||||
+ QMAKE_CFLAGS_LTCG += -ffat-lto-objects
|
||||
+ QMAKE_CXXFLAGS_LTCG += -ffat-lto-objects
|
||||
+ } else {
|
||||
+ QMAKE_CFLAGS_LTCG += -fno-fat-lto-objects
|
||||
+ QMAKE_CXXFLAGS_LTCG += -fno-fat-lto-objects
|
||||
+ }
|
||||
+ linux {
|
||||
+ # Get the number of online processors, like _SC_NPROCESSORS_ONLN
|
||||
+ isEmpty(QMAKE_NPROCESSORS_ONLN) {
|
||||
+ QMAKE_NPROCESSORS_ONLN = $$system("grep -c '^processor' /proc/cpuinfo 2>/dev/null || echo 1")
|
||||
+ cache(QMAKE_NPROCESSORS_ONLN, set stash)
|
||||
+ }
|
||||
+
|
||||
+ # Override LTO number of jobs
|
||||
+ QMAKE_LFLAGS_LTCG -= -flto
|
||||
+ QMAKE_LFLAGS_LTCG += -flto=$$QMAKE_NPROCESSORS_ONLN
|
||||
+ }
|
||||
+ } else: static {
|
||||
+ QMAKE_CFLAGS_LTCG =
|
||||
+ QMAKE_CXXFLAGS_LTCG =
|
||||
+ QMAKE_LFLAGS_LTCG =
|
||||
+ }
|
||||
+
|
||||
+ # When doing link-time code generation, we need to pass the compiler
|
||||
+ # flags during linking stage too. This file is processed after
|
||||
+ # default_post.prf, so the QMAKE_CXXFLAGS already contains
|
||||
+ # QMAKE_CXXFLAGS_DEBUG or _RELEASE.
|
||||
+ use_c_linker {
|
||||
+ # use_c_linker.prf is in effect, use the C flags
|
||||
+ QMAKE_LFLAGS_LTCG += $$QMAKE_CFLAGS $$QMAKE_CFLAGS_LTCG
|
||||
+ QMAKE_LFLAGS_APP += $$QMAKE_CFLAGS_APP
|
||||
+ QMAKE_LFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
|
||||
+ } else {
|
||||
+ QMAKE_LFLAGS_LTCG = $$QMAKE_CXXFLAGS $$QMAKE_LFLAGS_LTCG
|
||||
+ QMAKE_LFLAGS_APP += $$QMAKE_CXXFLAGS_APP
|
||||
+ QMAKE_LFLAGS_SHLIB += $$QMAKE_CXXFLAGS_SHLIB
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG
|
||||
+ QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG
|
||||
+ QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG
|
||||
+}
|
||||
diff --git a/mkspecs/features/win32/ltcg.prf b/mkspecs/features/win32/ltcg.prf
|
||||
deleted file mode 100644
|
||||
index f6f1299..0000000
|
||||
--- a/mkspecs/features/win32/ltcg.prf
|
||||
+++ /dev/null
|
||||
@@ -1,5 +0,0 @@
|
||||
-CONFIG(release, debug|release) {
|
||||
- QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG
|
||||
- QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG
|
||||
- QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG
|
||||
-}
|
||||
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
|
||||
index c0caca0..8119c8a 100644
|
||||
--- a/mkspecs/linux-icc/qmake.conf
|
||||
+++ b/mkspecs/linux-icc/qmake.conf
|
||||
@@ -24,6 +24,7 @@ QMAKE_CFLAGS_YACC =
|
||||
QMAKE_CFLAGS_ISYSTEM = -isystem
|
||||
QMAKE_CFLAGS_THREAD = -D_REENTRANT
|
||||
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
|
||||
+QMAKE_CFLAGS_LTCG = -ipo
|
||||
|
||||
QMAKE_CFLAGS_SSE2 += -xSSE2
|
||||
QMAKE_CFLAGS_SSE3 += -xSSE3
|
||||
@@ -49,6 +50,7 @@ QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
||||
# Disabling exceptions disabled - workaround for QTBUG-36577
|
||||
#QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
|
||||
QMAKE_CXXFLAGS_CXX11 = -std=c++0x
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_INCDIR =
|
||||
QMAKE_LIBDIR =
|
||||
@@ -70,6 +72,7 @@ QMAKE_LFLAGS_NOUNDEF = -Wl,-z,defs
|
||||
QMAKE_LFLAGS_RPATH = -Wl,-rpath,
|
||||
QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link,
|
||||
QMAKE_LFLAGS_CXX11 =
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LIBS =
|
||||
QMAKE_LIBS_DYNLOAD = -ldl
|
||||
diff --git a/mkspecs/macx-icc/qmake.conf b/mkspecs/macx-icc/qmake.conf
|
||||
index 370a738..88b0497 100644
|
||||
--- a/mkspecs/macx-icc/qmake.conf
|
||||
+++ b/mkspecs/macx-icc/qmake.conf
|
||||
@@ -23,6 +23,7 @@ QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
|
||||
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
|
||||
QMAKE_CFLAGS_THREAD =
|
||||
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
|
||||
+QMAKE_CFLAGS_LTCG = -ipo
|
||||
|
||||
QMAKE_CFLAGS_SSE2 += -msse2
|
||||
QMAKE_CFLAGS_SSE3 += -msse3
|
||||
@@ -54,6 +55,7 @@ QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
|
||||
# Disabled, due to invalid C++11 code on Apple headers
|
||||
#QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
||||
QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LINK = icpc
|
||||
QMAKE_LINK_SHLIB = icpc
|
||||
@@ -66,6 +68,7 @@ QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
|
||||
QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
|
||||
QMAKE_LFLAGS_THREAD =
|
||||
QMAKE_LFLAGS_RPATH =
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE}
|
||||
QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}
|
||||
--
|
||||
2.1.0
|
||||
|
||||
@@ -15,16 +15,31 @@ _debuggable_release=no
|
||||
# Using -O0 results in a Qt5WebKitd.dll that is > 2.5GB
|
||||
# so force -Og. If you really need to, change this back
|
||||
# to -O0, leave it blank or comment it out.
|
||||
OPTIM_D="-Og"
|
||||
# Update: I think specifying anything here leads to huge
|
||||
# Qt5WebKitd.dll, never commit with this set to anything
|
||||
# -O0 is the default for GCC anyway, but qt5webkit seems
|
||||
# to use a different flag if nothing explictly specified
|
||||
# OPTIM_D="-Og"
|
||||
|
||||
if [ "${_variant}" = "-static" ]; then
|
||||
_namesuff="-static"
|
||||
_freetype2="-qt-freetype"
|
||||
_fastbuild="yes"
|
||||
# _ltcg="yes"
|
||||
_ltcg="no"
|
||||
else
|
||||
_namesuff=
|
||||
_freetype2="-system-freetype"
|
||||
_fastbuild="no"
|
||||
_ltcg="no"
|
||||
fi
|
||||
|
||||
# Thiago's patch doesn't contain the configure script changes
|
||||
# needed, you may be able to get somewhere with this in the
|
||||
# meantime (probably not though!)
|
||||
if [ "${_ltcg}" = "yes" ]; then
|
||||
LTCG_CFLAGS="-flto-partition=1to1 -flto -ffat-lto-objects"
|
||||
LTCG_LFLAGS="-flto-partition=1to1 -flto -ffat-lto-objects"
|
||||
fi
|
||||
|
||||
_realname=qt5${_namesuff}
|
||||
@@ -122,6 +137,7 @@ source=(#"${_pkgfqn}.tar.xz"
|
||||
http://download.qt-project.org/official_releases/qt/${pkgver%.*}/${_ver_base}/single/${_pkgfqn}.tar.xz
|
||||
#http://download.qt-project.org/snapshots/qt/${pkgver%.*}/${_ver_base}/2014-05-07_85/src/qt-everywhere-opensource-src-${_ver_base}.tar.xz
|
||||
#"qt3d"::"git://gitorious.org/qt/qt3d.git"
|
||||
0001-Add-link-time-optimization-support-for-Clang-GCC-and.patch
|
||||
0001-qt-5.3.0-oracle-driver-prompt.patch
|
||||
0002-qt-5.3.0-use-fbclient-instead-of-gds32.patch
|
||||
0003-qt-5.3.0-use-mingw-built-mysql-library.patch
|
||||
@@ -154,6 +170,7 @@ source=(#"${_pkgfqn}.tar.xz"
|
||||
0031-qt-5.3.1-Fix-masm-pri-build-race-condition.patch
|
||||
0032-qt-5.3.2-Disable-jitted-Regexp-for-Mingw-64-bit-94712.patch)
|
||||
md5sums=('c4e893678e3d8388ab04d059523d1d78'
|
||||
'a2fa66089b171ebb76a6e0bda2ef4ca8'
|
||||
'e3210b753ba04762de2ed4cb9c786bf1'
|
||||
'356f7fcf93869e92cd232ef70160ab58'
|
||||
'b0b5cc641cf8ebc2660fa819bede0089'
|
||||
@@ -218,6 +235,11 @@ prepare() {
|
||||
# MSYS2 gperf cannot handle \r\n.
|
||||
find . -name "*.gperf" -exec dos2unix "{}" \;
|
||||
|
||||
pushd qtbase > /dev/null
|
||||
rm -f mkspecs/features/ltcg.prf > /dev/null 2>&1 || true
|
||||
patch -p1 -i ${srcdir}/0001-Add-link-time-optimization-support-for-Clang-GCC-and.patch
|
||||
popd
|
||||
|
||||
patch -p1 -i ${srcdir}/0001-qt-5.3.0-oracle-driver-prompt.patch
|
||||
patch -p1 -i ${srcdir}/0002-qt-5.3.0-use-fbclient-instead-of-gds32.patch
|
||||
patch -p1 -i ${srcdir}/0003-qt-5.3.0-use-mingw-built-mysql-library.patch
|
||||
@@ -277,6 +299,12 @@ prepare() {
|
||||
patch -p1 -i ${srcdir}/0030-qt-5.3.1-workaround-ansidecl-h-PTR-define-conflict.patch
|
||||
popd > /dev/null
|
||||
|
||||
# See discussion at https://bugreports.qt-project.org/browse/QTBUG-41292
|
||||
# I think what is possibly happening instead is that the Debug and Release
|
||||
# builds are happening in parallel and this causes the error. While Ossi's
|
||||
# suggestion (below) doesn't fix the problem entirely, it makes the chances
|
||||
# of it happening near 0. Ossi we should have a different target file for
|
||||
# RegExpJitTables.h for each of release and debug.
|
||||
patch -p1 -i ${srcdir}/0031-qt-5.3.1-Fix-masm-pri-build-race-condition.patch
|
||||
patch -p1 -i ${srcdir}/0032-qt-5.3.2-Disable-jitted-Regexp-for-Mingw-64-bit-94712.patch
|
||||
|
||||
@@ -284,13 +312,13 @@ prepare() {
|
||||
# _ver_num=${_ver_base%%-*}
|
||||
# sed -i "s/^MODULE_VERSION = .*$/MODULE_VERSION = ${_ver_num}/g" qtenginio/.qmake.conf
|
||||
|
||||
local _optim=
|
||||
local _ARCH_TUNE=
|
||||
case ${MINGW_CHOST} in
|
||||
i686*)
|
||||
_optim="-march=i686 -mtune=core2"
|
||||
_ARCH_TUNE="-march=i686 -mtune=core2"
|
||||
;;
|
||||
x86_64*)
|
||||
_optim="-march=nocona -mtune=core2"
|
||||
_ARCH_TUNE="-march=nocona -mtune=core2"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -300,27 +328,30 @@ prepare() {
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61207
|
||||
# Unlike OPTIM_D, please keep this one down here since it is not user selectable due
|
||||
# to the GCC bug.
|
||||
# This is the default, prevent re-appending.
|
||||
# OPTIM_O="-O2"
|
||||
if [ "${_variant}" = "-static" -a "${CARCH}" = "i686" ]; then
|
||||
OPTIM_O="-Os"
|
||||
else
|
||||
OPTIM_O="-O2"
|
||||
fi
|
||||
|
||||
if [ "${_debuggable_release}" = "yes" ]; then
|
||||
QMAKE_LFLAGS_RELEASE=
|
||||
CFLAGS_MKS_RELEASE="${_optim} ${OPTIM_O} -g"
|
||||
OPTIM_O=${OPTIM_O}" -g"
|
||||
else
|
||||
QMAKE_LFLAGS_RELEASE="-Wl,-s"
|
||||
CFLAGS_MKS_RELEASE="${_optim} ${OPTIM_O}"
|
||||
fi
|
||||
CFLAGS_MKS_DEBUG="${_optim} ${OPTIM_D}"
|
||||
# If not using MSYS2 make then transform -I${MINGW_PREFIX}/blah or -L${MINGW_PREFIX}/blah from MSYS2 to native
|
||||
CFLAGS_MKS_RELEASE=$(path_conv_for_make "${CFLAGS_MKS_RELEASE}")
|
||||
CFLAGS_MKS_DEBUG=$(path_conv_for_make "${CFLAGS_MKS_DEBUG}")
|
||||
LDFLAGS_MKS=$(path_conv_for_make "${LDFLAGS_MKS}")
|
||||
sed -i "s|^QMAKE_CFLAGS_RELEASE.*= .*$|QMAKE_CFLAGS_RELEASE = ${CFLAGS_MKS_RELEASE}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
sed -i "s|^QMAKE_CFLAGS_DEBUG.*= .*$|QMAKE_CFLAGS_DEBUG = ${CFLAGS_MKS_DEBUG}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
sed -i "s|^QMAKE_LFLAGS_RELEASE.*= .*$|QMAKE_LFLAGS_RELEASE = ${QMAKE_LFLAGS_RELEASE}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
|
||||
# Append these ones ..
|
||||
sed -i "s|^QMAKE_CFLAGS .*= \(.*\)$|QMAKE_CFLAGS = \1 ${_ARCH_TUNE} ${LTCG_CFLAGS}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
if [ -n "$OPTIM_D" ]; then
|
||||
sed -i "s|^QMAKE_CFLAGS_DEBUG .*= \(.*\)$|QMAKE_CFLAGS_DEBUG = \1 ${OPTIM_D}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
fi
|
||||
if [ -n "$OPTIM_O" ]; then
|
||||
sed -i "s|^QMAKE_CFLAGS_RELEASE .*= \(.*\)$|QMAKE_CFLAGS_RELEASE = \1 ${OPTIM_O}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
fi
|
||||
sed -i "s|^QMAKE_LFLAGS =\(.*\)$|QMAKE_LFLAGS = \1 ${LTCG_LFLAGS}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
# But overwrite this one.
|
||||
sed -i "s|^QMAKE_LFLAGS_RELEASE .*= \(.*\)$|QMAKE_LFLAGS_RELEASE = ${QMAKE_LFLAGS_RELEASE}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
|
||||
# To keep the build folder name quite small (PATH_MAX limit)
|
||||
# the source folder (long) is renamed to $CARCH (i686 or x86_64)
|
||||
@@ -522,3 +553,21 @@ package() {
|
||||
# ./auto/qscriptjstestsuite/${CONFIG}/tst_qscriptjstestsuite.exe -silent >> qscriptjstestsuite.log
|
||||
# popd
|
||||
# done
|
||||
|
||||
# i686 build failure with yarr:
|
||||
# export PATH=/mingw32/bin:$PATH
|
||||
# export PKG_CONFIG_PATH=/mingw32/lib/pkgconfig
|
||||
# pushd /e/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/src/qml
|
||||
# make
|
||||
# make[4]: Entering directory '/e/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/src/qml'
|
||||
# g++ -Wl,-s -shared -Wl,--out-implib,E:/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/lib/libQt5Qml.dll.a -o ../../lib/Qt5Qml.dll object_script.Qt5Qml.Release -lshell32 -LE:/m2/repo/mingw-w64-qt5/src/i686/qtbase/lib -lQt5Network -lQt5Core .obj/release/Qt5Qml_resource_res.o
|
||||
# ./.obj/release/YarrInterpreter.o:YarrInterpreter.cpp:(.text+0x622): undefined reference to `JSC::Yarr::wordcharCreate()'
|
||||
# ./.obj/release/YarrInterpreter.o:YarrInterpreter.cpp:(.text+0x693): undefined reference to `JSC::Yarr::newlineCreate()'
|
||||
# E:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/bin/ld.exe: ./.obj/release/YarrInterpreter.o: bad reloc address 0x12 in section `.text$_ZN3WTF15BumpPointerPool6createEj[__ZN3WTF15BumpPointerPool6createEj]'
|
||||
# collect2.exe: error: ld returned 1 exit status
|
||||
# Makefile.Release:534: recipe for target '../../lib/Qt5Qml.dll' failed
|
||||
|
||||
# pushd /e/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/src/qml
|
||||
# export PATH=/mingw32/bin:$PATH
|
||||
# export PKG_CONFIG_PATH=/mingw32/lib/pkgconfig
|
||||
# E:/m2/repo/mingw-w64-qt5/src/i686/qtbase/bin/qmake.exe -o Makefile qml.pro
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
From 1bd27f24fb7f7d82f4b67cffe43e0af644709106 Mon Sep 17 00:00:00 2001
|
||||
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||
Date: Thu, 26 Jun 2014 14:56:06 -0700
|
||||
Subject: [PATCH] Add link-time optimization support for Clang, GCC and ICC
|
||||
|
||||
GCC currently requires fat object files for static libraries, since the
|
||||
linker would otherwise not load the .o file from the archive at all and
|
||||
the linking would fail with a lot of undefined references. Clang on
|
||||
Linux also needs this, but it has no equivalent flag, so enabling LTCG
|
||||
for Clang on static libraries will result in linker error.
|
||||
|
||||
This commit does not add support for enabling it in configure. It can be
|
||||
enabled on a per-project basis by doing CONFIG += ltcg or by passing
|
||||
-config ltcg to qmake's command-line.
|
||||
|
||||
Change-Id: I52cf99f1ed9f1701e23a3b457ba3502fd28126ce
|
||||
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
|
||||
---
|
||||
mkspecs/common/clang.conf | 6 ++++-
|
||||
mkspecs/common/gcc-base.conf | 3 +++
|
||||
mkspecs/features/ltcg.prf | 54 +++++++++++++++++++++++++++++++++++++++++
|
||||
mkspecs/features/win32/ltcg.prf | 5 ----
|
||||
mkspecs/linux-icc/qmake.conf | 3 +++
|
||||
mkspecs/macx-icc/qmake.conf | 3 +++
|
||||
7 files changed, 71 insertions(+), 6 deletions(-)
|
||||
create mode 100644 mkspecs/features/ltcg.prf
|
||||
delete mode 100644 mkspecs/features/win32/ltcg.prf
|
||||
|
||||
diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf
|
||||
index d58b44b..6235296 100644
|
||||
--- a/mkspecs/common/clang.conf
|
||||
+++ b/mkspecs/common/clang.conf
|
||||
@@ -16,8 +16,12 @@ QMAKE_PCH_OUTPUT_EXT = .pch
|
||||
QMAKE_CFLAGS_ISYSTEM = -isystem
|
||||
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
|
||||
QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT}
|
||||
+QMAKE_CFLAGS_LTCG = -flto
|
||||
+
|
||||
QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
|
||||
QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
+QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
||||
|
||||
-QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
||||
QMAKE_LFLAGS_CXX11 =
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
|
||||
index fcff502a..06d87d7 100644
|
||||
--- a/mkspecs/common/gcc-base.conf
|
||||
+++ b/mkspecs/common/gcc-base.conf
|
||||
@@ -48,6 +48,7 @@ QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
|
||||
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
||||
QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions
|
||||
QMAKE_CFLAGS_SPLIT_SECTIONS += -ffunction-sections
|
||||
+QMAKE_CFLAGS_LTCG = -flto
|
||||
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
|
||||
QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
|
||||
@@ -62,12 +63,14 @@ QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
|
||||
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
|
||||
QMAKE_CXXFLAGS_EXCEPTIONS_OFF += $$QMAKE_CFLAGS_EXCEPTIONS_OFF
|
||||
QMAKE_CXXFLAGS_SPLIT_SECTIONS += $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LFLAGS +=
|
||||
QMAKE_LFLAGS_DEBUG +=
|
||||
QMAKE_LFLAGS_APP +=
|
||||
QMAKE_LFLAGS_RELEASE +=
|
||||
QMAKE_LFLAGS_EXCEPTIONS_OFF +=
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG -fuse-linker-plugin
|
||||
|
||||
QMAKE_CFLAGS_SSE2 += -msse2
|
||||
QMAKE_CFLAGS_SSE3 += -msse3
|
||||
diff --git a/mkspecs/features/ltcg.prf b/mkspecs/features/ltcg.prf
|
||||
new file mode 100644
|
||||
index 0000000..b418135
|
||||
--- /dev/null
|
||||
+++ b/mkspecs/features/ltcg.prf
|
||||
@@ -0,0 +1,54 @@
|
||||
+CONFIG(release, debug|release) {
|
||||
+ # We need fat object files when creating static libraries on some platforms
|
||||
+ # so the linker will know to load a particular object from the library
|
||||
+ # in the first place. With GCC, we have -ffat-lto-objects. MSVC
|
||||
+ # seems to work just fine. For other compilers, we disable LTCG
|
||||
+ # for static libraries.
|
||||
+ msvc {
|
||||
+ # Nothing to do
|
||||
+ } else: gcc {
|
||||
+ !clang:!intel_icc {
|
||||
+ static|fat-lto {
|
||||
+ QMAKE_CFLAGS_LTCG += -ffat-lto-objects
|
||||
+ QMAKE_CXXFLAGS_LTCG += -ffat-lto-objects
|
||||
+ } else {
|
||||
+ QMAKE_CFLAGS_LTCG += -fno-fat-lto-objects
|
||||
+ QMAKE_CXXFLAGS_LTCG += -fno-fat-lto-objects
|
||||
+ }
|
||||
+ linux {
|
||||
+ # Get the number of online processors, like _SC_NPROCESSORS_ONLN
|
||||
+ isEmpty(QMAKE_NPROCESSORS_ONLN) {
|
||||
+ QMAKE_NPROCESSORS_ONLN = $$system("grep -c '^processor' /proc/cpuinfo 2>/dev/null || echo 1")
|
||||
+ cache(QMAKE_NPROCESSORS_ONLN, set stash)
|
||||
+ }
|
||||
+
|
||||
+ # Override LTO number of jobs
|
||||
+ QMAKE_LFLAGS_LTCG -= -flto
|
||||
+ QMAKE_LFLAGS_LTCG += -flto=$$QMAKE_NPROCESSORS_ONLN
|
||||
+ }
|
||||
+ } else: static {
|
||||
+ QMAKE_CFLAGS_LTCG =
|
||||
+ QMAKE_CXXFLAGS_LTCG =
|
||||
+ QMAKE_LFLAGS_LTCG =
|
||||
+ }
|
||||
+
|
||||
+ # When doing link-time code generation, we need to pass the compiler
|
||||
+ # flags during linking stage too. This file is processed after
|
||||
+ # default_post.prf, so the QMAKE_CXXFLAGS already contains
|
||||
+ # QMAKE_CXXFLAGS_DEBUG or _RELEASE.
|
||||
+ use_c_linker {
|
||||
+ # use_c_linker.prf is in effect, use the C flags
|
||||
+ QMAKE_LFLAGS_LTCG += $$QMAKE_CFLAGS $$QMAKE_CFLAGS_LTCG
|
||||
+ QMAKE_LFLAGS_APP += $$QMAKE_CFLAGS_APP
|
||||
+ QMAKE_LFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
|
||||
+ } else {
|
||||
+ QMAKE_LFLAGS_LTCG = $$QMAKE_CXXFLAGS $$QMAKE_LFLAGS_LTCG
|
||||
+ QMAKE_LFLAGS_APP += $$QMAKE_CXXFLAGS_APP
|
||||
+ QMAKE_LFLAGS_SHLIB += $$QMAKE_CXXFLAGS_SHLIB
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG
|
||||
+ QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG
|
||||
+ QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG
|
||||
+}
|
||||
diff --git a/mkspecs/features/win32/ltcg.prf b/mkspecs/features/win32/ltcg.prf
|
||||
deleted file mode 100644
|
||||
index f6f1299..0000000
|
||||
--- a/mkspecs/features/win32/ltcg.prf
|
||||
+++ /dev/null
|
||||
@@ -1,5 +0,0 @@
|
||||
-CONFIG(release, debug|release) {
|
||||
- QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG
|
||||
- QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG
|
||||
- QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG
|
||||
-}
|
||||
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
|
||||
index c0caca0..8119c8a 100644
|
||||
--- a/mkspecs/linux-icc/qmake.conf
|
||||
+++ b/mkspecs/linux-icc/qmake.conf
|
||||
@@ -24,6 +24,7 @@ QMAKE_CFLAGS_YACC =
|
||||
QMAKE_CFLAGS_ISYSTEM = -isystem
|
||||
QMAKE_CFLAGS_THREAD = -D_REENTRANT
|
||||
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
|
||||
+QMAKE_CFLAGS_LTCG = -ipo
|
||||
|
||||
QMAKE_CFLAGS_SSE2 += -xSSE2
|
||||
QMAKE_CFLAGS_SSE3 += -xSSE3
|
||||
@@ -49,6 +50,7 @@ QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
||||
# Disabling exceptions disabled - workaround for QTBUG-36577
|
||||
#QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
|
||||
QMAKE_CXXFLAGS_CXX11 = -std=c++0x
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_INCDIR =
|
||||
QMAKE_LIBDIR =
|
||||
@@ -70,6 +72,7 @@ QMAKE_LFLAGS_NOUNDEF = -Wl,-z,defs
|
||||
QMAKE_LFLAGS_RPATH = -Wl,-rpath,
|
||||
QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link,
|
||||
QMAKE_LFLAGS_CXX11 =
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LIBS =
|
||||
QMAKE_LIBS_DYNLOAD = -ldl
|
||||
diff --git a/mkspecs/macx-icc/qmake.conf b/mkspecs/macx-icc/qmake.conf
|
||||
index 370a738..88b0497 100644
|
||||
--- a/mkspecs/macx-icc/qmake.conf
|
||||
+++ b/mkspecs/macx-icc/qmake.conf
|
||||
@@ -23,6 +23,7 @@ QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
|
||||
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
|
||||
QMAKE_CFLAGS_THREAD =
|
||||
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
|
||||
+QMAKE_CFLAGS_LTCG = -ipo
|
||||
|
||||
QMAKE_CFLAGS_SSE2 += -msse2
|
||||
QMAKE_CFLAGS_SSE3 += -msse3
|
||||
@@ -54,6 +55,7 @@ QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
|
||||
# Disabled, due to invalid C++11 code on Apple headers
|
||||
#QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
||||
QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
||||
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LINK = icpc
|
||||
QMAKE_LINK_SHLIB = icpc
|
||||
@@ -66,6 +68,7 @@ QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
|
||||
QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
|
||||
QMAKE_LFLAGS_THREAD =
|
||||
QMAKE_LFLAGS_RPATH =
|
||||
+QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
||||
|
||||
QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE}
|
||||
QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}
|
||||
--
|
||||
2.1.0
|
||||
|
||||
@@ -15,16 +15,31 @@ _debuggable_release=no
|
||||
# Using -O0 results in a Qt5WebKitd.dll that is > 2.5GB
|
||||
# so force -Og. If you really need to, change this back
|
||||
# to -O0, leave it blank or comment it out.
|
||||
OPTIM_D="-Og"
|
||||
# Update: I think specifying anything here leads to huge
|
||||
# Qt5WebKitd.dll, never commit with this set to anything
|
||||
# -O0 is the default for GCC anyway, but qt5webkit seems
|
||||
# to use a different flag if nothing explictly specified
|
||||
# OPTIM_D="-Og"
|
||||
|
||||
if [ "${_variant}" = "-static" ]; then
|
||||
_namesuff="-static"
|
||||
_freetype2="-qt-freetype"
|
||||
_fastbuild="yes"
|
||||
# _ltcg="yes"
|
||||
_ltcg="no"
|
||||
else
|
||||
_namesuff=
|
||||
_freetype2="-system-freetype"
|
||||
_fastbuild="no"
|
||||
_ltcg="no"
|
||||
fi
|
||||
|
||||
# Thiago's patch doesn't contain the configure script changes
|
||||
# needed, you may be able to get somewhere with this in the
|
||||
# meantime (probably not though!)
|
||||
if [ "${_ltcg}" = "yes" ]; then
|
||||
LTCG_CFLAGS="-flto-partition=1to1 -flto -ffat-lto-objects"
|
||||
LTCG_LFLAGS="-flto-partition=1to1 -flto -ffat-lto-objects"
|
||||
fi
|
||||
|
||||
_realname=qt5${_namesuff}
|
||||
@@ -122,6 +137,7 @@ source=(#"${_pkgfqn}.tar.xz"
|
||||
http://download.qt-project.org/official_releases/qt/${pkgver%.*}/${_ver_base}/single/${_pkgfqn}.tar.xz
|
||||
#http://download.qt-project.org/snapshots/qt/${pkgver%.*}/${_ver_base}/2014-05-07_85/src/qt-everywhere-opensource-src-${_ver_base}.tar.xz
|
||||
#"qt3d"::"git://gitorious.org/qt/qt3d.git"
|
||||
0001-Add-link-time-optimization-support-for-Clang-GCC-and.patch
|
||||
0001-qt-5.3.0-oracle-driver-prompt.patch
|
||||
0002-qt-5.3.0-use-fbclient-instead-of-gds32.patch
|
||||
0003-qt-5.3.0-use-mingw-built-mysql-library.patch
|
||||
@@ -154,6 +170,7 @@ source=(#"${_pkgfqn}.tar.xz"
|
||||
0031-qt-5.3.1-Fix-masm-pri-build-race-condition.patch
|
||||
0032-qt-5.3.2-Disable-jitted-Regexp-for-Mingw-64-bit-94712.patch)
|
||||
md5sums=('c4e893678e3d8388ab04d059523d1d78'
|
||||
'a2fa66089b171ebb76a6e0bda2ef4ca8'
|
||||
'e3210b753ba04762de2ed4cb9c786bf1'
|
||||
'356f7fcf93869e92cd232ef70160ab58'
|
||||
'b0b5cc641cf8ebc2660fa819bede0089'
|
||||
@@ -218,6 +235,11 @@ prepare() {
|
||||
# MSYS2 gperf cannot handle \r\n.
|
||||
find . -name "*.gperf" -exec dos2unix "{}" \;
|
||||
|
||||
pushd qtbase > /dev/null
|
||||
rm -f mkspecs/features/ltcg.prf > /dev/null 2>&1 || true
|
||||
patch -p1 -i ${srcdir}/0001-Add-link-time-optimization-support-for-Clang-GCC-and.patch
|
||||
popd
|
||||
|
||||
patch -p1 -i ${srcdir}/0001-qt-5.3.0-oracle-driver-prompt.patch
|
||||
patch -p1 -i ${srcdir}/0002-qt-5.3.0-use-fbclient-instead-of-gds32.patch
|
||||
patch -p1 -i ${srcdir}/0003-qt-5.3.0-use-mingw-built-mysql-library.patch
|
||||
@@ -277,6 +299,12 @@ prepare() {
|
||||
patch -p1 -i ${srcdir}/0030-qt-5.3.1-workaround-ansidecl-h-PTR-define-conflict.patch
|
||||
popd > /dev/null
|
||||
|
||||
# See discussion at https://bugreports.qt-project.org/browse/QTBUG-41292
|
||||
# I think what is possibly happening instead is that the Debug and Release
|
||||
# builds are happening in parallel and this causes the error. While Ossi's
|
||||
# suggestion (below) doesn't fix the problem entirely, it makes the chances
|
||||
# of it happening near 0. Ossi we should have a different target file for
|
||||
# RegExpJitTables.h for each of release and debug.
|
||||
patch -p1 -i ${srcdir}/0031-qt-5.3.1-Fix-masm-pri-build-race-condition.patch
|
||||
patch -p1 -i ${srcdir}/0032-qt-5.3.2-Disable-jitted-Regexp-for-Mingw-64-bit-94712.patch
|
||||
|
||||
@@ -284,13 +312,13 @@ prepare() {
|
||||
# _ver_num=${_ver_base%%-*}
|
||||
# sed -i "s/^MODULE_VERSION = .*$/MODULE_VERSION = ${_ver_num}/g" qtenginio/.qmake.conf
|
||||
|
||||
local _optim=
|
||||
local _ARCH_TUNE=
|
||||
case ${MINGW_CHOST} in
|
||||
i686*)
|
||||
_optim="-march=i686 -mtune=core2"
|
||||
_ARCH_TUNE="-march=i686 -mtune=core2"
|
||||
;;
|
||||
x86_64*)
|
||||
_optim="-march=nocona -mtune=core2"
|
||||
_ARCH_TUNE="-march=nocona -mtune=core2"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -300,27 +328,30 @@ prepare() {
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61207
|
||||
# Unlike OPTIM_D, please keep this one down here since it is not user selectable due
|
||||
# to the GCC bug.
|
||||
# This is the default, prevent re-appending.
|
||||
# OPTIM_O="-O2"
|
||||
if [ "${_variant}" = "-static" -a "${CARCH}" = "i686" ]; then
|
||||
OPTIM_O="-Os"
|
||||
else
|
||||
OPTIM_O="-O2"
|
||||
fi
|
||||
|
||||
if [ "${_debuggable_release}" = "yes" ]; then
|
||||
QMAKE_LFLAGS_RELEASE=
|
||||
CFLAGS_MKS_RELEASE="${_optim} ${OPTIM_O} -g"
|
||||
OPTIM_O=${OPTIM_O}" -g"
|
||||
else
|
||||
QMAKE_LFLAGS_RELEASE="-Wl,-s"
|
||||
CFLAGS_MKS_RELEASE="${_optim} ${OPTIM_O}"
|
||||
fi
|
||||
CFLAGS_MKS_DEBUG="${_optim} ${OPTIM_D}"
|
||||
# If not using MSYS2 make then transform -I${MINGW_PREFIX}/blah or -L${MINGW_PREFIX}/blah from MSYS2 to native
|
||||
CFLAGS_MKS_RELEASE=$(path_conv_for_make "${CFLAGS_MKS_RELEASE}")
|
||||
CFLAGS_MKS_DEBUG=$(path_conv_for_make "${CFLAGS_MKS_DEBUG}")
|
||||
LDFLAGS_MKS=$(path_conv_for_make "${LDFLAGS_MKS}")
|
||||
sed -i "s|^QMAKE_CFLAGS_RELEASE.*= .*$|QMAKE_CFLAGS_RELEASE = ${CFLAGS_MKS_RELEASE}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
sed -i "s|^QMAKE_CFLAGS_DEBUG.*= .*$|QMAKE_CFLAGS_DEBUG = ${CFLAGS_MKS_DEBUG}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
sed -i "s|^QMAKE_LFLAGS_RELEASE.*= .*$|QMAKE_LFLAGS_RELEASE = ${QMAKE_LFLAGS_RELEASE}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
|
||||
# Append these ones ..
|
||||
sed -i "s|^QMAKE_CFLAGS .*= \(.*\)$|QMAKE_CFLAGS = \1 ${_ARCH_TUNE} ${LTCG_CFLAGS}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
if [ -n "$OPTIM_D" ]; then
|
||||
sed -i "s|^QMAKE_CFLAGS_DEBUG .*= \(.*\)$|QMAKE_CFLAGS_DEBUG = \1 ${OPTIM_D}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
fi
|
||||
if [ -n "$OPTIM_O" ]; then
|
||||
sed -i "s|^QMAKE_CFLAGS_RELEASE .*= \(.*\)$|QMAKE_CFLAGS_RELEASE = \1 ${OPTIM_O}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
fi
|
||||
sed -i "s|^QMAKE_LFLAGS =\(.*\)$|QMAKE_LFLAGS = \1 ${LTCG_LFLAGS}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
# But overwrite this one.
|
||||
sed -i "s|^QMAKE_LFLAGS_RELEASE .*= \(.*\)$|QMAKE_LFLAGS_RELEASE = ${QMAKE_LFLAGS_RELEASE}|g" qtbase/mkspecs/win32-g++/qmake.conf
|
||||
|
||||
# To keep the build folder name quite small (PATH_MAX limit)
|
||||
# the source folder (long) is renamed to $CARCH (i686 or x86_64)
|
||||
@@ -522,3 +553,21 @@ package() {
|
||||
# ./auto/qscriptjstestsuite/${CONFIG}/tst_qscriptjstestsuite.exe -silent >> qscriptjstestsuite.log
|
||||
# popd
|
||||
# done
|
||||
|
||||
# i686 build failure with yarr:
|
||||
# export PATH=/mingw32/bin:$PATH
|
||||
# export PKG_CONFIG_PATH=/mingw32/lib/pkgconfig
|
||||
# pushd /e/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/src/qml
|
||||
# make
|
||||
# make[4]: Entering directory '/e/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/src/qml'
|
||||
# g++ -Wl,-s -shared -Wl,--out-implib,E:/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/lib/libQt5Qml.dll.a -o ../../lib/Qt5Qml.dll object_script.Qt5Qml.Release -lshell32 -LE:/m2/repo/mingw-w64-qt5/src/i686/qtbase/lib -lQt5Network -lQt5Core .obj/release/Qt5Qml_resource_res.o
|
||||
# ./.obj/release/YarrInterpreter.o:YarrInterpreter.cpp:(.text+0x622): undefined reference to `JSC::Yarr::wordcharCreate()'
|
||||
# ./.obj/release/YarrInterpreter.o:YarrInterpreter.cpp:(.text+0x693): undefined reference to `JSC::Yarr::newlineCreate()'
|
||||
# E:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/bin/ld.exe: ./.obj/release/YarrInterpreter.o: bad reloc address 0x12 in section `.text$_ZN3WTF15BumpPointerPool6createEj[__ZN3WTF15BumpPointerPool6createEj]'
|
||||
# collect2.exe: error: ld returned 1 exit status
|
||||
# Makefile.Release:534: recipe for target '../../lib/Qt5Qml.dll' failed
|
||||
|
||||
# pushd /e/m2/repo/mingw-w64-qt5/src/i686/qtdeclarative/src/qml
|
||||
# export PATH=/mingw32/bin:$PATH
|
||||
# export PKG_CONFIG_PATH=/mingw32/lib/pkgconfig
|
||||
# E:/m2/repo/mingw-w64-qt5/src/i686/qtbase/bin/qmake.exe -o Makefile qml.pro
|
||||
|
||||
Reference in New Issue
Block a user