Commit Graph

38017 Commits

Author SHA1 Message Date
Tobias Hunger
828f2965e7 CMake: pro2cmake.py: deduplicate and sort libraries
Change-Id: I924cfac365a0b4ba18c2579820bc37729f1ea8d9
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-03-29 14:06:41 +00:00
Tobias Hunger
feeae8e27f CMake: Re-generate platformsupport/linuxaccessibility
Change-Id: I1737fbfbdb3a139a9296cc0b446014b3aaa583a1
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:17:22 +00:00
Tobias Hunger
71125665cf CMake: Re-generate platformsupport/accessibility
Change-Id: I3d29bc6db570d918dee5925ac370c4dd2cc16aa8
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:17:03 +00:00
Tobias Hunger
dc0b1dc67c CMake: Re-generate platformsupport/input
Change-Id: I4f3c4d6d0db2cb8d5a4cb2b71a7d7e08f043b88c
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:16:53 +00:00
Tobias Hunger
fdb480c8e3 CMake: Re-generate platformsupport/services
Change-Id: Ibe7d56e81640a41e093cf4936207fa96fd61a4f9
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:16:21 +00:00
Tobias Hunger
43ff4aa5b8 CMake: Re-generate platformsupport/fbconvenience
Change-Id: I8cf1ac15e38529117346fdd17f29fb1e6be20a68
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:16:03 +00:00
Tobias Hunger
143c3e6ea1 CMake: Re-generate platformsupport/devicediscovery
Change-Id: I817532202f070120498894b0b1dd9d92fc4e1bfa
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:15:53 +00:00
Tobias Hunger
63389cad18 CMake: Re-generate platformsupport/eventdispatcher
Change-Id: Ib2c502cc4f2e7b91304ec4d0b4f1702327890dfb
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:15:36 +00:00
Tobias Hunger
8d4a15c68f CMake: Re-generate platformsupport/edid
Change-Id: Ib043c387a67b0a05448fe5a9bf0ef6adbbfd369f
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:15:22 +00:00
Tobias Hunger
337c06b1d8 CMake: Re-generate platformsupport/themes
Change-Id: I5310b5a399bf8078193b2218aebc07096446e83f
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 10:15:14 +00:00
Tobias Hunger
8533e3d9e7 CMake: Remove 3rdparty/kwin/FindFontconfig.cmake
The one shipped with cmake is more modern:-)

Change-Id: I024769825467734ff1527e91df4cf5dfc38cbe68
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 09:33:56 +00:00
Tobias Hunger
0c5b63207b CMake: Map atspi2 to PkgConfig::ATSPI2
Change-Id: Ifd21eb278e06a6166ab87106c442d8ec94d92dc5
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 09:33:30 +00:00
Tobias Hunger
2268d171cd CMake: Map tslib, mtdev, libinput and xkbcommen_evdev
Change-Id: If144a8969904b63a3de3884370baaeca1cb4242a
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 09:33:05 +00:00
Tobias Hunger
2b5e3590ca CMake: Map fontconfig to Fontconfig::Fontconfig
Change-Id: I2761ef23cffefbee57da6bb1a07d06b2232d1c57
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 09:32:50 +00:00
Tobias Hunger
f375876d1a CMake: Map libudev to PkgConfig::Libudev
Change-Id: Iac5d0fbf336f0c3905a3dca20524f90432227cf4
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-03-29 09:32:34 +00:00
Jędrzej Nowacki
a697df786d Fix exception when parsing tests.pro
The ParseResults may be a nested list of list. Now the code doesn't
raise exceptions, but it fails in do_include as includes that doesn't
provide resolved path will fail. Anyway step in the right direction.

Change-Id: Ice44e4c10d221293cc6c1facca30abd5495791be
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-28 13:18:25 +00:00
Jędrzej Nowacki
ce9a143467 Do not overwrite CMakeLists.txt when running run_pro2cmake
One directory may contain many pro files. The generator was happily
generating the same CMakeLists.txt for all of them (overwriting).

This patch implements a different logic. It tries to find the main
pro file and skips others assuming that somehow implicitly they will
be incorporated (for example through SUBDIRS).

Change-Id: Ie07d75e900a96dd48bf981a896c9dfb920f39a23
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-28 12:29:44 +00:00
Jędrzej Nowacki
601c840973 Do not validate file existence if path contains variables
We do not need to validate everything, while converting project
files. Some checks can be left to building step.

