Commit Graph

29627 Commits (f96778dee27f10e84865c4b0a32ef333287c5fe7)

Author SHA1 Message Date
Alexandru Croitor fa21d29b75 Rerun pro2cmake on projects that use .ui files
Task-number: QTBUG-75875
Change-Id: I95109b07fc4a6e09fe7911a21fc5f27f2c895d77
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
2019-05-22 14:58:24 +00:00
Alexandru Croitor c7fd10a022 Allow building the tests directory as a standalone CMake project
At the moment, Coin builds tests as a separate qmake invocation
against an installed Qt. We need to support the same with CMake.

Change the tests subdirectory to be a standalone CMake project when
CMake does not detect an existing QtTest target while processing the
subdirectory. If the target exists, it means we are building the whole
repo, if the target does not exist, we need to call find_package
to find the installed Qt.

Refactor and move around a few things to make standalone tests build
successfully:
- add a new macro to set up paths to find QtSetup
- add a new macro to find all macOS frameworks
- add a new macro to set up building tests
- add a new macro that actually builds the tests
- export the INSTALL_CMAKE_NAMESPACE value into the BuildInternals
  Config file
- export the CMAKE_BUILD_TYPE value, because a test project doesn't
  have a .git subdir and thus defaults to be built in Release
  mode, even though qtbase might have been built in Debug, so to
  avoid the mixing, the propagate the build type
- stop overriding INSTALL_CMAKE_NAMESPACE and
  QT_CMAKE_EXPORT_NAMESPACE inside QtSetup if they are set, because
  the tests project doesn't specify a major version, and if we
  override the values, the moc / uic targets don't get the correct
  major version prefix and configuration fails

Change-Id: Ibdb03687302567fe325a15f6d1cb922c76240675
Fixes: QTBUG-75090
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-22 11:12:54 +00:00
Alexandru Croitor 774088b677 Build and use double-conversion library shipped by Qt when needed
Some Linux distros might not have a double-conversion library. Because
it is such an essential library for QtCore, compile and use the
the copy of the library bundled with Qt.

Also change library name to be a proper target with double colons,
so that in case the library is not found for some reason, the CMake
configure step would fail, instead of failing at link time.

Task-number: QTBUG-74133
Change-Id: I9f3b4298ae6e952891a7a89541d46878176bf1ce
Fixes: QTBUG-75891
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-22 07:25:41 +00:00
Alexandru Croitor e4b8c488bd Improve configure2cmake to find_package only in certain conditions
It doesn't make much sense to look for X11 related packages on
macOS and Windows by default. Usually they would not be there, and
as a result the configuration step would show a long list of scary
not found packages, and also eat precious configure time.

Change the conversion script to allow putting conditions around
generated find_package calls.

These conditions can be manually set in the conversion script
library mapping, using the emit_if argument,
which we do for the X11 and Wayland related packages.

They are also computed by checking which features use a given library,
and if the feature is protected by a simple emitIf condition like
config.linux, the relevant library find_package call will be protected
by the same condition.

If a developer still wishes to look for all packages, they can define
the CACHE variable QT_FIND_ALL_PACKAGES_ALWAYS to ON.

The relevant configure.cmake files are regenerated in this patch.

Change-Id: I6f918a94f50257ec41d6216305dae9774933389a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 13:15:16 +00:00
Alexandru Croitor 42c8c38564 Regenerate corelib
And add the first version of the .prev file.

Change-Id: I5d8f2354f86bc279e185e31173df4aeeb6e46116
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 13:15:00 +00:00
Alexandru Croitor fbbfbcf360 Regenerate sql
Change-Id: I495678a5c77557ae297b7dd028f1253ebcce9ef7
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:38:07 +00:00
Alexandru Croitor 8cf45a6848 Regenerate printsupport
No .prev file cause it's a clean conversion.

Change-Id: I33e02dccb9c8da336891c36cd0e1454d29152065
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:37:51 +00:00
Alexandru Croitor 17865396bf Regenerate platformheaders
And add the first version of the .prev file.

