qt5base-lts/util
Alexandru Croitor c5b61d2e90 pro2cmake: Handle QT += core-private correctly for modules
If a module project (Quick) contains QT += core-private, the
qmake semantics translated to CMake would mean the following:

target_link_libraries(Quick PUBLIC Core)
target_link_libraries(Quick PRIVATE CorePrivate)
target_link_libraries(QuickPrivate INTERFACE CorePrivate)

Whereas a QT_PRIVATE += core-private only means
target_link_libraries(Quick PRIVATE CorePrivate)

without adding any public dependencies to QuickPrivate.

To achieve that, we need a few modifications to both pro2cmake and
QtBuild.cmake

- pro2cmake doesn't automagically add public and private dependencies
  to targets when encountering a private module assigned to QT.
  Instead it generates the logic described above by passing correct
  LIBRARIES, PUBLIC_LIBRARIES, and PRIVATE_MODULE_INTERFACE values.

- pro2cmake doesn't do any dependency magic for non-module targets
  anymore, like executables, plugins, internal_modules. This means
  that QT assignments are now regular public dependencies.

- qt_add_module and qt_extend_target now accept a new
  PRIVATE_MODULE_INTERFACE option.

- qt_extend_target does not automagically make private modules be
   public dependencies on other private modules.

- qt_extend_target correctly assigns PRIVATE_MODULE_INTERFACE values
  to Private module only. For other target types, it's a no-op.

The change requires regeneration of all projects.

When we fix pro2cmake and QtBuild.cmake to properly handle
internal_modules (create only Private modules without creating
a non-Private counter part), we will need another project regeneration
to correctly assign dependencies.

Change-Id: I4c21f26b3ef3b2a4ed208b58bccb65a5b7312f81
Task-number: QTBUG-81780
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-02-05 14:36:16 +00:00
..
accessibilityinspector Updated license headers 2016-01-21 18:55:18 +00:00
aglfn Updated license headers 2016-01-21 18:55:18 +00:00
cmake pro2cmake: Handle QT += core-private correctly for modules 2020-02-05 14:36:16 +00:00
corelib/qurl-generateTLDs Compile-fixes in the generator for qurltld_p.h 2019-10-25 11:43:04 +02:00
edid Minor grammar fixup 2018-08-03 18:11:24 +00:00
glgen Remove usages of deprecated APIs from QtAlgorithms 2019-06-29 21:58:36 +02:00
gradientgen WebGradients: redo implementation 2019-12-14 11:31:46 +01:00
harfbuzz
includemocs QtCore: include mocs 2017-05-05 03:03:30 +00:00
integrity
lexgen Remove usages of deprecated APIs from QtAlgorithms 2019-06-29 21:58:36 +02:00
locale_database Update CLDR to v36 2019-10-25 11:44:48 +02:00
plugintest Updated license headers 2016-01-21 18:55:18 +00:00
qfloat16-tables Merge remote-tracking branch 'origin/5.13' into 5.14 2019-11-06 11:41:19 +01:00
unicode Unicode tables: minor prettification 2019-11-28 11:04:39 +01:00
x86simdgen SIMD: Change the way we declare constants for x86 2018-07-09 00:18:30 +00:00
xkbdatagen Updated license headers 2016-01-21 18:55:18 +00:00