Commit Graph

271 Commits

Author SHA1 Message Date
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
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
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
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
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
Tobias Hunger
fbf98bf255 CMake: pro2cmake.py: Better reporting of unused keys from qmake
Change-Id: Ie1b1f446c314bb5248cc13efeae1f279b0182e04
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-18 11:38:05 +00:00
Tobias Hunger
6e16f127ad CMake: pro2cmake.py: Handle SIMD sources
Change-Id: Ib445888e769432e8c247ae2d2fb5d8af2d5cd275
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-18 11:37:47 +00:00
Tobias Hunger
42ae8218b1 CMake: configurejson2cmake.py: Fix typo
Change-Id: Ib142032577f1d84bfb2402103271db04a4bb25a1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-03-12 08:43:03 +00:00
Tobias Hunger
4b105d77c2 CMake: pro2cmake.py: Remove .qrc files!
Remove qrc files from CMake. Use add_qt_resource function instead.

Change-Id: I64cdbd9498f97d23cd8e03f34ab5ae4a52dba5af
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-11 14:52:09 +00:00
Tobias Hunger
66a4267f93 CMake: pro2cmake.py: Map libpng to PNG::PNG
Change-Id: Ia8dd20b777e24e2783bedb0f063db2189e0b7ed3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-04 09:09:04 +00:00
Tobias Hunger
a5f51e4898 CMake: pro2cmake.py: Automatically map equals(QT_ARCH, "foo") in conditions
Change-Id: I10d8001ba8330deaa622ef8c499b2b6fe438e28a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-04 09:08:57 +00:00
Tobias Hunger
363eccf010 CMake: pro2cmake.py: Handle BOOTSTRAP for add_qt_tool
Add BOOTSTRAP for tools that need it automatically.

Change-Id: I33b2ec16dfcb09709f844ed232ce9974a9d7c7ed
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-04 09:08:48 +00:00
Михаил Светкин
3c9d7dfb30 cmake: Cleanup harfbuzz features
Remove system-harfbuzz feature and use harfbuzz feature as system

Change-Id: I441345a667450f1c2d19380b0709911011c7ceb7
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-03-01 19:24:50 +00:00
Tobias Hunger
83354655b2 CMake: pro2cmake.py: Simplify code and add test for line continuation
Simplify code a bit and add a test for line continuation fixup.

Change-Id: If865bc94d7d419c65d3280b5f9613ebc0d3db74a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:08:41 +00:00
Tobias Hunger
f2e968b245 CMake: pro2cmake.py: Handle for loops without block
Handle for loops with a single line of instructions and add a test
for that.

Change-Id: I041ae30f64abcbd3db7df29933647f047b92ede3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:08:30 +00:00
Tobias Hunger
33fe56c630 CMake: pro2cmake.py: Make \$\$QT_FOO work in assignments
This broke somewhere along the way. Add a test for this.

Change-Id: I106ddff6eb86a51ef132285d1bc623f3b5cf71fb
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:08:17 +00:00
Tobias Hunger
754ba28799 CMake: pro2cmake.py: Fix parsing of Line continuation before end of file
... and add a test case for this.

Change-Id: If20d737b54ecb3f9e128e59070b238c840acad6c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:08:08 +00:00
Tobias Hunger
8512f5179d CMake: pro2cmake.py: Fix parsing of for loops
Ignore for loops in the pro2cmake.py parser and add a unit test for that.

Change-Id: I2a0c075c45cf56f4f24ada2d53e8e8e94ce19f26
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:08:00 +00:00
Tobias Hunger
04d6981702 CMake: run_pro2cmake.py: Add statistics
Change-Id: I78e65970694d0c37c4b3c3ba6e6a83155579ea0f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:07:07 +00:00
Tobias Hunger
eb832cb00a CMake: pro2cmake.py: Handle complex conditions
Change-Id: Ifb047e5736f1831ddbd65b210e760c2729378334
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:06:49 +00:00
Tobias Hunger
951e297362 CMake: pro2cmake.py: Warn and fix broken line continuation
Warn on broken line continuation in .pro-files, but fix up the issue
and proceed.

