Commit Graph

38017 Commits

Author SHA1 Message Date
Albert Astals Cid
a25f9a1507 cmake: Start adding compiler flags
Only has warnings for now

Next to come is the support for developer-build and enabling Werror

Change-Id: I8070dc06eb439c2a03007cce975c8147ff7e1582
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-21 13:51:19 +00:00
Albert Astals Cid
632d014afd cmake: set a CMAKE_BUILD_TYPE if none was specified
Because the default "empty" CMAKE_BUILD_TYPE is a weird default

Change-Id: I5768f67aa85dce4108e421d2f4eacdfb1cb5beb0
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-21 13:51:05 +00:00
Liang Qi
b88110a3d7 cmake: fix a syntax for else
This amends d885226544.

Change-Id: Ia7b2fb6e0e762c73d3c0775cdd106c1dec646ab2
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-21 11:04:38 +00:00
Simon Hausmann
d885226544 Fix ELF interpreter detection
Use the same approach as with qmake, by using readelf -l /bin/ls and
then a regular expression to extract the program interpreter path. It's
a little simpler in cmake because we can avoid the perl dance and quotes
and just use cmake's built-in regular expression matching.

This change also excludes static builds, as with qmake.

Change-Id: I699e166c4b38b3fe98e6390316206109ad6363f9
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-20 11:14:59 +00:00
Simon Hausmann
22bd8576cb Update FindEGL.cmake from upstream
Upstream commit 7c64db9568296e1caafcfd7163cea3ab1b1626ae fixed the
suffix path checking and thus the build on FreeBSD.

Change-Id: I0cceeac0639c2899c617ffd6359098d2154acf5b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-20 09:33:28 +00:00
Simon Hausmann
d61b6ea30a Add support for building conveniently with ccache
Pass -DQT_USE_CCACHE=ON to enable the use of ccache. This avoids having
to set up symlinks, which is useful when cross-compiling against
different targets.

Change-Id: I023fff105baaa538730997948aa122d2678887ce
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-19 08:59:12 +00:00
Simon Hausmann
c604a1265a Fix use of uic when cross-compiling
Don't try to build uic but instead import it. This is done centrally now
in add_qt_tool.

Change-Id: I241fbb924de68549e9c0320e157351bd7b1bf5c3
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-19 08:45:35 +00:00
Simon Hausmann
b2f03791c1 Provide some basic instructions for cross-compiling and using CCache
Change-Id: I8bb90746d0cef2ea61a5494ef358713d732dcfce
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-19 08:45:19 +00:00
Simon Hausmann
ec410d31cd Fix source file name on Android
Change-Id: I0814cb02ef7205bb5d197ea0e5cc7e26a8bc15eb
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-18 16:43:41 +00:00
Simon Hausmann
0b13578dcb Skip the qmake build when cross-compiling
Change-Id: I24da7eb9587235aa937a984e91a833284b4f28e5
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-18 16:19:10 +00:00
Albert Astals Cid
af7fe32ebd cmake: build eglfs_emu
Change-Id: I793865f55114d08c342477f4e786d1089239ace4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:42 +00:00
Albert Astals Cid
df17678ab1 cmake: build eglfs_kms_egldevice
Change-Id: Ib224140d64efdc9c7190add7b568484313ecd7a3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:28 +00:00
Albert Astals Cid
d03b915c20 cmake: build eglfs_kms plugin
Change-Id: I362c17a67c2cb4c243c39f760c598bfc7e1071bd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:18 +00:00
Albert Astals Cid
b56d9916d9 cmake: build eglfs_kms_support
Change-Id: I0c1cca14756519f60f71143150e56380fa3a6289
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:08 +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
697f358466 cmake: add deviceintegration/CMakeLists.txt
Change-Id: I2b30c27bb4f17f40143a66e89b3d5986375a76a6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:06:36 +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
a9d3baa9f4 cmake: Add the eglfs platform plugin
Change-Id: I1caef781db690a3c25e871947c11175cde5cc97b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-15 15:08:29 +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
Kevin Funk
d37fd195a2 cmake: Compile qobject.cpp with same flags as Core
Makes sure qobject.cpp.o also sees -DQT_BUILD_CORE_LIB

Change-Id: I2aaf1cec62eeab07bbec6e4135bbe144d4ae7fba
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-15 09:31:33 +00:00
Liang Qi
2bdb808929 cmake: printsupport depends on core, gui and widgets
Change-Id: Ifd1f8c23eca3daa788f814b450ad326f6415212f
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-14 11:16:18 +00:00
Kevin Funk
cf7426e8c9 cmake: Make sure to finddeps of private target
Public interface libraries of the private target need to be first looked
up via `find_dependency(...)` in the CMake config files as well.

This patch is just changing the foreach() loop and defer the package
config file generation.

Change-Id: Iecaf7f778379b526f12ac6a42e76d714d9349b2c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-14 07:39:21 +00:00
Kevin Funk
0896e203d6 cmake: Make sure QT_SYNCQT is persisted
Lifetime of the variable is bound to the function body. Use a CACHE
variable to escape it (and to speed up future calls to the function).

Change-Id: I2d164a1c94e64cc652e65c1eea0522f3d911ad82
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-14 07:38:50 +00:00
Kevin Funk
b2337e1d00 cmake: Make sure QtModuleConfig.cmake.in is found
... when QtBuild.cmake is being included from another Qt module

Change-Id: Ia55e03422cc84a56dd9eac640621e5b2ee9681bd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-14 07:38:47 +00:00
Kevin Funk
766701a9b2 cmake: Install all necessary .cmake files
... for other modules

