Commit Graph

40652 Commits

Author SHA1 Message Date
Leander Beernaert
ccc581c9fd Add auto detection routines for android
Add QtAutoDectect cmake which has routines to handle the vcpkg detection
as well as set up some android configuration parameters. The latter will
contribute towards keeping the cmake configuration commands shorter when
targeting android.

Change-Id: I721291c8dce39b5c298565a46867ddcab2df90e8
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-27 13:45:58 +00:00
Leander Beernaert
20bf867a72 Update README for other Android architectures
Update the cmake README file with explanations on how to target the
other available Android architectures.

Change-Id: Id7653abc4a1a6fbb96797014ce2ca2e6bb49943d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-27 09:53:14 +00:00
Simon Hausmann
f8c52530f7 Simplify test compilation
We don't need the full cmake invocation as when configuring, instead we
can use the qt-cmake wrapper script that uses the generated toolchain
file.

Change-Id: Ie0d554fbf8543d950112108d6a3f8a7c3a58a6a6
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-26 13:26:27 +00:00
Simon Hausmann
6fe92d5aed Prospective fix for using qt-cmake when %PATH% changes and using Ninja
Mixing compilers won't work well on Windows, so if qtbase is built using
cl.exe and Ninja and then later cmake is called on another module and
gcc is found in %PATH%, then cmake will prefer that. Let's avoid that.

Change-Id: I8294482939efa6a16e0a4df8df3aeef8243c3657
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-26 12:41:39 +00:00
Leander Beernaert
5efdf54f84 Fix error in run_config_test_architecture
The run_config_test_architecture() function in QtBaseConfig was not
working correctly as we were not updating the length of the line
properly.

Change-Id: I29c5b45f1fa36d16cb2ef00950feb80987f6b176
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-26 12:13:38 +00:00
Simon Hausmann
1a8799bfdd Fix osx deployment target and sysroot propagation in the qt toolchain
We need to save them in the toolchain file, otherwise we can't compile
anything :)

Change-Id: Ic5c53524fa4aa05d0b3229c2905dff92ca437ec1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-26 11:38:01 +00:00
Simon Hausmann
8c60782124 Fix XCB feature detection
The xcb feature controls whether to build the xcb platform plugin. The
feature depends among other things on

    qt_find_package(XCB 1.9 PROVIDED_TARGETS XCB::XCB)

to succeed. This means at the moment setting XCB_FOUND to true, that's
what the condition checks.

Later on, in configure.cmake, we also check for other components in the
XCB package, for example:

    qt_find_package(XCB COMPONENTS XINPUT PROVIDED_TARGETS XCB::XINPUT)

If this component is not available, the xcb platform plugin has perhaps
reduce functionality, but it should be built and the feature should be
abled. However it isn't, because when that find_package call fails,
XCB_FOUND will be set to false. And that in turn will disable the
feature as the condition fails.

Therefore this patch changes the condition to check for the presence of
the XCB::XCB target instead.

Change-Id: I534087d8c3b7ff5edf81a5ffcf16cc0bb78b9fb7
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-26 09:07:20 +00:00
Leander Beernaert
a9d2c5b6d7 Android: Final changes for APK generation
Generate the ${MODULE}-android-dependencies.xml for the androiddeployqt
tool. This will ensure all the right plugins and dependencies are
packaged when generating the apk.

This change also changes the visibility for executable to default/public.
Not having this will cause the application to crash as we can't locate
main() in the executable (shared library).

Additionally pro2cmake conversion script has been updated to perform
the required conversions for the Android settings.

Finally, the 6 projects in QtBase that have Android dependencies have
been updated with the new script and the step that produces the xml
files in run at the end in QtPostProcess.cmake.

Change-Id: I9774ba1b123bc11cae972fa37054ef2c51988498
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-26 08:34:37 +00:00
Simon Hausmann
ffec6c7180 Add windows batch file for convenient cmake invocation with Qt toolchain file
Similar to the shell script, this makes it easier to invoke cmake by
just extending your PATH.

Change-Id: I1f83e93c507032f6ecf4838c11d62f49f4d93ed6
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-25 14:12:59 +00:00
Simon Hausmann
e5b62e9607 Allow prefix builds with developer-build as feature enabled
Just like with qmake, separate the two "features".