Change-Id: Ibe68011b312bcea25620ce790a0b44b2983fbd88
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-28 08:06:41 +00:00
Tobias Hunger
c971d2d359 CMake: pro2cmake.py: Handle values with () in assignments
Change-Id: I0f59c7fa57cd6c64b151f439d4eea4ae56dca288
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-27 16:03:20 +00:00
Tobias Hunger
22dc78f417 CMake: pro2cmake.py: Fix handling of TEMPLATE=subdir .pro-files
Change-Id: I52f575df199c4d9b38123ab5d838f2e85344835d
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-27 16:03:07 +00:00
Tobias Hunger
8c04d6c967 CMake: pro2cmake.py: Improve condition simplification code
Improve the code that simplifies conditions to take "OS families"
into account. E.g. if a system must be ANDROID, then it is redundant
to express that it is NOT APPLE_OSX.

Change-Id: Ib7e62726c309bf84b9e5e0d6a6e3465511db0ead
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-27 16:02:58 +00:00
Tobias Hunger
35f23a3dad CMake: pro2cmake.py: Better parsing of scopes with else
Parse conditions more exactly as before, enabling proper handling
of else scopes.

Change-Id: Icb5dcc73010be4833b2d1cbc1396191992df1ee4
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-27 16:02:45 +00:00
Tobias Hunger
b1fa25e7b8 CMake: Small unsorted fixes in preparation of upgrading to dev branch
Change-Id: Id4d03558e956c6994dc6a8b701030ba4edf86adf
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-27 16:02:29 +00:00
Mikhail Svetkin
885494c50f CMake: Fix build without double-conversion on macOS
Change-Id: I5102e93141eec95044df44884dcf6ecd1b9e8dd0
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-02-27 15:28:11 +00:00
Albert Astals Cid
31e1dda94b cmake: Give the egl_x11 test the necessary libs to compile
And add the eglfs_x11 plugin

We need to actually try to compile the test as the comment it it says
that having x11 and egl is not enough since sometimes they are actually
incompatible

Change-Id: If6bdc08c21b91fa9c41663f2fa653fd59e5ddd2e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-27 15:04:59 +00:00
Albert Astals Cid
e03596c2a7 pro2cmake: account for child .pro files having includes
Change-Id: Ic2213578c9bd27787ae9788acbe4455252a1158c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-27 15:04:48 +00:00
Albert Astals Cid
5f8e4b7cf0 cmake: add more mappings to helper.py
Change-Id: Ie5096c1fe74105db84ccd60655a20d389a887b14
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:06:49 +00:00
Albert Astals Cid
dc0870db74 pro2cmake: Target dependencies can be on -private libs
so use map_qt_library instead of map_qt_base_library

