diff options
author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2013-02-15 18:15:18 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-18 15:52:36 +0100 |
commit | 9dcbfc1c44099d2d510163cf16bbb72e6ea42cae (patch) | |
tree | 489314361bf4e44f57e06af780f32090f62beffa /mkspecs/features | |
parent | 18a65b6cdf0895e3ce8a101f8a315751297b3541 (diff) |
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 <joerg.bornemann@digia.com>
Diffstat (limited to 'mkspecs/features')
-rw-r--r-- | mkspecs/features/debug.prf | 7 | ||||
-rw-r--r-- | mkspecs/features/debug_and_release.prf | 1 | ||||
-rw-r--r-- | mkspecs/features/default_post.prf | 29 | ||||
-rw-r--r-- | mkspecs/features/dll.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/release.prf | 7 | ||||
-rw-r--r-- | mkspecs/features/resolve_config.prf | 51 | ||||
-rw-r--r-- | mkspecs/features/resolve_target.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/shared.prf | 7 | ||||
-rw-r--r-- | mkspecs/features/static.prf | 14 | ||||
-rw-r--r-- | mkspecs/features/static_and_shared.prf | 3 | ||||
-rw-r--r-- | mkspecs/features/staticlib.prf | 1 |
11 files changed, 75 insertions, 49 deletions
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 |