summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Revert "cmake: Make CMake superbuilds work"Alexandru Croitor2019-06-143-22/+15
| | | | | | | | | | | | | 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 7559d508d1993dd90a4939441eaf353d55462ae5. Change-Id: If139a8a1eb4ae7ccc8d7b835b12e83b03176e28b Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Qt CMake Build Bot
* cmake: Make CMake superbuilds workKevin Funk2019-06-143-15/+22
| | | | | | | | | | | | 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>
* Try to find Test package before calling add_subdirectory(src)Alexandru Croitor2019-06-131-1/+7
| | | | | | | | | | | 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>
* Android: Install gradle templatesLeander Beernaert2019-06-132-0/+26
| | | | | | | | | 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>
* Automatically find apple frameworks when building a repoAlexandru Croitor2019-06-133-4/+3
| | | | | | | | | 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>
* Android: Correct install path for libqtforandroid.soLeander Beernaert2019-06-131-3/+3
| | | | | | | | | | 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>
* Correct install path for QtForAndroid pluginLeander Beernaert2019-06-131-0/+8
| | | | | | | | 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>
* Try to use %ProgramFiles(x86)% instead of custom codeJędrzej Nowacki2019-06-131-21/+6
| | | | | | | | | | | 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>
* Remove double negationsJędrzej Nowacki2019-06-131-33/+33
| | | | | | | | | 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>
* Fix the 'Fix static builds' commitAlexandru Croitor2019-06-121-1/+3
| | | | | | | | | | | | The GlobalConfigPrivate target should also be filtered out when registering target dependencies, because there's no standalone Qt5GlobalConfigPrivate.cmake file. Amends fbfa067a304e8aea6ba6719395fd12a05688b6f8. Change-Id: If89732bc2fd004b9644959f71339e22210483d7c Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix static buildsAlexandru Croitor2019-06-122-4/+9
| | | | | | | | | | | | | | | | | | | | | | 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>
* Make WinMain linkage compatible with Qt 5Simon Hausmann2019-06-124-6/+16
| | | | | | | | | | | | | | | | | | | | 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
* Fix compiling of examples on AndroidSimon Hausmann2019-06-12240-229/+471
| | | | | | | | | | | | | | | | | | | * 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
* Fix linking of examplesSimon Hausmann2019-06-12224-231/+244
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Implement command prefixJędrzej Nowacki2019-06-121-2/+168
| | | | | | | | | | | | | | | | | | | | | The current CI magically add prefix to every executed command if target compiler is MSVC. The prefix just calls vcvarsall.bat. The script has to be called for every command, because of the CI agent runs every command as a subprocess. It means that script sourced environment is not passed to subsequent commands, therefore all changes are lost. The prefix, as a concept, has known performance issues (COIN-253), so in long term it would be nice to move to another solution. CustomModule doesn't support prefix. Therefore the proposed approach moves the ugliness from CI code to the yaml configuration file. It has two advantages; nothing needs to be implemented on the CI level and hopefully someone in future will clean it up as the problem is more visible and publicly fixable. Change-Id: Ice3cff89e3a59b2a57e675b7892fde0d04433ba8 Reviewed-by: Liang Qi <liang.qi@qt.io>
* Use ninja as default builderJędrzej Nowacki2019-06-121-17/+6
| | | | | | | | | | | | That allows us to skip all the madness of choosing between make/nmake/jom. In addition it is actually faster to build with ninja, then other tools. Change-Id: I31049a292495800606cede6f15011d97af7c3e41 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Qt CMake Build Bot
* Prospective Windows build fixSimon Hausmann2019-06-121-6/+0
| | | | | | | | | | | Commit abe12f600b1f626c9d228ad5234c14784e7845f1 moved the _LARGEFILE64_SOURCE define to a central place and commit 449eee2d108589d2b8549d6682c8b5e792e659b8 made it conditional to UNIX (not WIN32). Somehow these two were left over though. Change-Id: I23b08e84db804e9d5a4dde706af501c0918b460e Reviewed-by: Qt CMake Build Bot Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove redundant installation of QtPlatformAndroid.cmakeSimon Hausmann2019-06-121-8/+0
| | | | | | | | It's already installed right where QtSetup.cmake is installed. Change-Id: Ie88363ae3878cda8f92aa44160333886f64565d8 Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Android: Generate deployment-settings.jsonLeander Beernaert2019-06-128-20/+278
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generate the android deployment settings json for android apk targets. QtPlatformAndroid is now also deployed as a public build dependency of QtCore. Some minor refactoring has been performed to the naming of variables and functions to better match the public facing apis. Extra settings for the file can be configured using the following target properties: set_target_properties(Core PROPERTIES QT_ANDROID_DEPLOYMENT_DEPENDENCIES "foo;bar" QT_ANDROID_EXTRA_LIBS "foo;bar" QT_ANDROID_EXTRA_PLUGINS "foo;bar" QT_ANDROID_PACKAGE_SOURCE_DIR "/foo/bar/" ) The file is generated using the function qt_android_generate_depoyment_settings(). We need to install the android template files and jar files during the android build as the androiddeployqt tool wont work if parts of it are split between the host install and the android install. Added QT_BUILD_QT variable to check whether we are building Qt from source. Finally, we also force the stdlib to shared via cmake configuration with -DANDROID_STL="c++_shared" Change-Id: I063c47e11749d56ba4c6f02101dbcc09e1b9fe87 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Improve special case handler to work on WindowsAlexandru Croitor2019-06-111-4/+20
| | | | | | | | | There were some issues with not finding the git executable and trying to remove read-only files / files that are still held by a process. Change-Id: I7f587c4e96cff763cc0b3438d9ed2249da8f122f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add appropriate MSVC version check for warnings are errors featureAlexandru Croitor2019-06-111-2/+6
| | | | | | | | | | In qmake land warnings_are_errors is only enabled for specific MSVC versions, ending with MSVC2015. Presumably the warnings have not yet been fixed for newer MSVC versions, so we stick with the same status quo for now. Change-Id: Idc3741d39c888f77ed324a5eb8c654416591785f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Don't add _LARGEFILE64_SOURCE define on WindowsAlexandru Croitor2019-06-111-2/+3
| | | | | | | | | | | | | | In qmake land, the largefile.prf feature is automatically loaded due to 'largefile' being added to CONFIG via the equivalent feature. The prf file is in the 'unix' subfolder though, which means that qmake doesn't load it on Windows. We need to do the same, otherwise we get build errors due to the define being checked in ZLIB headers, and selecting an invalid code branch on Windows. Change-Id: Ibe9202a639754927262bb8aaa28289934f2e23ef Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Improve pro2cmake.py moreAlexandru Croitor2019-06-081-3/+8
| | | | | | | | | | | | Fix incorrect usage of CMAKE_CURRENT_BUILD_DIR, there is no such CMake variable, it's actually CMAKE_CURRENT_BINARY_DIR. Also if the host_build option is set when building a module, the library should be a static library. Change-Id: I9fb39905118dbd7f33d9821960eaed11f20b30c6 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Handle minimal_syncqt as not running syncqt for nowAlexandru Croitor2019-06-072-2/+4
| | | | | | | | This is needed for QmlDevTools in qtdeclarative. Change-Id: I41adec15f292c91192e171b45d1e5d48764c37c4 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Change qt_build_repo to build tools if present and neededAlexandru Croitor2019-06-071-0/+6
| | | | | | | | | This is needed for qtdeclarative, to automatically start building the tools if needed. Change-Id: I3cbe129e8bb6fa8572a8e34fd3653b51727cb244 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* MSVC: Split the warning suppression compile options stringMårten Nordheim2019-06-061-1/+1
| | | | | | | | cl: Command line error D8021 : invalid numeric argument '/wd4530 /wd4577' Change-Id: I222e779870ebacfc6f8a71e90dbf47867a84f72f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Qt CMake Build Bot
* Simplify per-module option handlingSimon Hausmann2019-06-062-14/+14
| | | | | | | | Move flags/options that we use for modules from add_module to the new platform module target. Change-Id: I89e414690336dcd37253432fe5116226d1c8dd82 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Collect more known modules when considering private libraries inAlexandru Croitor2019-06-062-2/+13
| | | | | | | | | | | | | | | | | | | | | | | | extend_target. In extend_target(Foo) we go over all the ModulePrivate dependencies to assign them to FooPrivate. To do that we use the QT_KNOWN_MODULES variable. The problem is that the variable gets reset when we build a new repository, so when we build qtdeclarative, QT_KNOWN_MODULES has no entries for Core, Gui, etc, but only Qml, Quick, etc. And yet QmlPrivate has to depend on CorePrivate. Change the module Config.cmake files to append their target name to a global variable called QT_ALL_MODULES_FOUND_VIA_FIND_PACKAGE. The global variable gets populated every time find_package(QtFoo) is called. Use the union of QT_KNOWN_MODULES and QT_ALL_MODULES_FOUND_VIA_FIND_PACKAGE when considering FooPrivate libraries. Change-Id: Ibd9449744478cea58eb5d9737cc8887b4df92420 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Fix Standalone Example build when crosscompilingLeander Beernaert2019-06-062-36/+33
| | | | | | | | | | | | | | | | | Added qt_examples_begin() and qt_examples_end() macros to setup the example list so it can be re-used in other projects. When cross-compiling, we also need to set CMAKE_FIND_ROOT_PATH_MODE_PACKAGE to BOTH in order for find_package() to work correctly. Removed support for building the whole qtbase/examples folder as a standalone project. Building examples is only supported when building the whole of qtbase (qtbase + examples together) or each individual example is built separately against an installed Qt version. Change-Id: I9d26b94b48b95af230b76ab618becb21d2d45581 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Prevent accidental conflicts with external cmake configuration filesSimon Hausmann2019-06-061-2/+2
| | | | | | | | | Make sure to prepend our own paths instead of appending, as we'd like cmake to search there first. Change-Id: I0caea3a2654fbb07d5843f255cc35fca8892e19d Reviewed-by: Qt CMake Build Bot Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix comment fixup in pro2cmakeAlexandru Croitor2019-06-062-1/+20
| | | | | | | | | | | | | Comments should be removed before line continuations, otherwise the semantics of an assignment change. Found this during reconversion of qtimageformats. Adjust test to specifically test for all the expected values. Amends 76f5b784ce54730ed8d6ad4bb9c39c9a05c5d81d. Change-Id: Iaa46bbc9cbd7b2390fe9b5f0078ac33d225a9258 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Android: Move Platform IncludeLeander Beernaert2019-06-062-4/+5
| | | | | | | | | Move the include of the platform from QtPlatformSupport to QtSetup. This no longer causes compile tests to fail since they expect explicit include paths instead of using CMAKE_MODULE_PATH. Change-Id: I9d3bed7845104d84422afb5a976ec14b111d259d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix "make install"Simon Hausmann2019-06-061-2/+4
| | | | | | | | | Don't try to report an installable public module .pri file for internal modules. Change-Id: Ide6a50420e0b5448b141c842df4c891baca4a9d9 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CMake Build Bot
* Fix some configure.json conditions for qtimageformatsAlexandru Croitor2019-06-061-0/+6
| | | | | | | | | | | | | The auto-generated add_subdirectory conditions in qtimageformats use QT_FEATURE_foo and not QT_FEATURE_system_foo. But the non-system ones don't actually check if the respective qt_find_package(TIFF) got found. Fix the conditions of the non system features to be the same as the system ones. Change-Id: I96f889cf7061721b829d562707c42aa0e29720df Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Introduce Platform*Internal targetsAlbert Astals Cid2019-06-053-67/+76
| | | | | | | | | | Link to them from add_qt_module/plugin/tool This way we set the warnings_are_errors flags just once and also non-qtbase modules get them Change-Id: I2b65a81694aaebdd7c886249f217c11f79492bad Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: Generate QtBuildInternalsExtra at conftimeKevin Funk2019-06-052-28/+22
| | | | | | | ... using configure_file. Change-Id: Ibe3522c33e20a86c454b23919547775624f84755 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: Ensure syncqt.pl from source is foundKevin Funk2019-06-051-3/+4
| | | | | | | | ... in superbuilds. PROJECT_SOURCE_DIR points to the wrong directory in that case. Change-Id: Ic0cba254734c4693b418dd8a0d8e77063914a9de Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add the Android QPA plugin to the CMake buildSimon Hausmann2019-06-053-3/+95
| | | | | | | | Had to apply on unused-variable -Werror fix on top. Change-Id: I4e8decf1e0a1bd56d4168bc2c7153ef3f5e31e13 Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Export installation locations compatible with qmake -queryVolker Krause2019-06-052-0/+27
| | | | | Change-Id: I634bd1036ce197602d4acaf4535ab43227d120a8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: MinGW build fixCristian Adam2019-06-051-1/+1
| | | | | Change-Id: Ica47189fd8f1811ce9e726fa0416e6ea8ae7af63 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* cmake/ does not necessarily exist in a moduleKevin Funk2019-06-051-4/+6
| | | | | | | E.g. qtsvg does not have a cmake/ folder Change-Id: I216776a4997709222064aa76195a32e7bdb6b080 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add support for private module .pri filesSimon Hausmann2019-06-0534-11/+84
| | | | | | | | | Generate a pri file for public and private interfaces, but map CONFIG += internal_module to a cmake option and skip the former if set. Task-number: QTBUG-75666 Change-Id: I3f4baf1277094f4c22149a9e8769734baf9a235f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Compile fix for MinGW 8.1.0Cristian Adam2019-06-051-0/+9
| | | | | Change-Id: I4e484619421812ae83da1382938c527ad67382e9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Android: SDK SupportLeander Beernaert2019-06-0511-1/+158
| | | | | | | | | | | | | | | Enable building androiddeployqt when performing host builds only. Added QtPlatformAndroid.cmake to locate Java and the setup the android SDK platform when building on android. Install the androiddeployqt support files when performing a host build. Added ANDROID_SDK_ROOT configuration variable for specifying the android sdk directory. Generating the deployment-settings.json will be done in another change. Change-Id: I1bf15315af4ed904d2fb1d22b0e8e834df32d6ed Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Re-generate the CMakeLists.txt and add the prev filesSimon Hausmann2019-06-0524-92/+907
| | | | | Change-Id: I93ea196bdd5807bccebf81e72332966288a35a4f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Add WinMain supportCristian Adam2019-06-054-6/+78
| | | | | | | Change-Id: I85c56555bc47dcf348daeb3435c621529aa2d381 Fixes: QTBUG-75195 Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix typo: PROJECT_MAJOR_VERSION does not existKevin Funk2019-06-051-1/+1
| | | | | Change-Id: I0e0783d615aa2f875f4dbe492e67f1e4366b7371 Reviewed-by: Volker Krause <volker.krause@kdab.com>
* CMake: Also bump to CMake 3.15 in READMEKai Koehne2019-06-051-1/+1
| | | | | | | Amends fecd9d90daa Change-Id: I5373844515c83d218f840b3277ac2c49f318620e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Disable autotests for non-developer buildsKai Koehne2019-06-051-1/+4
| | | | | | | | | | | Mimic the behavior in the qmake build system, and by default build tests for developer-build, and not build it for a normal build. To do this, we define BUILD_TESTING with the right default before including CTest, which does otherwise define the option itself. Change-Id: Ifa1b1156477919abc1e916ccd9e1e0a74e969ee6 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add AppleClang as exception for warnings as errors for md4c libraryAlexandru Croitor2019-06-051-1/+1
| | | | | Change-Id: Ia7dd9bfb622b80b18fa7323de5188dc50e4fca78 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>