It fixes some false positive NOTFOUND errors.

Change-Id: I81ff2421fdea13add0bfc03086152a47bce39908
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-28 09:29:06 +00:00
Jędrzej Nowacki
89f34ee42a Fix turned logic in RemoveOperation
It is regression caused by a0a94576fa
("Fix RemoveOperation").

Add unit test for all operation types to make sure this code actually
works:-)

Change-Id: I97c94cb3411f05de89422e3fa2222f2217a09e49
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-28 06:30:32 +00:00
Alexandru Croitor
8fa9a987ea Install test executables into $prefix/tests instead of $prefix/bin
The install path takes into account the path structure of the source
directory, so that not all tests are bunched up into /tests, but
rather /tests/auto/foo/bar.

Change-Id: I5e32d2e41ae8f095f4eac6654973508efd598df0
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-27 16:58:44 +00:00
Tobias Hunger
7406c124cb CMake: Set QT_STATICPLUGIN for static plugins
Change-Id: I5439935b5db2babd47cdc85647e464fe845279cf
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-27 14:35:56 +00:00
Tobias Hunger
72404ef3e1 CMake: allow custom plugin output/install directories
Only require TYPE if no OUTPUT_DIRECTORY, ARCHIVE_INSTALL_DIRECTORY
and INSTALL_DIRECTORY is provided.

Change-Id: I6db1cfaa576bfa3ee3dc8ecf81db20e3afcd61e2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-27 14:35:46 +00:00
Tobias Hunger
9ba702bea9 CMake: Re-generate widgets
Change-Id: I3722092aaf4ff5d131223057d73f9cbb82982a98
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-27 14:20:15 +00:00
Tobias Hunger
aa50b377a7 CMake: Add widgets examples
Change-Id: Ib6142b93df066e3658eb189b50ca74c455fe7e56
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-26 15:25:39 +00:00
Tobias Hunger
05ebd62f09 .gitignore: Do not ignore stuff in examples for the time being
Change-Id: Iccf61b6613c4cd82a10051eac448711400a27ea1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-26 13:03:20 +00:00
Tobias Hunger
64c6c943c7 CMake: Add more examples
Change-Id: I7a8a3fd0a844a518592957fe07c6e707dd452d5f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-26 13:03:01 +00:00
Jędrzej Nowacki
a0a94576fa Fix RemoveOperation
The operation was using an empty set as a base, so it was not really
functional.

Change-Id: I98fd80c1ede31994857aa1f0c8947ca7b9f76649
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2019-03-26 11:14:32 +00:00
Jędrzej Nowacki
eb3d73ffb7 Speedup run_pro2cmake
We can use all cores. Sadly it doesn't balance cores well as
corelib.pro takes most of the time anyway, but the speedup is
visible from ~15 to 5 min.

Change-Id: Id8209c58491b38d19c6e9f1163d366c3e33a182c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-26 11:10:10 +00:00
Alexandru Croitor
890ddd2540 Fix AUTOMOC and friends to run only once the tools are built
While building on macOS, AUTOMOC sometimes hanged indefinitely.
The problem was that AUTOMOC was executed for the qmacstyle
plugin before moc was actually built.

Because of an upstream bug in CMake, AUTOMOC was caught in a deadlock
without reporting that spawning the moc process failed. Specifically
if a libuv spawn() call failed, the condition variable for a waiting
thread was not notified, and the thread kept waiting forever for the
process launch to finish.

Fix the dependency by setting the AUTOGEN_TARGET_DEPENDS property
on all targets that have AUTOGEN tools enabled. This makes sure that
moc and friends are built before they are used.

Also add some special cases to disable autogen tools on certain targets
to break cycles between targets.

Fixes: QTBUG-74636
Change-Id: I6e689e63cba1962525f169f332a58498d173c0a6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
2019-03-22 14:40:48 +00:00
Alexandru Croitor
5fd30d0a18 Revert "Fix wrong target in qt_feature_module_begin"
It broke builds because the qconfig.h file was created in the wrong
directory.

This reverts commit 25f67fbb07.

Change-Id: Ia458ef4193a3985a9ba613d82f679b7df5ca0107
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-03-22 14:40:38 +00:00
Alexandru Croitor
8158a8767c Temporarily disable the opengles2 feature on WIN32
The feature used to be implicitly enabled because qt source ships with
ANGLE sources, and thus ANGLE could always be built. Yet because the
CMake port of ANGLE is not done yet, and because the feature is
implicitly enabled, the build failed when trying to find GLES headers.