Change-Id: I87d33dd175ddcbccd202f068f469f260944e4ada
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:37:30 +00:00
Alexandru Croitor a937632258 Regenerate concurrent
Change-Id: Iccb993e7e38dc04be2e3960d0f49ddf241c675e7
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:36:50 +00:00
Alexandru Croitor 0711d497d9 Regenerate dbus
And add the first version of the .prev file.

Change-Id: I8375591a8cfc087291774370b8308c808dd5f0b4
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:36:37 +00:00
Alexandru Croitor 79d820f8a9 Regenerate opengl
And add the first version of the .prev file.

Change-Id: I96f27bce6d1c3107fb8c7b3758b29cfd944cf374
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:35:53 +00:00
Alexandru Croitor b1746c1da1 Regenerate network
And add the first version of the .prev file.

Change-Id: I9d298e483032081a02a63b4f887f4d682ea7ccd4
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:35:38 +00:00
Alexandru Croitor 7f68437296 Regenerate widgets
And add the first version of the .prev file.

Change-Id: I901c413997dcc497da5e45b1675726180c84e709
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:35:19 +00:00
Alexandru Croitor a701be5652 Regenerate gui
And add the first version of the .prev file.

Change-Id: Ie5fba879b8fdb670d4331d4df524ffb5bad3303e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 09:34:54 +00:00
Alexandru Croitor 9542e78525 Use the qt_build_repo() macros for building qtbase as well
To implement this, create a new Qt5BuildInternals package.

All child Qt modules like qtsvg should use
find_package(Qt5BuildInternals) or
find_package(Qt5 COMPONENTS BuildInternals) in the their
top level CMakeLists.txt.
This will make the qt_build_repo() macros available.

For qtbase we slightly cheat, and specify a CMAKE_PREFIX_PATH
pointing to the source folder that contains the BuildInternals
package.

For the other modules we actually use a configured and installed
package Config file.

This change moves variables that used to be written into the
QtCore Config file into the BuildInternals package. This way
things that are relevant only for building additional Qt modules
does not pollute the QtCore package.

Task-number: QTBUG-75580
Change-Id: I5479adff2f7903c9c2862d28c05c7f485ce3e4eb
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-15 17:33:51 +00:00
Alexandru Croitor c097256ee4 Encapsulate commands for building other repos into two macros
Currently to build qtsvg we have some copy-pasted code to set up
the paths for QtSetup and QtPostProcess to be found.

To make it cleaner, introduce two new macros called
qt_build_repo_begin and qt_build_repo_end(). The first one
should be called in a child repo like qtsvg, right after
a find_package(Qt5) call, and the second one at the end of the
repo top-level CMakeLists.txt file.

In order for the macros to work, extract some of the variables
which were set in Qt5Config into Qt5CoreConfig instead. This
makes sure that it works also for find_package(Qt5Core) calls.

Task-number: QTBUG-75580
Change-Id: I85267c6bd86f9291ec2e170fddab1006ab684b5c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-05-15 11:40:03 +00:00
Alexandru Croitor 02a015375a Implement developer / non-prefix builds
A non-prefix build is a build where you don't have to run
make install.

To do a non-prefix build, pass -DFEATURE_developer_build=ON when
invoking CMake on qtbase. Note that this of course also enables
developer build features (private tests, etc).

When doing a non-prefix build, the CMAKE_INSTALL_PREFIX cache variable
will point to the qtbase build directory.

Tests can be run without installing Qt (QPA plugins are picked up from
the build dir).

This patch stops installation of any files by forcing the
make "install" target be a no-op.

When invoking cmake on the qtsvg module (or any other module),
the CMAKE_INSTALL_PREFIX variable should be set to the qtbase build
directory.

The developer-build feature is propagated via the QtCore Config file,
so that when building other modules, you don't have to specify it
on the command line again.

As a result of the change, all libraries, plugins, tools, include dirs,
CMake Config files, CMake Targets files, Macro files, etc,
will be placed in the qtbase build directory, mimicking the file layout
of an installed Qt file layout.

Only examples and tests are kept in the separate module build
directories, which is equivalent to how qmake does it.

The following global variables contain paths for the
appropriate prefix or non prefix builds:
QT_BUILD_DIR, QT_INSTALL_DIR, QT_CONFIG_BUILD_DIR,
QT_CONFIG_INSTALL_DIR. These should be used by developers
when deciding where files should be placed.