Change-Id: Idf2a796c7c4aaa740c471688b2221d7041fed643
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-25 13:38:44 +00:00
Simon Hausmann
6290efc4eb Fix building against an installed static Qt
For ICU we have multiple components, and ICU becomes a public dependency
to QtCore.

When storing the INTERFACE_QT_PACKAGE_COMPONENTS property, make sure to
store the entire list of components, not just the first component -- by
turning the semi-colon separated list into a space separated list.

When processing the components at find_dependency time, we need to
reverse that and pass COMPONENTS directly to ensure a correct parameter
expansion.

Change-Id: I24a0708520e7d5fba039395a151034aee4d4c0e2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-25 13:38:33 +00:00
Simon Hausmann
e25f9e2008 Prepare tests for running in the CI
* Add labels so that ctest --print-labels and ctest -L <label> gives
  insight over the test plan and the ability to run easily individual
  tests.
* Unfortunately we can't do the TESTARGS indirection for arguments as
  coin does with testlib, so instead pass the parameters to generate
  the xml unconditionally.

Change-Id: I289de9c15c516e3ac3fe04771fdbd8d7a083ff1f
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-25 13:11:05 +00:00
Simon Hausmann
ebfd09e7d6 Fix early warning system
Remove dummy test instructions that don't work right now and cause
failures.

Change-Id: I30195fe605419a8eb462e8315f71718dd86df412
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-06-25 08:28:52 +00:00
Simon Hausmann
a6576d97ca Fix vcpkg default target triplet setting in the qt toolchain file
Due to scoping this variable needs to be written into the cache.

Change-Id: I2704fe9ac138210571e0b7acada5eb5c65e265af
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-24 15:08:05 +00:00
Alexandru Croitor
a37771ebc5 Check for the correct apple clang version with warnings_are_errors
The current state of qtbase is confirmed to be built with no warnings
when using up to Xcode 9.2, as per the check in
mkspecs/features/qt_common.prf. Add the same check for the CMake
build.

Change-Id: I0c2409ece048e93fba29c41a8bd053dd112949bd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-24 14:52:59 +00:00
Simon Hausmann
d2c2ff8337 Fix tools dependencies in associated modules when cross-compiling
When cross-compiling we take a shortcut in add_qt_tool() for moc, etc.
as the tools are already imported from the host build of Qt. However we
must still add the tools as a dependency in for example QtCore so that
when the cross-compiled QtCore is used, the host tools are implicitly
imported.

Change-Id: I83e4fd7f21e18472c0965c90c058dd2b55b6ec65
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-24 14:23:41 +00:00
Simon Hausmann
03aa74e40d Fix tools dependencies lookup when cross-compiling
When the host system uses 64-bits for pointers and the target 32-bits,
then locating the tools dependencies would fail due to the mismatch.
Since the tools dependencies don't create linkable targets but merely
import executables, we can skip this check like in commit
914b367c7f.

Change-Id: I1ebd0867e4cce34f42df21dc8e8d9176a83a9cac
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-24 14:23:32 +00:00
Simon Hausmann
a39a0e5419 Fix build of modules outside of QtBase when cross-compiling
The Qt::Platform target includes the mkspecs/$spec directory, which we
must unconditionally install as long as we use it.

Change-Id: I272650a887b5b0b3bd868524784dca65b76b02d9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-24 14:23:22 +00:00
Simon Hausmann
2895f3ffaa Generate a toolchain and convenience cmake wrapper
This gets us a step into the direction of convenience that qmake
offered:

    * QtBase is configured with a long command line (especially when
      cross-compiling)
    * Afterwards application developers (or other module builds) can
      just use qmake && make

By generating a toolchain file we can capture vcpkg and toolchain
chain-loading and a shell script can take care of providing the prefix
path.

Change-Id: Ided81f5432cab862306f2bea86cfe8e56adf71b0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-24 14:23:11 +00:00
Alexandru Croitor
a581f917e2 Fix plugins on macOS to have the .dylib extension
add_library(MODULE) creates libraries with .so extension on macOS,
but Qt plugins should have the .dylib extension.

Change-Id: I603e7abfb9d5b78c0c8ea526f9fe995bf36c3a50
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-24 13:30:22 +00:00
Alexandru Croitor
1a2a3b72bf Add PlatformCommonInternal target and QT_NO_DEBUG definition
All the other PlatformModuleInternal, PlatformPluginInternal,
PlatformToolInternal target will depend on the common one.