To provide a nicer out-of-the-box configuring of the Windows build,
disable the opengles2 feature on Windows, to default to a desktop GL
build. It can be re-enabled once (if) ANGLE porting is done.

After this change, you shouldn't need to pass any additional custom
FEATURE_foo options to cmake to build qtbase on Windows.

Change-Id: I94c96d8ef70cf671d2ce0198311f70b55fa642b1
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-21 21:51:22 +00:00
Alexandru Croitor
9281abb1bc Fix windows build after gui regeneration
- vulkan/nolink is not a valid target, instead pass along vulkan
  include directories to consuming targets, and don't link to the
  library at all
- fix vulkan support target name in the windows qpa dependencies
- the wrong opengl dynamic feature was used in the windows qpa
  (the current way is consistent with qmake, otherwise
  there were issues with the feature evaluation, because
  gui feature definitions are not available in the qpa
  project scope)
- fix issue with qfloat16_f16c not being built because
  of previous subarch issues

Change-Id: Ia75fc76a71e516fe8718027063fe554657d4d47b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-21 21:51:09 +00:00
Alexandru Croitor
92ab6c2108 Add MSVC specific instruction set compiler flags
This is only a half solution, because some of them need to be set
based on the detected MSVC version and Windows kit, similar to
how it's done by qmake.

Change-Id: Ice13c99d6fe0a033ddfebf9d4be924dcd6b8a36c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-21 17:47:09 +00:00
Alexandru Croitor
ba7c62eed5 Fix sub-architecture (instruction sets / SIMD) handling
In qmake there are at least 2 things to know regarding
sub-architectures and instruction sets.

Which instruction sets does the compiler know to compile for,
represented by the various config.tests and features in
qtbase/configure.json.

And which instructions sets are enabled by the compiler by default,
represented by the configure.json "architecture" test and accessed
via QT_CPU_FEATURES.$$arch qmake argument.

Before this patch there was some mishandling of the above concepts
in CMake code.

The former can now be checked in CMake with via TEST_subarch_foo and
QT_FEATURE_foo (where foo is sse2, etc).

The latter can now be checked by
TEST_arch_${TEST_architecture_arch}_subarch_foo
(where foo is sse2, etc and the main arch is dynamyicall evaluated).

The configurejson2cmake script was adjusted to take care of the above
changes, and the cmake files were regenerated as well.

Change-Id: Ifbf558242e320cafae50da388eee56fa5de2a50c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-21 17:47:01 +00:00
Alexandru Croitor
25f67fbb07 Fix wrong target in qt_feature_module_begin
Presumably this was a copy paste that was not intended.

Change-Id: I09e3bb12b3b3f7af75726d7a952d79814ea9c876
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-21 12:41:24 +00:00
Alexandru Croitor
a9c379199d Fix internal features to also be evaluated
This amends 4f1a155909 and
37b154858f which caused the regeneration
of some json features to be internal. Some of those features were
not evaluated any more unless they were referenced in another feature.

Make sure to explicitly evaluate all internal features as well.

Change-Id: I4367f309585fe29dc89d8a6b793de381956ae51d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-21 10:29:38 +00:00
Tobias Hunger
432f7232e3 CMake: Add public dependency from Qt::Dbus to Qt::Core
Anything that uses Qt::Dbus also needs to link to Qt::Core, so encode
that in the target.

Change-Id: Ibc984d5b5e118aae8d1c0d21117fcff1664b0ae3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 12:29:53 +00:00
Tobias Hunger
dedc645510 CMake: Make add_qt_executable link to Qt::Core by default
Make add_qt_executable link to Qt::Core by default. Add a BOOTSTRAP
flag to disable this behavior again.

Pass BOOTSTRAP on from add_qt_tool to add_qt_executable.

Change-Id: I26e7f1e03254122f626b3765cccc0dc4414a4fc0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 12:29:50 +00:00
Tobias Hunger
485e96c4ee CMake: Handle INSTALL_DIRECTORY for qt_executables
Allow to override the install directory for Qt executables.

Change-Id: I9561976eefe9c7b573bb97ddaaa39e30d3b6d9fb
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 11:55:19 +00:00
Tobias Hunger
4f736db08c CMake: Re-generate gui
Change-Id: Ia14d61ba0f2fa346090ebbb2cd179ba5b38e3056
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:47:10 +00:00
Tobias Hunger
cb7a3aaa4c CMake: pro2cmake.py: Report more qmake variables as used
Report some more qmake variables as used when they are used to decide
which kind of target to write.

