From d962c9ff857c5d4f22b8c0a2b714683b7493baf5 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 17 Mar 2021 15:39:01 +0100 Subject: CMake: Make Platform a dependency for all Qt internal targets In particular that influences BundledLibrary targets. Most internal targets already depended transitively on Qt::Platform via Qt::Core as a public dependency. This was not the case for BundledLibrary targets which don't link to Qt::Core. This led to compilation issues in user projects when targeting WebAssembly, due to mismatched flags between a bundled Harfbuzz vs a user project. Probably other subtle issues as well (e.g. none of the Windows specific compile definitions were passed to bundled libs). Bundled libraries depend on PlatformCommonInternal already, so make PlatformCommonInternal turn depend on the public Platform target. I thought that was already the case, but we merely relied on the Qt::Core dependency. Note that Qt::Core should still list Platform as a public dependency, so it gets propagated to user projects. Amends acf9b3a68b98b806329dd92184e632e049441cec Change-Id: Ida3b219818f89ec6eba2c2d92c5db65ad56bc5a4 Reviewed-by: Joerg Bornemann --- cmake/QtInternalTargets.cmake | 1 + cmake/QtPublicTargetsHelpers.cmake | 4 ++-- src/3rdparty/harfbuzz-ng/CMakeLists.txt | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake index 97386e22d8..df9724765e 100644 --- a/cmake/QtInternalTargets.cmake +++ b/cmake/QtInternalTargets.cmake @@ -72,6 +72,7 @@ endfunction() add_library(PlatformCommonInternal INTERFACE) add_library(Qt::PlatformCommonInternal ALIAS PlatformCommonInternal) +target_link_libraries(PlatformCommonInternal INTERFACE Platform) add_library(PlatformModuleInternal INTERFACE) add_library(Qt::PlatformModuleInternal ALIAS PlatformModuleInternal) diff --git a/cmake/QtPublicTargetsHelpers.cmake b/cmake/QtPublicTargetsHelpers.cmake index 2e5eb564f4..6558becf5c 100644 --- a/cmake/QtPublicTargetsHelpers.cmake +++ b/cmake/QtPublicTargetsHelpers.cmake @@ -1,5 +1,5 @@ -# Defines the public Qt::Platform target, which is used by both internal Qt builds as well as -# public Qt consuming projects. +# Defines the public Qt::Platform target, which serves as a dependency for all internal Qt target +# as well as user projects consuming Qt. function(qt_internal_setup_public_platform_target) ## QtPlatform Target: add_library(Platform INTERFACE) diff --git a/src/3rdparty/harfbuzz-ng/CMakeLists.txt b/src/3rdparty/harfbuzz-ng/CMakeLists.txt index 5e97a19751..37e07f2350 100644 --- a/src/3rdparty/harfbuzz-ng/CMakeLists.txt +++ b/src/3rdparty/harfbuzz-ng/CMakeLists.txt @@ -65,7 +65,6 @@ qt_internal_add_3rdparty_library(BundledHarfbuzz ) qt_disable_warnings(BundledHarfbuzz) qt_set_symbol_visibility_hidden(BundledHarfbuzz) -qt_set_msvc_cplusplus_options(BundledHarfbuzz PRIVATE) #### Keys ignored in scope 1:.:.:harfbuzz-ng.pro:: # OTHER_FILES = "$$PWD/src/harfbuzz.cc" -- cgit v1.2.3