From 9dcbfc1c44099d2d510163cf16bbb72e6ea42cae Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 15 Feb 2013 18:15:18 +0100 Subject: refactor build config resolution the current approach of having "free-flying" prf files for such a core issue is rather insane. this was noticed early on, as evidenced by the forcible loading of debug/release/debug_and_release in default_post. however, things remained a mess, in particular static vs. shared. consequently, the commit merges all related feature files. the actual config resolution is put in a separate feature file, so it can be loaded by resolve_target if that happens to be loaded early on. Change-Id: Ie30e7c63cabe9409a3263ca1650e323a870926f2 Reviewed-by: Joerg Bornemann --- mkspecs/features/debug.prf | 7 ----- mkspecs/features/debug_and_release.prf | 1 - mkspecs/features/default_post.prf | 29 ++++++++++++++----- mkspecs/features/dll.prf | 2 -- mkspecs/features/release.prf | 7 ----- mkspecs/features/resolve_config.prf | 51 ++++++++++++++++++++++++++++++++++ mkspecs/features/resolve_target.prf | 2 ++ mkspecs/features/shared.prf | 7 ----- mkspecs/features/static.prf | 14 ---------- mkspecs/features/static_and_shared.prf | 3 -- mkspecs/features/staticlib.prf | 1 - 11 files changed, 75 insertions(+), 49 deletions(-) delete mode 100644 mkspecs/features/debug.prf delete mode 100644 mkspecs/features/debug_and_release.prf delete mode 100644 mkspecs/features/dll.prf delete mode 100644 mkspecs/features/release.prf create mode 100644 mkspecs/features/resolve_config.prf delete mode 100644 mkspecs/features/shared.prf delete mode 100644 mkspecs/features/static.prf delete mode 100644 mkspecs/features/static_and_shared.prf delete mode 100644 mkspecs/features/staticlib.prf (limited to 'mkspecs') diff --git a/mkspecs/features/debug.prf b/mkspecs/features/debug.prf deleted file mode 100644 index b11bfbf6b6..0000000000 --- a/mkspecs/features/debug.prf +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG -= release -QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG -QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG -QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_DEBUG -QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG -QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG -!debug_and_release:fix_output_dirs:fixExclusiveOutputDirs(debug, release) diff --git a/mkspecs/features/debug_and_release.prf b/mkspecs/features/debug_and_release.prf deleted file mode 100644 index 8b8932184f..0000000000 --- a/mkspecs/features/debug_and_release.prf +++ /dev/null @@ -1 +0,0 @@ -!macx-xcode:addExclusiveBuilds(debug, Debug, release, Release) diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index 3afab5240e..fe825f5807 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -4,10 +4,7 @@ contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target !have_target:!force_qt: CONFIG -= qt -!shared:!dll:!static:!staticlib { - contains(QT_CONFIG, static): CONFIG += static - else: CONFIG += shared -} +load(resolve_config) QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) !isEmpty(QT_BREAKPAD_ROOT_PATH): \ # quick test first whether requested ... @@ -24,9 +21,27 @@ force_debug_info { QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO } -CONFIG(debug, debug|release):load(debug) -else:load(release) -debug_and_release:load(debug_and_release) +debug { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_DEBUG + QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG + QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_RELEASE + QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE + QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE +} + +dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL +static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB +staticlib:unix { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB +} + incredibuild_xge { CONFIG -= incredibuild_xge CONFIG = incredibuild_xge $$CONFIG diff --git a/mkspecs/features/dll.prf b/mkspecs/features/dll.prf deleted file mode 100644 index 943ab93def..0000000000 --- a/mkspecs/features/dll.prf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG += shared - diff --git a/mkspecs/features/release.prf b/mkspecs/features/release.prf deleted file mode 100644 index 2d63c240d0..0000000000 --- a/mkspecs/features/release.prf +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG -= debug -QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE -QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE -QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_RELEASE -QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE -QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE -!debug_and_release:fix_output_dirs:fixExclusiveOutputDirs(release, debug) \ No newline at end of file diff --git a/mkspecs/features/resolve_config.prf b/mkspecs/features/resolve_config.prf new file mode 100644 index 0000000000..e85435cf73 --- /dev/null +++ b/mkspecs/features/resolve_config.prf @@ -0,0 +1,51 @@ +# +# W A R N I N G +# ------------- +# +# This file is not part of the Qt API. It exists purely as an +# implementation detail. It may change from version to version +# without notice, or even be removed. +# +# We mean it. +# + +staticlib: \ + CONFIG += static +else: dll: \ + CONFIG += shared + +!shared:!static { + contains(QT_CONFIG, static): CONFIG += static + else: CONFIG += shared +} + +CONFIG(static, static|shared) { + CONFIG -= shared dll + contains(TEMPLATE, ".*lib"): CONFIG += staticlib +} else { + CONFIG -= static staticlib + contains(TEMPLATE, ".*lib"): CONFIG += dll +} + +static_and_shared { + !macx-xcode: addExclusiveBuilds(static, Static, shared, Shared) +} else: fix_output_dirs { + static: \ + fixExclusiveOutputDirs(static, shared) + else: \ + fixExclusiveOutputDirs(shared, static) +} + +CONFIG(debug, debug|release): \ + CONFIG -= release +else: \ + CONFIG -= debug + +debug_and_release { + !macx-xcode: addExclusiveBuilds(debug, Debug, release, Release) +} else: fix_output_dirs { + debug: \ + fixExclusiveOutputDirs(debug, release) + else: \ + fixExclusiveOutputDirs(release, debug) +} diff --git a/mkspecs/features/resolve_target.prf b/mkspecs/features/resolve_target.prf index c60faf22c0..8cd12b2a00 100644 --- a/mkspecs/features/resolve_target.prf +++ b/mkspecs/features/resolve_target.prf @@ -9,6 +9,8 @@ # We mean it. # +load(resolve_config) + QMAKE_RESOLVED_TARGET = $$absolute_path($$DESTDIR, $$OUT_PWD)/ win32 { diff --git a/mkspecs/features/shared.prf b/mkspecs/features/shared.prf deleted file mode 100644 index 86efd8e6d8..0000000000 --- a/mkspecs/features/shared.prf +++ /dev/null @@ -1,7 +0,0 @@ -CONFIG -= static -contains(TEMPLATE, ".*lib"): { - CONFIG += dll - CONFIG -= staticlib - win32:QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL -} -!static_and_shared:fix_output_dirs:fixExclusiveOutputDirs(shared, static) diff --git a/mkspecs/features/static.prf b/mkspecs/features/static.prf deleted file mode 100644 index 288852d5df..0000000000 --- a/mkspecs/features/static.prf +++ /dev/null @@ -1,14 +0,0 @@ -CONFIG -= shared dll -contains(TEMPLATE, ".*lib"):{ - CONFIG += staticlib - unix { - QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB - QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB - } -} - -mac { - QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB -} - -!static_and_shared:fix_output_dirs:fixExclusiveOutputDirs(static, shared) diff --git a/mkspecs/features/static_and_shared.prf b/mkspecs/features/static_and_shared.prf deleted file mode 100644 index 47c68e50a0..0000000000 --- a/mkspecs/features/static_and_shared.prf +++ /dev/null @@ -1,3 +0,0 @@ -have_target:!macx-xcode { - addExclusiveBuilds(static, Static, shared, Shared) -} diff --git a/mkspecs/features/staticlib.prf b/mkspecs/features/staticlib.prf deleted file mode 100644 index 4884964a6f..0000000000 --- a/mkspecs/features/staticlib.prf +++ /dev/null @@ -1 +0,0 @@ -CONFIG += static -- cgit v1.2.3