Also add the QT_NO_DEBUG definition when the build type is not Debug.
This fixes the lookup of the Qt platform plugin on macOS, which
uses a "_debug" prefix in the plugin name depending on if the
QT_NO_DEBUG definition is present or not.
This is the same as it is done in mkspecs/features/qt.prf.

Change-Id: I82cf461d44b8a3b3c5dc2b2d9f25baa246fc1e4b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-24 13:30:14 +00:00
Liang Qi
cccc9fc59b SplitAfterVariableSubstitution is also needed for building tests
Just follow da7f40f7c2.

Change-Id: Iac0e96a42fa97bc002e3f11b6a6317ddc6e4187b
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-24 08:13:49 +00:00
Jędrzej Nowacki
ebbf4a1d96 Move ICC compiler name setup to instructions level
That way we can simplify product level configuration.

Change-Id: I6825a10e4652dc7a730d23aaa7d4e7db9c079e50
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-24 06:23:25 +00:00
Jędrzej Nowacki
da7f40f7c2 Update the instructions after CI changed way of splitting arguments
Now execute command can directly specified how the arguments should
be divided. The default option doesn't work well for CONFIGURE_ARGS,
because we want to pass it's result as a separate subprocess
arguments.

Change-Id: I6b7adb04164f5568d9ad2f45e3334d7a7a49bc79
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-24 06:13:04 +00:00
Simon Hausmann
d0183527d4 Change cmake generator selection mechanism
By using the new environment variable for the generator selection
introduced in 3.15, we can later select the visual studio generator once
the qtbase build is fixed. This will simplify the VS selection code in
this file and allow getting rid of the ENV_PREFIX and .bat file.

Change-Id: I9f76b5714450ffa60b496aef0ce5a0c21e843bef
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-21 12:50:49 +00:00
Simon Hausmann
1c4510cfc4 Fix build with multi-config VS code generator
We want our libraries to end up in the same bin directory, not inside the
Debug\ or Release\ sub-directories. Their distinct names avoid a clash.

For our tools such as moc, uic, etc. we need to place the release build into
the bin directory explicitly, as by default multi-config generators place
binaries into the Debug\ or Release\ sub-directory.

This is also needed as cmake's automoc itself expects moc to be in the
bin directory.

One effect of this is that with a multi-config build, it is always necessary
to perform a release build first, otherwise the debug build won't find moc/uic.

Change-Id: I1361823ddf5961a5f1bb517e4bca69e621cbce9e
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-21 12:45:37 +00:00
Simon Hausmann
b0bd50d339 Prepare for running tests with cmake
This is just a small step towards the situation where we build the tests
during the module build phase and later extract and merely run them.

The general steps we need are:

    * build tests separately, which includes the cmake test plan
    * let coin archive the tests (build) directory
    * in the test VM unpack everything
    * run ctest on the test plan that was part of the tests archive

This patch implements the first two steps.

Change-Id: Ifb8321015d0d18ad20e8cf20bb8b746030202daf
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-21 12:00:13 +00:00
Simon Hausmann
174d870635 Add support for picking up vcpkg automatically
If VCPKG_ROOT is defined, let's use it and chainload any previously set
toolchain file. The detection of vcpkg support via the VCPKG_ROOT
environment variable is per vcpkg documentation, the automatic
chainloading is something specific to us.

Change-Id: I0498effc5b948f0b6f5e223d0454a15a0cbb503a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-20 13:42:31 +00:00
Simon Hausmann
fab07ca3ef Add support for vcpkg default target triplets
As per vcpkg documentation, this is a tweak that allows respecting the
vcpkg default target triplet environment variable, which simplifies the
command line slightly.

In order to make this also work for modules other than qtbase, we're
going to need to consider the creation of a toolchain file.

Change-Id: I2573f6644d671c710fd823df83e2205dbbfe19e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-20 11:55:01 +00:00
Simon Hausmann
aeaef4d6f3 Fix QPA headers for QtPrintSupport
Remove the special case in QtGui and instead handle this in a generic
way so that QtPrintSupport is covered, too. For now we do this in the
same function where we run the regular target install() commands. It
doesn't quite fit into per-target PUBLIC_HEADER or PRIVATE_HEADER
properties as the qpa headers sit _next_ to public and private in a
separate qpa sub-directory.

