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>
This commit is contained in:
parent
18a65b6cdf
commit
9dcbfc1c44
@ -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)
|
@ -1 +0,0 @@
|
||||
!macx-xcode:addExclusiveBuilds(debug, Debug, release, Release)
|
@ -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
|
||||
|
@ -1,2 +0,0 @@
|
||||
CONFIG += shared
|
||||
|
@ -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)
|
51
mkspecs/features/resolve_config.prf
Normal file
51
mkspecs/features/resolve_config.prf
Normal file
@ -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)
|
||||
}
|
@ -9,6 +9,8 @@
|
||||
# We mean it.
|
||||
#
|
||||
|
||||
load(resolve_config)
|
||||
|
||||
QMAKE_RESOLVED_TARGET = $$absolute_path($$DESTDIR, $$OUT_PWD)/
|
||||
|
||||
win32 {
|
||||
|
@ -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)
|
@ -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)
|
@ -1,3 +0,0 @@
|
||||
have_target:!macx-xcode {
|
||||
addExclusiveBuilds(static, Static, shared, Shared)
|
||||
}
|
@ -1 +0,0 @@
|
||||
CONFIG += static
|
Loading…
Reference in New Issue
Block a user