Fix QT_HOST_DATA for builds setting INSTALL_MKSPECSDIR
In a Qt build that was configured with INSTALL_MKSPECSDIR set to something different than INSTALL_DATADIR, the qmake property QT_HOST_DATA was wrong. Consequently, mkspecs could not be loaded, rendering qmake dysfunctional. The reason was that we considered every QT_HOST_xxx property to have the same value as QT_INSTALL_xxx in a non-cross build. This is not true for QT_HOST_DATA, because users might want to set INSTALL_DATADIR to "foo" but INSTALL_MKSPECSDIR to "bar/mkspecs". Move the unused determination of the host data dir to the QtLibraryInfo lib and handle QT_HOST_DATA specially. Fixes: QTBUG-94591 Pick-to: 6.2 Change-Id: I2c44cda8405ff1d14391254fcd1d9b1361cb5855 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
cc2fdce35e
commit
d6e01ae05c
@ -25,12 +25,6 @@ function(qt_generate_qconfig_cpp in_file out_file)
|
||||
set(QT_CONFIG_STR_OFFSETS "")
|
||||
set(QT_CONFIG_STRS "")
|
||||
|
||||
# Chop off the "/mkspecs" part of INSTALL_MKSPECSDIR
|
||||
get_filename_component(hostdatadir "${INSTALL_MKSPECSDIR}" DIRECTORY)
|
||||
if("${hostdatadir}" STREQUAL "")
|
||||
set(hostdatadir ".")
|
||||
endif()
|
||||
|
||||
# Start first part.
|
||||
qt_add_string_to_qconfig_cpp("${INSTALL_DOCDIR}")
|
||||
qt_add_string_to_qconfig_cpp("${INSTALL_INCLUDEDIR}")
|
||||
|
@ -22,6 +22,13 @@ target_include_directories(QtLibraryInfo PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/library"
|
||||
)
|
||||
|
||||
# Chop off the "/mkspecs" part of INSTALL_MKSPECSDIR
|
||||
get_filename_component(hostdatadir "${INSTALL_MKSPECSDIR}" DIRECTORY)
|
||||
if("${hostdatadir}" STREQUAL "")
|
||||
set(hostdatadir ".")
|
||||
endif()
|
||||
|
||||
target_compile_definitions(QtLibraryInfo PUBLIC
|
||||
PROEVALUATOR_FULL
|
||||
QT_BUILD_QMAKE
|
||||
@ -33,6 +40,7 @@ target_compile_definitions(QtLibraryInfo PUBLIC
|
||||
QT_VERSION_PATCH=${PROJECT_VERSION_PATCH} # special case
|
||||
QT_HOST_MKSPEC="${QT_QMAKE_HOST_MKSPEC}"
|
||||
QT_TARGET_MKSPEC="${QT_QMAKE_TARGET_MKSPEC}"
|
||||
QT_HOST_DATADIR="${hostdatadir}"
|
||||
)
|
||||
qt_set_common_target_properties(QtLibraryInfo)
|
||||
|
||||
|
@ -182,7 +182,12 @@ static QString storedPath(int loc)
|
||||
if (loc < QMakeLibraryInfo::FirstHostPath) {
|
||||
result = QLibraryInfo::path(static_cast<QLibraryInfo::LibraryPath>(loc));
|
||||
} else if (loc <= QMakeLibraryInfo::LastHostPath) {
|
||||
result = QLibraryInfo::path(hostToTargetPathEnum(loc));
|
||||
if (loc == QMakeLibraryInfo::HostDataPath) {
|
||||
// Handle QT_HOST_DATADIR specially. It is not necessarily equal to QT_INSTALL_DATA.
|
||||
result = QT_HOST_DATADIR;
|
||||
} else {
|
||||
result = QLibraryInfo::path(hostToTargetPathEnum(loc));
|
||||
}
|
||||
} else if (loc == QMakeLibraryInfo::SysrootPath) {
|
||||
// empty result
|
||||
} else if (loc == QMakeLibraryInfo::SysrootifyPrefixPath) {
|
||||
|
Loading…
Reference in New Issue
Block a user