Change-Id: I4dd0097fff3ffd9ec4aad36d11d79ea23a08cb90
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:05:49 +00:00
Albert Astals Cid
db9cb61993 cmake: helper.py more mappings
Change-Id: I69a1715bbda8f5ddfb367e7c7c693e4ec412f5c3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-15 15:08:12 +00:00
Albert Astals Cid
d523a642dc cmake: enable vnc platform plugin
Change-Id: I5015681aff3c9ceb5c0b72571bc8756f3ada104c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 17:02:02 +00:00
Simon Hausmann
519ef817ff Fix Desktop GL/EGL/GLESv2 linkage
This change fixes a few things in one go:

  * cmake's FindOpenGL cannot be used reliably to detect EGL. So use a
    custom module for that.
  * Added a custom module for GLESv2 detection, as cmake's FindOpenGL
    does not support that.
  * Map CONFIG += opengl to a WrapOpenGL target, which links against
    either GLESv2 or libGL - just like mkspecs/features/*/opengl.prf
  * cmake's FindOpenGL remains in use solely to detect the availability
    of desktop gl.

Change-Id: I9315e5ad1fd88e1b7dc7e920053e98fb51fea7fc
Reviewed-by: Volker Krause <volker.krause@kdab.com>
2019-02-12 14:57:30 +00:00
Albert Astals Cid
0a14d13b30 cmake: Find and build odbc plugin
Change-Id: I479d2b1cc897f601ef68b10272c9396e52228201
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:39:50 +00:00
Albert Astals Cid
11acba6504 cmake: Find and build psql plugin
Change-Id: I8cbc8ab0061f67824d78198cbb926f0625fc7e41
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:39:33 +00:00
Albert Astals Cid
9bef044a0b cmake: Search and enable the sqlite[3] plugin
Added to QtFeature.cmake a way to be able to run feature_module begin
and end without having an actual module by passing NO_MODULE

Change-Id: Ib708bd3878e2591da193d18563c8932cc4b75e7f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 14:02:22 +00:00
Albert Astals Cid
05aeaed906 Find mtdev and use it
Change-Id: I90db48efaa6a23add770fcf69b46c4f4c84866c1
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 13:35:07 +00:00
Albert Astals Cid
92f81ebc21 configurejson2cmake.py: openssl -> OpenSSL mapping
Change-Id: I29480dfbd4f144e3d5620b43419ec46fb866cf4b
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 11:22:53 +00:00
Kai Koehne
7b434c0287 CMake: Fix build of system jpeg is not available
Change-Id: Ie7462db556d0615e74755fa4fc3b51f625aade2f
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 09:47:23 +00:00
Albert Astals Cid
443ee65d3b configurejson2cmake.py: Don't emit a fixme for C++11 config
Change-Id: I8408f6126115a0f76b0fed2cc42b54e5c148821d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:25:01 +00:00
Albert Astals Cid
cfba14e1e9 configurejson2cmake.py: Support for the two cases that have LIBS +=
Since there's only two i hardcoded it for the moment instead of trying
to parse the line

Change-Id: I0da578af64ef9621cbbc78bf6ce15bf8a3f63f1c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:24:31 +00:00
Albert Astals Cid
2e64ac90d8 cmake: also write FIXME on the configure.cmake for 'use'
Since most of the times it means we need to link with some other stuff

Change-Id: I06262d4403225bca7a5e68d47145fefcf6702e5a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:22:02 +00:00
Albert Astals Cid
f6a830095f cmake: blacklist xlib test, we can just use X11_FOUND
Change-Id: Ic733c42e11b00fa8bf107f460a0596aeb10ac37b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:21:46 +00:00
Albert Astals Cid
3882e9ea09 cmake: Find Cups and enable its plugin
Change-Id: I44bf176587331d86eb147d106f28deb0a6618ab4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:20:20 +00:00
Albert Astals Cid
71c9db7da8 cmake: Blacklist the libinput_axis_api test
We already have a cmake find module for libinput so we know it is there

Change-Id: I153544c5c13cb57b1ce258243ede17f4be9507fd
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 08:49:55 +00:00
Albert Astals Cid
ac96d08b9d cmake: find gtk3 and build the gtk3 platformtheme
Change-Id: I7db7321a2fd5ea0eda1924f3dece3b1c86d87d10
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-11 17:16:28 +00:00
Tobias Hunger
3726b58d3b CMake: pro2cmake.py: Simplify condition generation
There is no need to try and avoid extra () and NOTs: Those will be
removed by sympy later anyway.

Change-Id: I39d3e4d1d829579e532bfbbf6c69e0f1e06e9a22
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-11 17:16:20 +00:00
Albert Astals Cid
f18db41f85 cmake: Find tslib and build the tslib plugin if found
Change-Id: I7119ddf473a3ede29bbfef23cffb08a4fcbd5681
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-11 17:16:17 +00:00
Tobias Hunger
93564b3f8b CMake: pro2cmake.py: Treat ANDROID_EMBEDDED as ANDROID
Treat ANDROID_EMBEDDED as ANDROID when simplifying conditions.

Change-Id: I2cf0ea1e1a3e882e3a7b7276867dcee452866ade
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-11 17:16:08 +00:00
Tobias Hunger
fb33efd274 CMake: pro2cmake.py: Do not go into infinite loop
Do not go into an infinite loop when replacing a variable with itself.

Change-Id: I2765b1c0c567753f26ca75e0533c1d193362b456
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-11 17:15:58 +00:00
Tobias Hunger
fffc12cc34 CMake: helper.py: Map harfbuzz library
Change-Id: I71daa9acf391c70c6cba99609c1f67ca5eeaa220
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-11 17:15:47 +00:00
Tobias Hunger
b388bc7e77 CMake: pro2cmake.py: Handle equals(foo, bar) in conditions
This adds an overly simplistic mapping -- just like it does for the
rest of the qmake test functions.

Change-Id: I0c9e3b70c1c3d0c68a245706a141aa7b7cb4d8bf
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-11 10:46:29 +00:00
Tobias Hunger
35a30c7ebb CMake: pro2cmake.py: Expand qmake values in file names, etc.
Expand qmake values when dealing with source file names, include
directories and more. This handles cases where variables are used
to refer to sources (e.g. $$VERSIONTAGGING_SOURCES in corelib) as
well as things like $$QT_SOURCE_TREE and friends.

Note that $$PWD and $$OUT_PWD are still need hand-holding since they
refer to the scopes directory relative to the top level directory --
which pro2cmake.py does not know.

Change-Id: I011ef55416ff820053d5f844b3008836849f5075
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:39:36 +00:00
Tobias Hunger
199cce0c20 CMake: pro2cmake.py: Better mapping of complex conditions
.pro-files support things like contains(Foo, bar), etc.

Map that in such a way that only one identifier will be visible to
CMake to unconfuse the logic handling on that side. These conditions
will need manual fixup later!

Change-Id: Id4946e694a9adccf9f54bcce26a6c227cd921007
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:38:33 +00:00
Tobias Hunger
d796410045 CMake: pro2cmake.py: Remove some dead code
Change-Id: I8e3e7e4c4ef9747e0749734bdf875baccc4646bd
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-11 09:37:46 +00:00
Tobias Hunger
6104643db0 CMake: pro2cmake.py: Remove leading ./ in paths
Remove leading './' from paths before writing them into CMakeLists.txt.

Change-Id: I5680a3470cf491a8805b559197f94f8e6a6ce9b7
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:36:00 +00:00
Tobias Hunger
64e3c8bb19 CMake: pro2cmake: Fix handling of chained scopes with else branches
Fix handling of things like:

foo:bar:buz: {
    do something
} else: wat {
    do something else
}

The else relates to foo AND bar AND buz, not just to buz in this case.

Change-Id: I40d1fa295b4d6dd95ae5e1ce2d58372edc807b86
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:35:29 +00:00
Tobias Hunger
73f5036be5 CMake: Map dlopen feature to 'ON'
Map the dlopen feature to 'ON'. The effect is that cmake will figure
out whether or not linking to 'dl' is necessary or not.

The user-visible feature is 'library' anyway: That enables dynamic
library loading -- and will link in 'dl' as needed.

Change-Id: I0d68275a7234efba7f926150f120bb37b4a1163f
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:35:07 +00:00
Tobias Hunger
25457f29db CMake: pro2cmake.py: Add XCB and X11 libraries
Add all the XCB and X11 libraries needed for the XCB plugin.

Change-Id: I772b99c68521cd46cbba736912c8d8594d9d2ad8
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:34:44 +00:00
Tobias Hunger
e616976fdf CMake: pro2cmake.py: Small fix to type markup
Change-Id: I2f7dc94f379d51c3816649849aa7365b17334ab5
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 15:24:09 +00:00
Tobias Hunger
6dd989fe61 CMake: pro2cmake.py: Add scope debugging support
Dump scope trees for all scopes that contain a variable
'PRO2CMAKE_SCOPE_DEBUG' (set to any value).

Change-Id: If17bb1697a32ccaa427a858c2330ab2b019d0fa8
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 15:23:59 +00:00
Tobias Hunger
cfbb110abe CMake: pro2cmake.py: Assign a unique id to each scope
This makes scopes much simpler to destinguish from each other.

Change-Id: I1af42f181b5899aba749bcf9267a345385149f90
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 15:23:22 +00:00
Tobias Hunger
0efd241d20 CMake: pro2cmake.py: report total condition when dumping a scope
Show the total_condition (if set) when dumping a scope.

Change-Id: I9dfe98c2251f1d28881771042f17d723cedc8907
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 15:23:09 +00:00
Tobias Hunger
ca4edbec66 CMake: pro2cmake.py: Add a way to debug merges of scopes
Generate debug output whenever a qmake scope with a variable
'PRO2CMAKE_MERGE_DEBUG' is involved in a scope merge.

Change-Id: I0ad94b881db9930de689c199adbac084efe6c03b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 15:22:59 +00:00
Tobias Hunger
645002cd43 CMake: pro2cmake.py: Handle more libraries
Change-Id: I561b619c4dbc56a1f6ad383a68ce4b82858a031c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-01-31 13:58:07 +00:00
Tobias Hunger
e7e793555f CMake: Add FindZSTD.cmake and wire it up in configurejson2cmake.py
Zstd is used in the dev branch, so prepare for it.

Change-Id: I130d98e3888a1eb4c7444728fc5088c5dae9d911
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 13:57:24 +00:00
Tobias Hunger
1218d8a9f0 CMake: Use FindGLIB2 from cmake-extra-modules
Use FindGLIB2 from cmake-extra-modules over hand-rolled own version.

Change-Id: I1f8e055bc12dd728c033fd88480690643d90159a
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-31 13:56:55 +00:00
Tobias Hunger
210762ae46 CMake: pro2cmake.py: Pass QMAKE_MOC_OPTIONS on to CMake
Change-Id: I39c1b0aedbffaa29a34253e0c1c4bb4a4dddbe98
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-01-31 10:02:40 +00:00
Tobias Hunger
4d4bf61f9f CMake: pro2cmake.py: Convert more settings from .pro-file to CMake
Convert QMAKE_USE, QMAKE_CXX_FLAGS and QMAKE_LFLAGS into CMake.

Change-Id: I53a5b91664b6ab71892d4381c00f8d744d7d7abd
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-01-31 10:02:24 +00:00
Tobias Hunger
194022d3a6 CMake: pro2cmake.py: Use properties
Make use of @property to make code a bit nicer.

Change-Id: Iff0bfed57874cf13b7e5f85acde2660a397933d7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-31 08:49:14 +00:00
Tobias Hunger
328de7aab9 CMake: pro2cmake: default QT_FEATURE_system_* to "ON"
Qt 6 will use external libraries for everything, so
default all QT_FEATURE_system_foo to "ON".

Change-Id: I884a4293c64487271be08de5fab82e6858d0a2ed
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-31 08:48:55 +00:00
Tobias Hunger
9cee04ac94 CMake: pro2cmake.py: Merge more scopes
* Remove scopes with condition 'OFF'
* Merge scopes with identical conditions

This e.g. merges children with a condition that simplifies to
'ON' with their parent scope.

Change-Id: Ieb3d60e1234f189ac45869853555ca8c0cfb5c76
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-31 08:48:32 +00:00
Tobias Hunger
b6408318de CMake: configure2cmake.py: Handle Libproxy and corewlan
Update to cover more libraries

Change-Id: I32a26b0fa0a79531fcb55e7a4646a2e63fec1d5b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-30 16:27:56 +00:00
Tobias Hunger
0c43850687 CMake: pro2cmake.py: Better printing of scopes
Change-Id: Ibeb77a23c90d3a47c78d17c4683e4af3c64449fc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:29:46 +00:00
Tobias Hunger
4a2562e5db CMake: pro2cmake.py: Simplify conditions
Use pysym to simplify conditions in extend_target.

Do some manual changes to the condition based on domain knowledge.

Change-Id: I7fbb9ebc93b620a483c6a3a796d84c9bc0e36ef7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:29:38 +00:00
Tobias Hunger
2cdef0f527 CMake: pro2cmake.py: More mappings!
Add some more mappings from qmake to CMake equivalents conditions.

Change-Id: I57b7bea9d6628e1c2b8d6ae88f799219942b571e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:01:36 +00:00
Tobias Hunger
aee1d1e96b CMake: pro2cmake.py: Work on mapping of conditions to cmake
Make sure complex things in qmake (e.g. function calls, etc.) are
mapped better to cmake. When there is no way to properly map the
qmake construct, then make sure to map everything into one
identifier.

This is to keep the structure of the condition simple.

Change-Id: I6d88e0cb85fce1041bbfdc96604dab7bd4e65856
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:01:26 +00:00
Tobias Hunger
404d0b5975 CMake: pro2cmake.py: Resolve file names for RESOURCES
Change-Id: I821cdc88c7f45260997e118ab2abfd7ba6526b75
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:01:16 +00:00
Tobias Hunger
0a9e5e139a CMake: pro2cmake.py: Fix handling of complex else branches
Return the current scope's condition, not the total condition from
recursive_evaluate_scope. That is the part the "else" referrs to.

The parent_condition stays identical for all branches, so that should
not get negated.

Change-Id: I0da91483d4d748d01a29ac16890d709d8d659843
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:01:07 +00:00
Tobias Hunger
0e2762651c CMake: pro2cmake.py: merge extend_targets with identical conditions
This should somewhat simplify the generated CMakeLists.txt files,
especially in complex cases like corelib or network.

Change-Id: I208c8f99a64cbb6c97d51dd3ae428bb234982202
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:00:56 +00:00
Tobias Hunger
1c1bb53c55 CMake: pro2cmake.py: Fix pyls warnings
Fix pyls warnings in pro2cmake.py as well as its tests.

Change-Id: Ib8ee1daa9b97735d13c0fde43616daa46de9e171
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-29 09:00:45 +00:00
Tobias Hunger
0690c145db CMake: pro2cmake.py: Better output in debug dumps
Report more error conditions in debug dump and make the output
easier to read in the non-error case by wrapping all strings in
"".

Change-Id: I3c99deda3dfa27dcc0c9ce2800bfb891747e6934
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 15:41:44 +00:00
Tobias Hunger
2f50466995 CMake: pro2cmake.py: Give up on faithful representation of -=, +=, *= and =
Having a good representation is nice, but unfortunately very hard: pro2cmake.py
sees just a small part of the entire qmake build system at a time, so the information
it has is incomplete to start with. It is not worthwhile to pass the supposedly full
information around -- which will then need to get de-duplicated again -- considering
that the information is not complete in the first place.

So go back to the simplistic approach we used earsier. That is good enough and does not
suffer from the problem of having multi-part arguments getting messed up when the
scopes get de-duplicated.

Change-Id: I553329650d6b8046f7ad8b1282e3d0c961293a28
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 15:41:34 +00:00
Tobias Hunger
024edf4bfd CMake: pro2cmake.py: Report keys that were not converted in each scope
This makes it easier to see what is still missing.

Change-Id: I186abd609f20be680ac0943ac89068f764142a79
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 15:41:24 +00:00
Tobias Hunger
6ad9352544 CMake: pro2cmake.py: Do not print trailing / in directory names
Change-Id: I3da83b8908791e033cf33221631d2fe988f83957
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 15:41:13 +00:00
Tobias Hunger
29ff5f77ee CMake: pro2cmake.py: Do not double-report include files
Do not add scopes that are going to get merged into their parent scope
as a child of the parent scope. This leads to the information of the
child scope being duplicated.

Change-Id: If4d6a83b9c9eac477959e7774e9cf65fd4df98e6
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 12:06:22 +00:00
Tobias Hunger
cc593426eb CMake: pro2cmake.py: Better indentation in debug dump
Indent the individual parts of a scope relative to the scope itself.
This makes things a bit more readable.

Change-Id: Iffbffd69bc960118f9657a1b7fb488da3c7b48dd
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 12:02:35 +00:00
Tobias Hunger
6e9a2dd3c6 CMake: pro2cmake.py: Visit scopes depth-first for include resolution
This avoids some includes being done several times: We used to generate
scopes for the include files, add them to our current scope and then
traverse the children of the current scope.

Switch the order to avoid traversing the newly added scopes twice.

Change-Id: Icb9c53c9f54772d3305e0fb121824c23d5469e09
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 11:53:01 +00:00
Tobias Hunger
3f3517923e CMake: pro2cmake.py: Ignore 3rdparty code that gets included
Ignore include files that go into 3rdparty code. Qt 6 should work
with external libraries, so there is no need to drag in 3rdparty
include directories, etc.

Change-Id: I990f3a8a4983e1458843b4122420b9daec763ccb
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 11:52:44 +00:00
Tobias Hunger
23e3aaf2cd CMake: pro2cmake.py: Nicer printing of conditions
Do not needlessly add () and NOT all over the conditions.

Change-Id: If907357306eb3f8ab5b2878bcad5902171a90476
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-01-23 11:52:25 +00:00
Tobias Hunger
e5bee37762 CMake: pro2cmake.py: Improve debugging dump
Make the output of the project structure debug dump more readable.

Change-Id: Ib80b41f7fdb8e14ff878284c46f3760d84f4f004
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-18 08:52:58 +00:00
Tobias Hunger
1d7e724e39 CMake: pro2cmake: Fix printing of the different operations
Change-Id: Ieb33141601c29ec2f3c30c6725179f1fb234e53a
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-18 08:52:42 +00:00
Tobias Hunger
d73b06fc35 CMake: pro2cmake.py: Fix merging of scopes
Set new keys in the parent scope instead of just appending to existing
scopes.

Change-Id: I901c3f418429d8aed56acb39b1dbe566c5468920
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-18 08:52:33 +00:00
Tobias Hunger
db3cc89185 CMake: Fix include path handling in pro2cmake.py
Change-Id: Ice9db97db5bf1fb347bff07bcaf91daac87fa983
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-18 08:50:59 +00:00
Tobias Hunger
9162aa5da9 CMake: pro2cmake: fix include file handling
Do not include the same file over and over again...

Change-Id: Ia0748b9ebe58388549ba23ec7e24ce3d9b738987
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-18 08:50:40 +00:00
Tobias Hunger
6a1ee4de07 CMake: Store Qt features in CMake Cache
This is less self-contained than what we have, but significantly speeds
up cmake configure/generate runs.

This patch also warns when a feature is already defined.

Change-Id: I8cab63e208ba98756b47d362a39b462f5ec55e20
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-17 16:16:55 +00:00
Tobias Hunger
54d372ea67 pro2cmake: Clean up linter and pypi issues
Also remove one stray line of debug output

Change-Id: If3d2e0b31e5e1b1c05c321d63e8762b23f55bb66
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-01-07 09:37:43 +00:00
Tobias Hunger
19874e2381 pro2cmake: Be more faithful in the representation of operations
Do a better approximation of =, +=, *= and -=.

Change-Id: I94765532f278deaac330b27cd5a3f41f319c6477
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-12-21 10:24:12 +00:00
Tobias Hunger
f0aa8fa48e pro2cmake: Handle VPATH
Change-Id: Ia72f55489129c50ca730c42b75bbc2bda926b82f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-12-21 10:24:01 +00:00
Tobias Hunger
3acebfe6eb CMake: Add support to find LTTng-ust
CMake comes with a Find module for this, so use it in src/corelib/configure.cmake

Change-Id: I8f4abcb32fb10513d67c3c959310eefaf7b56d3d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:25:15 +00:00
Tobias Hunger
eb2ece3c59 CMake: Add FindSlog2
Add FindSlog2 and use it in src/corelib/configure.cmake.

Change-Id: I7e6a696a49df568a41ed1224228ab608db2dbb0e
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:24:55 +00:00
Tobias Hunger
38f1a10b6f CMake: Improve handling of the different kinds of iconv
Improve conditions/enable/disable conditions for iconv related features.

These are detected a bit different from what qmake does, so adapt to that.

Change-Id: I7b3e4baf05dc324507f370d7f651a62f29e42a98
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:24:35 +00:00
Tobias Hunger
e11522726b CMake: Add FindPPS and use it in src/corelib/configure.cmake
Find the PPS library and use the result PPS_FOUND in configure.cmake where
needed.

Change-Id: I08d3ace421278dc0ae5c3128d4234e6bca906c05
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:24:17 +00:00
Tobias Hunger
bebbb41030 CMake: Find librt
Change-Id: Ibc39ba7a385146cd0428b78e12a793f0ddbfae91
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:24:07 +00:00
Tobias Hunger
df2975236d CMake: Replace QT_FEATURE_shared with BUILD_SHARED_LIBS
Change-Id: I7f3efde01a98cd6a25de661624afbf7eda2c57af
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:23:52 +00:00
Tobias Hunger
89368f5b26 configurejson2cmake: Add generic feature mapping
Add a way to map individual parts of a feature to new values and use
that also to skip features.

Change-Id: Ibddfcbbf9dfac29d460922e991934997b3e8387b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2018-11-06 15:23:16 +00:00
Tobias Hunger
4769830034 pro2cmake.py: Do not try to add libraries that qmake substracts
Add a comment that a library was removed when running into "QT -= gui"
and similar lines.

Change-Id: I17b7922827f228c6b45e1e6867fdc5e316af3781
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 15:45:39 +00:00
Tobias Hunger
da7811dc75 pro2cmake: Explicitly handle for loops
Handle for loops by ignoring them:-)

Change-Id: If4716e0615f4a0fa982281b94dbd4f70ae868fd8
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 14:58:38 +00:00
Tobias Hunger
ead9c0b1b8 pro2cmake: Handle Statements before Scopes
This fixes among other things the unit tests.

Change-Id: If9e23735d1d52cf49dc1f03749129fd726e8dea5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 14:58:12 +00:00
Tobias Hunger
187c466d9a pro2cmake.py: Improve debugging off included files
Change-Id: I1007a5134a3d3e9ca7e5d3cd9b23ad64f76602be
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 14:57:48 +00:00
Tobias Hunger
41eabf01c4 pro2cmake.py: Make handling of TEMPLATE more robust
Change-Id: I43b6dac3984b66585408c9fb91ae28c5b134fe40
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 14:57:40 +00:00
Tobias Hunger
96ddd79b03 CMake: Handle '-' better in pro2cmake
Do not fail on tests/benchmarks/benchmark.pro.

Change-Id: I0ffdf9d38ea6fa73856f33d44c5a428c9cab9107
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 14:56:23 +00:00
Tobias Hunger
f3cf1a6856 CMake: Improve handling of qtHaveModule in pro2cmake script
Map "qtHaveModule(foo)" in qmake to "TARGET Qt::Foo" in cmake.

Change-Id: I63c251f0f2dfd2e95adc996a83b528e9b4e9636e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-05 14:55:59 +00:00
Tobias Hunger
b102b41be7 Add ATSPI2 library support
Change-Id: I304ba2b9df65008340b698eb3a74dc3b4abfb826
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-01 11:49:38 +00:00
Tobias Hunger
6ae0821a09 configurejson2cmake: Sort library map
Change-Id: Ifb8aa5f1583592a9eb71a93973f17d9714628953
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-11-01 11:49:03 +00:00
Simon Hausmann
e9c45bbddd Begin port of qtbase to CMake
Done-by: Alexandru Croitor <alexandru.croitor@qt.io>
Done-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Done-by: Kevin Funk <kevin.funk@kdab.com>
Done-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Done-by: Simon Hausmann <simon.hausmann@qt.io>
Done-by: Tobias Hunger <tobias.hunger@qt.io>
Done-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Done-by: Volker Krause <volker.krause@kdab.com>
Change-Id: Ida4f8bd190f9a4849a1af7b5b7981337a5df5310
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
2018-11-01 11:48:46 +00:00