All usages of install() are replaced by qt_install(), which has some
additional logic on how to handle associationg of CMake targets to
export names.

When installing files, some consideration should be taken if
qt_copy_or_install() needs to be used instead of qt_install(),
which takes care of copying files from the source dir to the build dir
when doing non-prefix builds.

Tested with qtbase and qtsvg, developer builds, non-developer builds
and static developer builds on Windows, Linux and macOS.

Task-number: QTBUG-75581
Change-Id: I0ed27fb6467662dd24fb23aee6b95dd2c9c4061f
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-15 11:31:31 +00:00
Tobias Hunger 5c98110fca CMake: Fix up after WrapFreetype introduction
Change-Id: I05ca6f8b055f470101ff0dcd1720a349a87e4ba9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-08 12:49:55 +00:00
Alexandru Croitor 0efe6fc90f Don't link against dbus-1_nolink when dbus_linked feature is off
dbus1_linked is only evaluated to true when the dbus package is found.
If it was not found, then it makes no sense to link against the
_nolink target, because no package was found in the first place.

When the package is not found, QtDBus uses a minimal dbus header which
is included with QtDBus sources, so there is no need for the _nolink
target.

This amends cc141cc5c6 and fixes a build
failure on macOS.

Change-Id: I71dcbb7465ad13b0bf03579f51412c373125caba
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-08 12:32:53 +00:00
Alexandru Croitor 9d96c8da78 Fix freetype target not being found when using vcpkg
vcpkg and upstream CMake find module define different target names for
the same package. To circumvent this, create our own Wrap find module,
and link against it. Inside the find module, try both target names.

Change-Id: Iba488bce0fb410ddb83f6414244f86ad367de72b
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-08 10:54:15 +00:00
Tobias Hunger e8bb673301 CMake: Regenerate xcb platform plugin
This contains fixes to the improved library detection recently introduced.

Change-Id: I5df03b0c965dd0b8cf4b1769c752ecbb81558265
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-07 17:10:20 +00:00
Tobias Hunger aa8af1283f CMake: Do not require ATSPI2 in platformsupport/linuxaccessibility
Change-Id: I3796ab3eb51306eec67460214c20a3c1c160edee
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-07 17:08:47 +00:00
Tobias Hunger cc141cc5c6 CMake: Fix dbus build after dbus library detection update
Change-Id: If4d773136b1aa01204e012c6900458673a4c5670
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-07 15:07:07 +00:00
Tobias Hunger bbe5c58079 CMake: Fix src/plugins/bearer
Sorry, last-minute-typo hit again:-/

Change-Id: I7130ba3306a96584e2bc33bc1aa27990a3508035
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-05-07 12:41:22 +00:00
Alexandru Croitor 97600f5562 Fix special cases in corelib
Change-Id: I506f379245619c8b5d248ea27dba35a165b455ee
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-06 14:54:14 +00:00
Alexandru Croitor e6b7a3e459 Fix special cases in gui
Change-Id: I9553f1443a772c45748fafca079eaad2bf8cf1de
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-06 14:54:08 +00:00
Tobias Hunger b65e7b2ffe CMake: Regenerate src/plugins/imageformats
Change-Id: Iea0f1b5f51508b7e8c2cad405dd3e293186c583a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:46:16 +00:00
Tobias Hunger 0434b7fb38 CMake: Regenerate src/plugins/bearer
Change-Id: I6c900247eb03b8afc3f299b5dbca5bac64527a52
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:46:11 +00:00
Tobias Hunger 9ffcc76188 CMake: Scripts: Fix double entries in 3rd party library mapping
Change-Id: I35f29876874d6083d19382800d194e417d57bca1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:29:20 +00:00
Tobias Hunger aba911c4d0 CMake: Regenerate src/platformsupport/kmsconvenience
Change-Id: I2608275ca7cd5315e7ffdffbb25f78e98fbf9bc3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:29:11 +00:00
Tobias Hunger d1a0af9b0c CMake: Regenerate src/platformsupport/platformcompositor
Change-Id: I435fb110ad59eb197401c6d8090c697ceb4cf687
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:28:45 +00:00
Tobias Hunger 1e5c90e6e2 CMake: Regenerate src/plugins
Change-Id: I64f920e909de7c612e3ab18b8aa31b98e0e1acfd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:27:43 +00:00
Tobias Hunger b15776c76f CMake: Regenerate platformsupport/windowsuiautomation
Change-Id: I17c927cf7eb8c66ee941a2d91c918e105474da29
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:27:34 +00:00
Tobias Hunger cbaa8ee27d CMake: Regenerate platformsupport/vkconvenience
This does not link to vulkan, just as it did before. Feels wrong...