Change-Id: I30aadaf9496cf0236f39a7c36a5163e4270edecc
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-20 09:10:57 +00:00
Frederik Gladhorn
264d3bc9ba CMake: clarify readme
Always install - not installing doesn't make much sense.
Add information about developer-build.

Change-Id: I406d007e9b167ee83d126ffa6e78235743402c33
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-17 15:52:53 +00:00
Jędrzej Nowacki
aaa7ce460a Add ICC platform specific mkspec
Change-Id: I6d33439a251723c409d395b459207843804d295c
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-17 10:56:34 +00:00
Jędrzej Nowacki
06a552eab0 Port ICC specific instructions
Coin implicitly was exporting some variables if ICC was used.

This patch is just a first step to enable ICC in CI. To make
it really working one would need to fix the QtBase code and
enable ICC in qt5 repository.

Change-Id: I2fca19ff10d7390fa013f511f167c0c1c2fba427
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-17 09:21:20 +00:00
Jędrzej Nowacki
d489400448 Simple typo fixup
Change-Id: Ifd2c6c3eef5aea4decdbe1fc6221139bf3447ba6
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-06-17 09:14:14 +00:00
Simon Hausmann
4de70ce952 Avoid hardcoding the underlying build tool
Since 3.15, not only --build can call the low-level build tool,
--install can also be used to run the installation. There's also an
environment variable that can be used to control the backend at cmake
time, but that may only be useful later.

Change-Id: I8c1ee48f946e110af3e824cf8980bbacbb94db99
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-17 09:10:32 +00:00
Alexandru Croitor
fe3bd212fc Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
This changes many different CMake places to mention Qt6 instead of
Qt5.

Note that some old qt5 cmake config files in corelib are probably not
needed anymore, but I still renamed and kept them for now.

Change-Id: Ie69e81540386a5af153f76c0242e18d48211bec4
2019-06-14 16:31:09 +02:00
Alexandru Croitor
72066a3a58 Revert "cmake: Make CMake superbuilds work"
Builds fail on Windows, due to splitting on ':' on absolute file paths,
when handling syncqt injections.

Revert for now to get qt6 merge in faster.

This reverts commit 7559d508d1.

Change-Id: If139a8a1eb4ae7ccc8d7b835b12e83b03176e28b
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-14 14:27:24 +00:00
Kevin Funk
7559d508d1 cmake: Make CMake superbuilds work
In case of a CMake superbuild, the actual install root in a non-prefix
build is the top-level build directory (not $TOP_BUILDDIR/qtbase anymore).
This is more in line how CMake lays out things by default.

Task-number: QTBUG-75582
Change-Id: I4e1744b5c877508fedc33e237eec28cb7436010b
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-14 10:16:40 +00:00
Alexandru Croitor
cfcd50875b Try to find Test package before calling add_subdirectory(src)
in qt_build_repo().

This is important for qtdeclarative for example, which builds QmlTest
functionality in ./src, and thus needs Test lib to be available.

Change-Id: I84326d79844526f2f177c19de30bab0c858773e3
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-13 14:59:55 +00:00
Leander Beernaert
60c2f9f3b4 Android: Install gradle templates
Install the required gradle templates for the android deployment tool
to work correctly.

Change-Id: I1b18235c354dbea2d4b47ce1d8146a477676a6cb
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-13 14:58:53 +00:00
Alexandru Croitor
bb959af00a Automatically find apple frameworks when building a repo
Instead of doing it just in qtbase/src, we need to do it
for all repos before building ./src.

Change-Id: I57f226b849cd5370ffbbbea8a694697d400957a4
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-06-13 14:25:02 +00:00
Leander Beernaert
2e30f1d9b6 Android: Correct install path for libqtforandroid.so
I didn't notice I forgot to prepend the plugin/ to install path. On my
local tests I forgot to delete some cached state and I didn't notice
it was installing in the wrong directory.

Change-Id: Ic898a37388aa0508ad995f922bef4d187f75688f
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-13 12:52:38 +00:00
Leander Beernaert
a34e7717a4 Correct install path for QtForAndroid plugin
Installation directory for libqtforandroid.so should be
plugins/platform/android instead of plugins/platform.