Change-Id: Id2602bb8cc07130456c04c53148acb73f21b0f21
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:45:14 +00:00
Tobias Hunger
88549c2855 CMake: pro2cmake.py: Handle "target.path" and "INSTALLS = target"
Add installation location information into CMakeLists.txt files if
available in CMake.

Change-Id: I498deac71b1cc33c7d30790e32da236afdcb23af
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:45:04 +00:00
Tobias Hunger
347261aaf6 CMake: pro2cmake.py: Handle DBUS_*S
Handle DBUS_ADAPTORS and DBUS_INTERFACES and turn them into
equivalent CMake statements.

Change-Id: Ia8a69e7ab97d9f18df93097a6e2c7c1686cb16a3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:44:46 +00:00
Tobias Hunger
d84a2b8274 CMake: pro2cmake.py: Fix typo
Change-Id: I5eebe64f825ab28a67093b1a2cef417ed0908ec0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:44:33 +00:00
Tobias Hunger
74aa6abac6 CMake: Fix names for generated DBus adaptor/interface files
Use the same names for DBus adaptor/interface files that are also
used by qmake. E.g. io.qt.something.xml will be turned into
something_interface.(cpp|h) or something_adaptor.(cpp|h).

Change-Id: I799b8aee7addd1fe590e8f3ec078e5325b68d5b1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:44:19 +00:00
Tobias Hunger
b173f0b905 CMake: Treat OUTPUT_DIRECTORY as relative to top level build directory
Treat a relative path in OUTPUT_DIRECTORY as relative to the top level
build directory, not to the current build directory.

Change-Id: I4d409d1362a8f73d13b93cf5ab98e82e60dd62cb
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-20 10:38:32 +00:00
Alexandru Croitor
a9af99c926 Add windows platform plugin and its requirements
- executed pro2cmake script on windows qpa plugin
- added windowsuiautomation platformsupport project
- fixed plugin dlls and lib files to be written to the same path
- fixed an issue comErrorString which used implicit casting
  from QString to char*, but plugins are currently built
  with QT_NO_CAST_TO_ASCII

Task-number: QTBUG-74140
Change-Id: I5db3b6c5264bbd5dfba2998b049fda36eb312c70
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-18 15:35:07 +00:00
Alexandru Croitor
3f03917b54 Fix Windows build
- Fix qmake build
- Fix QtNetwork moc-ing, by including the moc files
  inside the cpp files
- Fix sql odbc plugin by including QT_PLUGIN define
- Fix Boostrap to link against the Platform target, to get the
  correct Unicode and WIN64 defines.
- Fix vulkan headers to be found
- Fix freetype bzip and png unresolved symbols / linker issues
  when building minimal platform plugin (also need to make
  sure to use the vcpkg toolchain instead of CMAKE_PREFIX_PATH
  because then find_package is overridden, which does magic
  to properly propagate static library dependencies).
- Fix qfilesystementry test not to be built without private
  tests feature (it led to undefined symbols issues).
- Make sure to remove QT_NO_CAST_TO_ASCII define when building
  QtCore, so that the qstringbuilder3 test builds
  successfully.

Task-number: QTBUG-74140
Change-Id: I353d08392b604d55f8e62cdd8696d1e19a3c084a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-18 15:34:52 +00:00
Alexandru Croitor
4f1a155909 Regenerate cmake files from configure.json files
The new files represent the json features more closely.
This helps with various build issues as well, like dynamicgl
feature not being present before.

Change-Id: I433592f48e0550700226a635492a3ce15af743c1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-18 15:34:43 +00:00
Alexandru Croitor
37b154858f Improve configurejson2cmake feature output generation
There were a few cases of feature outputs that were handled
incorrectly before this change, specifically:
- publicFeatures and privateFeatures with custom names
- privateFeatures that also ended up writing defines into
  public headers
- publicFeatures that ended up in private headers
- internal features (that should have no QT_FEATURE_foo
  defines) that were still written to either public or
  private headers

The change takes care of all those cases by keeping a map
of which features need to be written along with any visibility
specifications, as well as custom name changes.

Change-Id: I37baeaeacdfe4935128a392c72ca71b5c3ca1c8d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-18 15:34:33 +00:00