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 acf9b3a68b

Change-Id: Ida3b219818f89ec6eba2c2d92c5db65ad56bc5a4
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Alexandru Croitor 2021-03-17 15:39:01 +01:00
parent 57c737f325
commit d962c9ff85
3 changed files with 3 additions and 3 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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:<TRUE>:
# OTHER_FILES = "$$PWD/src/harfbuzz.cc"