Fix prefix_build check for top-level builds
The checks whether we have a Qt prefix build were broken for top-level builds. Non-prefix top-level builds were incorrectly detected as prefix builds. For top-level non-prefix builds QT_HOST_DATA/QT_INSTALL_PREFIX becomes something like "~/my/build/dir/qtbase" but .qmake.cache (and .qmake.super) is/are created in "~/my/build/dir". This patch extends the prefix_build check by probing for the existence of .qmake.super, which only exists for top-level builds. Also, we add qt_prefix_build_check.prf as central place for determining whether we have a prefix build to make sure that qt_configure.prf and qt_build_config.prf use the same logic. Fixes: QTBUG-76185 Change-Id: I2b76fe26013496aaf2dac96ea711b06a69550a29 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This commit is contained in:
parent
d212c179db
commit
99636127d1
@ -37,8 +37,10 @@ intel_icl {
|
||||
|
||||
QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR
|
||||
|
||||
load(qt_prefix_build_check)
|
||||
|
||||
# force_independent can be set externally. prefix_build not.
|
||||
!exists($$[QT_HOST_DATA]/.qmake.cache): \
|
||||
qtIsPrefixBuild($$[QT_HOST_DATA]): \
|
||||
CONFIG += prefix_build force_independent
|
||||
|
||||
!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent {
|
||||
|
@ -2502,17 +2502,19 @@ logn("Configure summary:")
|
||||
logn()
|
||||
qtConfPrintReport()
|
||||
|
||||
load(qt_prefix_build_check)
|
||||
|
||||
# final notes for the user
|
||||
logn()
|
||||
logn("Qt is now configured for building. Just run '$$QMAKE_MAKE_NAME'.")
|
||||
pfx = $$[QT_INSTALL_PREFIX]
|
||||
exists($$pfx/.qmake.cache) {
|
||||
qtIsPrefixBuild($$pfx) {
|
||||
logn("Once everything is built, you must run '$$QMAKE_MAKE_NAME install'.")
|
||||
logn("Qt will be installed into '$$system_path($$pfx)'.")
|
||||
} else {
|
||||
logn("Once everything is built, Qt is installed.")
|
||||
logn("You should NOT run '$$QMAKE_MAKE_NAME install'.")
|
||||
logn("Note that this build cannot be deployed to other machines or devices.")
|
||||
} else {
|
||||
logn("Once everything is built, you must run '$$QMAKE_MAKE_NAME install'.")
|
||||
logn("Qt will be installed into '$$system_path($$pfx)'.")
|
||||
}
|
||||
logn()
|
||||
logn("Prior to reconfiguration, make sure you remove any leftovers from")
|
||||
|
21
mkspecs/features/qt_prefix_build_check.prf
Normal file
21
mkspecs/features/qt_prefix_build_check.prf
Normal file
@ -0,0 +1,21 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
defineTest(qtIsPrefixBuild) {
|
||||
prefixdir = $$1
|
||||
# qtbase non-prefix build?
|
||||
exists($$prefixdir/.qmake.cache): \
|
||||
return(false)
|
||||
# top-level non-prefix build?
|
||||
contains(prefixdir, .*/qtbase):exists($$dirname(prefixdir)/.qmake.super): \
|
||||
return(false)
|
||||
return(true)
|
||||
}
|
Loading…
Reference in New Issue
Block a user