From 67a24c260b910c5ada1c8c266c6d1bed9d8c5a04 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 22 Apr 2015 13:09:36 +0200 Subject: rpath: use new DTAGS if available this allows LD_LIBRARY_PATH to take precedence over the hard-coded rpath, which is the only sane thing to do (which is also why i'm not adding an option to disable it). this behavior is consistent with non-linux systems. the windows version has no auto-detection, just like for gold linker usage. Task-number: QTBUG-3069 Change-Id: Ief9ba032291c898d75d76ecc740390954382a804 Reviewed-by: Simon Hausmann --- mkspecs/features/default_post.prf | 1 + 1 file changed, 1 insertion(+) (limited to 'mkspecs/features') diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index e967399258..8e68b95dd5 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -63,6 +63,7 @@ debug { } use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD +enable_new_dtags: QMAKE_LFLAGS += $$QMAKE_LFLAGS_NEW_DTAGS dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB -- cgit v1.2.3 From d4efd4b004bf58c6843d10aa205bdd608ca7a3bd Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 5 May 2015 18:16:00 +0200 Subject: change approach to requesting headers-only modules there is no need to make exceptions for install targets now, so instead of abusing qt_no_install_library, introduce a new header_module flag. Change-Id: I4ad7e301d1b60938b17e1dea732b1dbe3ff88a1a Reviewed-by: Joerg Bornemann --- mkspecs/features/qt_module.prf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mkspecs/features') diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 66a7598597..bfa17807aa 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -60,7 +60,7 @@ MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES load(qt_build_paths) -qt_no_install_library { +header_module { TEMPLATE = aux CONFIG += force_qt # Needed for the headers_clean tests. } else { @@ -104,7 +104,7 @@ mac:CONFIG(shared, static|shared):contains(QT_CONFIG, qt_framework) { QMAKE_TARGET_BUNDLE_PREFIX = org.qt-project #QMAKE_FRAMEWORK_VERSION = 4.0 CONFIG += sliced_bundle qt_framework - qt_no_install_library { + header_module { CONFIG += bundle QMAKE_BUNDLE_EXTENSION = .framework QMAKE_INFO_PLIST = $$QMAKESPEC/Info.plist.lib -- cgit v1.2.3 From 6e18f57a9c6810115ad7fba133bd53e7d460a265 Mon Sep 17 00:00:00 2001 From: Adam Strzelecki Date: Thu, 7 Aug 2014 13:04:48 +0200 Subject: Build Qt for OS X and iOS with relative rpath. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Defaulting to absolute_library_soname on configure -rpath is no longer necessary as now we support @rpath install name ids on OS X and iOS. This also sets QMAKE_SONAME_PREFIX to @rpath for Qt modules when built with rpath configuration. This makes Qt libraries relocatable on OS X. Qt SDK is not yet relocatable though, because plugin locations (including cocoa plugin) are still resolved using absolute path (see QTBUG-14150). Also, there are several absolute paths hardcoded in qmake mkspecs pri files. Task-number: QTBUG-31814 Change-Id: I36b9384cd69ac609608acbe2b3d5e0512317e0d6 Reviewed-by: Tor Arne Vestbø --- mkspecs/features/qt_build_config.prf | 6 ------ mkspecs/features/qt_module.prf | 3 +++ 2 files changed, 3 insertions(+), 6 deletions(-) (limited to 'mkspecs/features') diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf index 42046c238a..7197f84c9a 100644 --- a/mkspecs/features/qt_build_config.prf +++ b/mkspecs/features/qt_build_config.prf @@ -52,12 +52,6 @@ QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR unset(modpath) } -mac { - !isEmpty(QMAKE_RPATHDIR){ - CONFIG += absolute_library_soname - } -} - cross_compile: \ CONFIG += force_bootstrap diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index bfa17807aa..5412f3778a 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -132,6 +132,9 @@ mac { QMAKE_CFLAGS += -fconstant-cfstrings QMAKE_CXXFLAGS += -fconstant-cfstrings } + + contains(QT_CONFIG, rpath): \ + QMAKE_SONAME_PREFIX = @rpath } DEFINES += QT_BUILDING_QT -- cgit v1.2.3 From 661f604fbc8d16151f1d523b0c140d610329f67b Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Mon, 13 Apr 2015 15:55:13 +0200 Subject: Let MSVC treat warnings as errors Treat warnings printed by MSVC 2012, 2013 as errors in the modules that declare themselves warning_clean (for developer builds). Change-Id: I55fb3bde460e13cfdbd6f59634e3b5335b2dd715 Reviewed-by: Thiago Macieira Reviewed-by: Friedemann Kleint --- mkspecs/features/qt_common.prf | 3 +++ 1 file changed, 3 insertions(+) (limited to 'mkspecs/features') diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf index 6a66b76305..5861941848 100644 --- a/mkspecs/features/qt_common.prf +++ b/mkspecs/features/qt_common.prf @@ -79,6 +79,9 @@ warnings_are_errors:warning_clean { # Work-around for bug https://code.google.com/p/android/issues/detail?id=58135 android: QMAKE_CXXFLAGS_WARN_ON += -Wno-error=literal-suffix } + } else:msvc { + # enable for MSVC 2012, MSVC 2013 + equals(MSVC_VER, "11.0")|equals(MSVC_VER, "12.0"): QMAKE_CXXFLAGS_WARN_ON += -WX } unset(ver) } -- cgit v1.2.3 From d88df1ca6afd9a4a2f1faac4034f5c9539720815 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 20 May 2015 13:30:54 +0200 Subject: allow modules to declare that they have generated private includes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ifbd561aab9c6a6634930b525aa1d51b9ad792a09 Reviewed-by: Jørgen Lind --- mkspecs/features/qt_module_pris.prf | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'mkspecs/features') diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 4ce03f4327..1d727847e2 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -91,15 +91,22 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \ \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME } - split_incpath: \ + split_incpath { MODULE_SHADOW_INCLUDES = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, \ $$MODULE_BASE_OUTDIR/include) + generated_privates: \ + MODULE_SHADOW_PRIVATE_INCLUDES = $$replace(MODULE_PRIVATE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, \ + $$MODULE_BASE_OUTDIR/include) + } MODULE_INCLUDES += $$MODULE_AUX_INCLUDES MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES internal_module: \ MODULE_INCLUDES += $$MODULE_PRIVATE_INCLUDES - split_incpath: \ + split_incpath { MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE_ID}.includes += $$val_escape(MODULE_SHADOW_INCLUDES)" + generated_privates: \ + MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE}_private.includes += $$val_escape(MODULE_SHADOW_PRIVATE_INCLUDES)" + } MODULE_PRI_CONT = \ "QT.$${MODULE_ID}.VERSION = $${VERSION}" \ "QT.$${MODULE_ID}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \ -- cgit v1.2.3 From 97a6f28200f7c4c3c7285ac687aee542ae290c28 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Fri, 22 May 2015 09:13:21 +0200 Subject: Fixed compilation of auto tests using vc(x)proj files As the defines looked like -DQT_TESTCASE_BUILDDIR=""C:\..."" compilation from Visual Studio (vcxproj) failed due to the two quotation marks at the beginning/end of the actual path. So for the vc(x)proj we do not use shell_quote but add the quotes manually. Change-Id: I186258d82a56928cd0316bff1ec9f60147044165 Reviewed-by: Oswald Buddenhagen --- mkspecs/features/testlib_defines.prf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mkspecs/features') diff --git a/mkspecs/features/testlib_defines.prf b/mkspecs/features/testlib_defines.prf index 9176beb9dd..901e03a91d 100644 --- a/mkspecs/features/testlib_defines.prf +++ b/mkspecs/features/testlib_defines.prf @@ -1 +1,2 @@ -DEFINES += QT_TESTCASE_BUILDDIR=$$shell_quote(\"$$OUT_PWD\") +contains(TEMPLATE, vc.*): DEFINES += QT_TESTCASE_BUILDDIR=\"$$OUT_PWD\" +else: DEFINES += QT_TESTCASE_BUILDDIR=$$shell_quote(\"$$OUT_PWD\") -- cgit v1.2.3 From 1e2829f5bff1dd50603b9bed48b387a00f208774 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 21 May 2015 12:06:23 +0200 Subject: remove vestiges of .private_depends amends 16f4bc5b6. Change-Id: I5a9acb2fb57e92a152656be196e55c830031988e Reviewed-by: Joerg Bornemann --- mkspecs/features/qt_functions.prf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mkspecs/features') diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index 78be2e8473..a1c499610b 100644 --- a/mkspecs/features/qt_functions.prf +++ b/mkspecs/features/qt_functions.prf @@ -185,7 +185,7 @@ defineTest(qtAddRpathLink) { # paths OTOH need to be put there. pubqt = $$replace(1, -private$, _private) pubdep = $$resolve_depends(pubqt, "QT.") - privdep = $$resolve_depends(pubqt, "QT.", ".depends" ".private_depends" ".run_depends") + privdep = $$resolve_depends(pubqt, "QT.", ".depends" ".run_depends") privdep -= $$pubdep rpaths = for(dep, privdep): \ @@ -259,7 +259,7 @@ defineTest(qtAddToolEnv) { # target variable, dependency var name, [non-empty: prepare for system(), not make] defineTest(qtAddTargetEnv) { deps = $$replace($$2, -private$, _private) - deps = $$resolve_depends(deps, "QT.", ".depends" ".private_depends" ".run_depends") + deps = $$resolve_depends(deps, "QT.", ".depends" ".run_depends") !isEmpty(deps) { ptypes = for(dep, deps) { -- cgit v1.2.3 From 63660402d8d803b97c676395895c25e550c07f94 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 22 May 2015 15:02:23 +0200 Subject: Run license checker in qmake Check for a valid license not only in configure, but also in qmake. To limit the runtime overhead we cache the day of the last run in a .stash file. This allows us to run licheck only for the top-level qmake call, and only once per day. This requires an updated licheck executable that supports the new check mode. [ChangeLog][Tools][qmake] For commercial builds, qmake now checks for a valid Qt license. This requires setting up a Qt Account (or .qt-license file) on the development machine. Change-Id: I2c2a05a4602cc661560568b76ddf520cb8134769 Reviewed-by: Oswald Buddenhagen --- mkspecs/features/default_pre.prf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'mkspecs/features') diff --git a/mkspecs/features/default_pre.prf b/mkspecs/features/default_pre.prf index b06b9d6cfc..eb3281ea1d 100644 --- a/mkspecs/features/default_pre.prf +++ b/mkspecs/features/default_pre.prf @@ -7,3 +7,18 @@ CONFIG = \ lex yacc debug exceptions depend_includepath \ testcase_targets import_plugins import_qpa_plugin \ $$CONFIG + +!build_pass:defined(QT_EDITION, var):!equals(QT_EDITION, "OpenSource"):!equals(QT_EDITION, "Preview") { + # + # call license checker (but cache result for one day) + # + today = $$section(_DATE_, " ", 0, 2) + !isEqual(QMAKE_LICHECK_TIMESTAMP, $$today) { + !system("$$system_quote($$system_path($$[QT_HOST_BINS/src]/$$QT_LICHECK)) check" \ + "$$QT_RELEASE_DATE $$[QMAKE_SPEC] $$[QMAKE_XSPEC]"): \ + error("License check failed! Giving up ...") + + cache(QMAKE_LICHECK_TIMESTAMP, set stash, today) + } + unset(today) +} -- cgit v1.2.3 From 26f72237692afc66088d55baa76f4ac0228a5e4e Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 28 May 2015 18:19:51 +0200 Subject: fix installing unix dll symlinks on windows hosts ... by implementing a fake ln in qmake. symlinks are supported only since vista (we officially still support xp), and even there are permission-restricted (MS being (rightfully) afraid of symlink attacks). so we fake the links by copying the files instead. the previous hack was a bit naive, simply using cp/copy instead of ln. this didn't work with relative paths, as real symlinks are resolved against their parent directory, not the working directory of the "ln" command. the new fake does this correctly. Change-Id: Ia2f5d68a39d6ffcc8a4383f9d0fc63a9da0a05c3 Reviewed-by: Joerg Bornemann --- mkspecs/features/spec_post.prf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'mkspecs/features') diff --git a/mkspecs/features/spec_post.prf b/mkspecs/features/spec_post.prf index c9578773fe..4d398059b2 100644 --- a/mkspecs/features/spec_post.prf +++ b/mkspecs/features/spec_post.prf @@ -109,9 +109,8 @@ equals(MAKEFILE_GENERATOR, MSBUILD) \ } QMAKE_INSTALL_DIR = $$QMAKE_COPY_DIR equals(QMAKE_HOST.os, Windows) { - # Ugly (and broken for relative paths) hack to support cross-building for Unix. - QMAKE_SYMBOLIC_LINK = $$QMAKE_COPY - QMAKE_LN_SHLIB = $$QMAKE_SYMBOLIC_LINK + QMAKE_SYMBOLIC_LINK = $(QMAKE) -install ln -f -s + QMAKE_LN_SHLIB = $(QMAKE) -install ln -s } else { QMAKE_SYMBOLIC_LINK = ln -f -s QMAKE_LN_SHLIB = ln -s -- cgit v1.2.3