Change-Id: Iea184036a46816e524de247e1d650ae417de294c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-14 07:38:45 +00:00
Kevin Funk
e1a750a102 cmake: Minor fix in QtModuleConfig.cmake.in
Change-Id: Ia01e935582b5291fa8ed6bf46866fbb74d41f4b0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-14 07:38:40 +00:00
Kevin Funk
f0d6fd6b95 cmake: Also use -Wl,--no-undefined for Clang
Change-Id: Ida6bf41e496a0e800f1146d15edf192d0635a3c9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-13 11:48:02 +00:00
Kevin Funk
35a17f1941 cmake: src/printsupport: Rerun conversion script
Change-Id: I0bdc4eefa5e1e78ba7f68da5848e32297c6af5a1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-13 11:46:44 +00:00
Kevin Funk
4c51273f1f cmake: Build qmake using CMake
Change-Id: Ia2ad09774252154d19d7c80abfcd72ecd09025ae
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-13 11:16:28 +00:00
Simon Hausmann
cdab00c7ee Replace "our" FindEGL.cmake with the ECM version
The ECM version now also does a compile test, which was the only real
"functional" difference.

Change-Id: I1d5cd590359feba7c7a38ff374992349d5943070
Reviewed-by: Volker Krause <volker.krause@kdab.com>
2019-02-13 09:40:50 +00:00
Simon Hausmann
96c0dc07a7 Use rpath by default not only for building but also installed binaries
This makes it possible to use the binaries out of the box. This is
particularly relevant for program binaries that link against QtCore
dynamically, when trying to use these binaries during cross-compilation.

Change-Id: I7dee93194be3fff5c6e3bbb9e202e4cf5e19b6d0
Reviewed-by: Volker Krause <volker.krause@kdab.com>
2019-02-13 08:59:49 +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
Albert Astals Cid
9a01b4312b cmake: set WrapOpenGL_FOUND to ON
Otherwise the cmake summary at the end says
-- The following packages have not been found:

 * WrapOpenGL

It's OpenGL or GLESv2 that will show there as missing if needed

Change-Id: I182f1299b86e1a4e24762d0bad6533c6136cbbcc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 17:01:36 +00:00
Albert Astals Cid
6235fd68d5 cmake: FindWrapOpenGL->WrapOpenGL
Change-Id: Ic44d3ee806cf287a2c3cb36811b99418ea92d8a0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 17:01:02 +00:00
Volker Krause
cc8e2c4572 Use CMakePushCheckState
Change-Id: I58d779674363a7f7db4a7ea4ca4a9f4a9e271798
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 16:02:58 +00:00
Simon Hausmann
1f96506748 Fix build without Vulkan
The syncqt generated headers are optional, i.e. their source may not
exist -- so for now make their installation optional (as it seems to
have been the case with qmake).

Change-Id: Ieaeb3d13a1d8ff1f158b5b1c918750fec48d3bef
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-12 15:33:06 +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
6424e70bbe cmake: compile the networkmanager bearer plugin
Change-Id: Ia744afec6114266fcb693702db257fe36ba94b92
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:40:34 +00:00
Liang Qi
863cea981b cmake: add localserver in network
Change-Id: I319ffad73bb5f8285b1b2fa583d813667498c3dd
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-12 14:40:30 +00:00
Albert Astals Cid
8fdebd5e37 cmake: build the connman bearer plugin
Change-Id: I034ac995e231e7ad380ca9680e72037a573a1003
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:40:25 +00:00
Albert Astals Cid
1126485a57 cmake: Build the generic bearer plugin
Change-Id: I3ab356e23e22499be98a626d043e2cfb9fc51105
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:40:07 +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
Liang Qi
f94fdb3537 cmake: add TODOs in plugins/platforms for future
Change-Id: I472b87cdd4f87633df7867c161ab861fba519bd3
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-12 14:35:51 +00:00
Kevin Funk
43ff1b568a cmake: Fix more old-style CMake macros
Use the proper target name for the Qt tools

Change-Id: I04b3aed7b58d44e60597223340d66ac97ea083cb
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 14:20:32 +00:00
Liang Qi
73a3a96c7b cmake: update README.md
Added info for using homebrew on macOS.

Change-Id: Ie425793d3de1e72a9342f6c2aaf67a4f85592f3a
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-12 14:05:11 +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
Simon Hausmann
0867dbf2f4 Fix finding syncqt when "cross compiling"
This is not quite the correct design yet, but makes the existing
mechanism work first.

Change-Id: Idbc6f1380adc955a772eb6e5beb6b3a5f7f686bb
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-12 14:02:03 +00:00
Simon Hausmann
f1b688bc7c Fix qt_config_compile_test when cross-compiling
When we do

    qt_config_compile_test(egl_x11
        LABEL "EGL on X11"
        LIBRARIES X11::X11
        ...
    )

then check_cxx_source_compiles() aborts if the provided targets do not
exist (we map LIBRARIES to CMAKE_REQUIRED_LIBRARIES). However we just
want the test to fail. Therefore this patch verifies the presence of the
targets.

Change-Id: Ibd7c1b50d585339af0ca0de58bc5c9cd64d65d6d
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
2019-02-12 14:01:26 +00:00
Kevin Funk
988162eaf8 cmake: Start to use ConfigExtra.cmake files
Enables the use of e.g. QT_NO_DEBUG in compiler flags, -fPIC, passing on of
QT_NAMESPACE, etc. pp.

Dropping a lot of custom code which handled adding imported targets for
the command-line tools (this is all being handled by CMake already).

It needs to be investigated if we need to resurrect
Qt5GuiConfigExtras.cmake.in in one way or the other.

Change-Id: I4fa141b68fddaad4f33e628c59d5d0b3a7b3a096
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 13:37:08 +00:00