Change-Id: I7e76e03e95ed33421de684f51c9943a84dde7779
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:27:24 +00:00
Tobias Hunger ef170a12d8 CMake: Regenerate platformsupport/themes
Change-Id: Ica4b4c3f2a5f86476f179a01aea5eeb25e617a98
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:27:08 +00:00
Tobias Hunger 9b7f5776ee CMake: Regenerate platformsupport/services
Change-Id: I73444aeef2e37ebb2f90e8bae3e6932989bad5f0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:26:58 +00:00
Tobias Hunger 3d452d7c3b CMake: Regenerate platformsupport/linuxaccessibility
Use ATSPI with nolink!

Change-Id: I334fa93364109ca04b4312d12ddcea34d9e9a103
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:26:49 +00:00
Tobias Hunger 5d374083b7 CMake: Regenerate platformsupport/graphics
Change-Id: Ifff85f70de092ade438430d71d9a149f49363c14
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:24:51 +00:00
Tobias Hunger 775e595642 CMake: Regenerate platformsupport/fontdatabases
This one does actually contain functionality changes, but those look OK to me.

Change-Id: I5fd2caee16da86c529e1c83ca66452f780e54e26
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:24:42 +00:00
Tobias Hunger f8d3b60fb1 CMake: Regenerate platformsupport/fbconvenience
Change-Id: Ic838debdca48553252cb4c32ec8a42695ba24b46
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:24:28 +00:00
Tobias Hunger a7fc360b22 CMake: Regenerate platformsupport/eventdispatchers
Change-Id: Ie9cbee3fcb58673c08e8378382dd45e61fc4ff01
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:24:19 +00:00
Tobias Hunger 46b1676804 CMake: Regenerate src/platformsupport/edid
Change-Id: Id567354daa47c0be07211ebf01f92cd01be9a5c7
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:24:06 +00:00
Tobias Hunger c29fe1fae2 CMake: Regenerate src/platformsupport/devicediscovery
Change-Id: Ia306a7197c10fffb520e90eead449c551f0dfbe8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:23:55 +00:00
Tobias Hunger 65c5ffdb1d CMake: Regenerate src/platformsupport/clipboard
Change-Id: I6e61274a2f5796a6b4ddcbbdf03c345a03e4b91a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:23:44 +00:00
Tobias Hunger f02a9c81ad CMake: Regenerate src/platformsupport/accessibility
Change-Id: Ie250afa3b4dc6c5750dd3cd15c1e83edcb7e0734
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:23:33 +00:00
Tobias Hunger 59e32c4e23 CMake: Regenerate src/platformsupport
Change-Id: I883573633dbd82ebcca9cc0dc435cd867cec24b8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:23:19 +00:00
Tobias Hunger e438747eb1 CMake: Regenerate src/concurrent
Change-Id: I888f0a3821c091180928949bd52ea70a1be69d3f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:23:08 +00:00
Tobias Hunger da02d17b5e CMake: Regenerate src/platfomheaders
Change-Id: I82d94c0f53bf3291cd26188ab6afd78493f2b92c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:22:57 +00:00
Tobias Hunger 1c310adb17 CMake: Regenerate src/opengl
Change-Id: I6a140b18f12cb048e2b113fb1cef38e224cc8417
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:22:47 +00:00
Tobias Hunger 42648ff993 CMake: Regenerate src/dbus
Change-Id: Iff9890ead883bac5f75425a2d0367e639d648399
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-05-06 14:22:36 +00:00