Change-Id: I124bed4d43664eddcceca197c4df26a1e8d3d0af
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-13 11:44:23 +00:00
Jędrzej Nowacki
341cc6e5bb Try to use %ProgramFiles(x86)% instead of custom code
On Windows, we have a problem with locating MSVC. Depending on system
version it can be installed in different directories. Currently
we have a custom logic to handle it, but in theory we could just use
"ProgramFiles(x86)" to abstract it.

Change-Id: Ia94a41d9ef6229de712606f9a9d3d61a0abeb24f
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-13 11:38:13 +00:00
Jędrzej Nowacki
d59fadb2da Remove double negations
As now the configuration syntax supports enable_if, we can get rid
of double negations.

Change-Id: I5b8b695d4f7a72cd1a836b9b427096fb4e3b85a7
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-06-13 11:37:40 +00:00
Alexandru Croitor
bf0ee8c4e8 Fix the 'Fix static builds' commit
The GlobalConfigPrivate target should also be filtered out when
registering target dependencies, because there's no standalone
Qt5GlobalConfigPrivate.cmake file.

Amends fbfa067a30.

Change-Id: If89732bc2fd004b9644959f71339e22210483d7c
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-06-12 18:18:58 +00:00
Alexandru Croitor
fbfa067a30 Fix static builds
There were a few issues:
- Third party dependency info for plugins was not generated,
  because the depends and public_depends variables were not fetched.
  This caused issues when trying to use the qcocoa plugin in a
  consuming application, because Cups::Cups was not found.
- Privately linked libraries in extend_target were not considered when
  generating dependency info for modules. This caused issues in
  QtThemeSupport, becauese it could not find Qt::DBus, due to that
  target only being added as a private library in a conditional scope.
- Make sure to handle privately linked internal modules like
  PlatformModuleInternal to map to the Qt5 package, because there is no
  standalone package for it.

Also remove a TODO comment that says that qt_register_target_dependencies
should maybe be called in extend_target. That's already the case.

Change-Id: Ie99c52e800cd89e6f82008f1e38f4da5cd602929
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-06-12 14:26:28 +00:00
Simon Hausmann
319fd4ea9a Make WinMain linkage compatible with Qt 5
In Qt 5, the Qt5Core target was extended by Qt5CoreConfigExtras.cmake to
have a generator expression as interface linkage that would
conditionally link WinMain.

This patch implements the same through regular interface linkage right
in corelib. Since the linkage happens through a generator expression,
our dependency generator does not see this as a dependency. Therefore we
add this as an unconditional package dependency for corelib, on Windows.

In theory this could be done also in winmain's CMakeLists.txt, as
targets can be extended outside of their directory. However this adds a
directory id (WinMain:@<023423>) to the linkage, which mysteriously is
not removed on the exported core target.

Change-Id: If2abb9ba790f51274f582c9ec28c13d968b84302
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-12 14:22:30 +00:00
Simon Hausmann
efa9998521 Fix compiling of examples on Android
* Simplify add_qt_gui_executable() to not require WIN32/MACOSX_BUNDLE
  but provide it implicitly. It's redundant :)

* When on Android, build a module (shared library), just like qmake.
  This requires an additional library destination in the install() call,
  but that's ignored on other platforms.

* Fix typos in the android deployment generation settings function

* Use the correct cache variable to determine whether we're inside a Qt
  build or not. Right now this only works inside Qt builds anyway as
  QtPlatformAndroid.cmake is not publically accessible.

Change-Id: If1c763c31a7a83d0e0d854362ba7901657f63eb5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-06-12 14:19:53 +00:00
Simon Hausmann
6732fa3a29 Fix linking of examples
Provide add_qt_gui_executable() as function in our public API that takes
care of automaticWinMain linkage. We can use this in the future to
encapsulate similarplatform-specific behavior and adjustments, such as
module generation onAndroid.

In order for the examples to see the function in Qt5CoreMacros, three more
additional fixes were required:

    * Do the build_repo_end() call _before_ attempting to build the
      examples, as we need the build_repo_end() to include QtPostProcess
      and complete the creation of all the target config files.
      Otherwise the find_package() calls in the examples see something
      incomplete.

    * Add more QT_NO_CREATE_TARGET guards

    * Always call find_dependency on the dependencies, regardless of the
      target creation mode. This way a find_package(Qt5 COMPONENTS
      Widgets) will still load Qt5CoreMacros.

Change-Id: I03ce856e2f4312a050fe8043b8331cbe8a6c93e6
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-06-12 14:19:34 +00:00