2020-02-04 15:19:18 +00:00
|
|
|
# special case skip regeneration
|
2019-06-05 08:08:44 +00:00
|
|
|
cmake_minimum_required(VERSION 3.15.0)
|
2019-01-30 10:12:21 +00:00
|
|
|
|
2019-06-27 13:27:14 +00:00
|
|
|
# Run auto detection routines
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtAutoDetect.cmake)
|
2019-06-20 11:23:19 +00:00
|
|
|
|
2018-10-24 13:20:27 +00:00
|
|
|
project(QtBase
|
2019-06-14 10:59:07 +00:00
|
|
|
VERSION 6.0.0
|
2018-10-24 13:20:27 +00:00
|
|
|
DESCRIPTION "Qt Base Libraries"
|
|
|
|
HOMEPAGE_URL "https://qt.io/"
|
2019-02-11 14:02:05 +00:00
|
|
|
LANGUAGES CXX C ASM
|
2018-10-24 13:20:27 +00:00
|
|
|
)
|
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
if(NOT QT_BUILD_STANDALONE_TESTS)
|
|
|
|
## Add some paths to check for cmake modules:
|
|
|
|
list(PREPEND CMAKE_MODULE_PATH
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/3rdparty/extra-cmake-modules/find-modules"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/3rdparty/kwin"
|
|
|
|
)
|
|
|
|
|
|
|
|
## Find the build internals package.
|
|
|
|
set(QT_BUILD_INTERNALS_SKIP_CMAKE_MODULE_PATH_ADDITION TRUE)
|
|
|
|
list(PREPEND CMAKE_PREFIX_PATH
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
|
|
|
|
)
|
|
|
|
find_package(QtBuildInternals CMAKE_FIND_ROOT_PATH_BOTH)
|
|
|
|
unset(QT_BUILD_INTERNALS_SKIP_CMAKE_MODULE_PATH_ADDITION)
|
|
|
|
else()
|
|
|
|
# When building standalone tests, an istalled BuildInternals package already exists.
|
|
|
|
find_package(Qt6 REQUIRED COMPONENTS BuildInternals CMAKE_FIND_ROOT_PATH_BOTH)
|
|
|
|
endif()
|
2018-10-24 13:20:27 +00:00
|
|
|
|
2019-09-26 15:58:53 +00:00
|
|
|
qt_build_repo_begin()
|
2018-10-24 13:20:27 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
if(NOT QT_BUILD_STANDALONE_TESTS)
|
|
|
|
## Should this Qt be static or dynamically linked?
|
|
|
|
option(BUILD_SHARED_LIBS "Build Qt statically or dynamically" ON)
|
|
|
|
set(QT_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
|
2019-11-07 07:51:03 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## Should this Qt be built with Werror?
|
|
|
|
option(WARNINGS_ARE_ERRORS "Build Qt with warnings as errors" ${FEATURE_developer_build})
|
2019-11-07 07:51:03 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## Should Qt be built using PCH?
|
|
|
|
option(BUILD_WITH_PCH "Build Qt using precompiled headers?" ON)
|
2018-10-24 13:20:27 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## QtBase specific configure tests:
|
|
|
|
include(QtBaseConfigureTests)
|
2018-11-14 12:37:52 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## Build System tests:
|
|
|
|
include(QtBaseCMakeTesting)
|
2018-10-24 13:20:27 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## Targets for global features, etc.:
|
|
|
|
include(QtBaseGlobalTargets)
|
2019-10-17 08:14:09 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## Set language standards after QtBaseGlobalTargets, because that's when the relevant
|
|
|
|
## feature variables are available.
|
|
|
|
qt_set_language_standards()
|
Export tool config and target files for each relevant module
CMake will now generate config and target files for each module that
provides tools. As a result, namespaced global targets such as
Qt5::moc or Qt5::rcc can be made available.
Third party projects that require just these tools, and not the Qt
modules themselves, should specify CMAKE_PREFIX_PATH pointing to the
installed Qt location, and call find_package(Qt5CoreTools),
find_package(Qt5GuiTools), etc.
It is also possible to call
find_package(Qt5Tools REQUIRED Core Widgets) where the last option
is a list of modules whose tools should be imported.
Note that all the tools are in the Qt5::
namespace and not in the Qt5CoreTools:: or Qt5WidgetsTools::
namespace.
This commit also changes the behavior regarding when to build tools
while building Qt itself.
When cross compiling Qt (checked via CMAKE_CROSSCOMPILING) or when
-DQT_FORCE_FIND_TOOLS=TRUE is passed, tools added by add_qt_tool will
always be searched for and not built.
In this case the user has to specify the CMake variable QT_HOST_PATH
pointing to an installed host Qt location.
When not cross compiling, tools added by add_qt_tool are built from
source.
When building leaf modules (like qtsvg) that require some tool that was
built in qtbase (like moc), the module project should contain a
find_package(Qt5ToolsCore) call and specify an appropriate
CMAKE_PREFIX_PATH so that the tool package is found.
Note that because HOST_QT_TOOLS_DIRECTORY was replaced by QT_HOST_PATH,
the ensure syncqt code was changed to make it work properly with
both qtbase and qtsvg.
Here's a list of tools and their module associations:
qmake, moc, rcc, tracegen, qfloat16-tables, qlalr -> CoreTools
qvkgen -> GuiTools
uic -> WidgetTools
dbus related tools -> DBusTools
Task-number: QTBUG-74134
Change-Id: Ie67d1e2f8de46102b48eca008f0b50caf4fbe3ed
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-10 17:21:22 +00:00
|
|
|
|
2019-11-26 09:10:55 +00:00
|
|
|
#include CoreMacros() for qt6_generate_meta_types()
|
|
|
|
include(src/corelib/Qt6CoreMacros.cmake)
|
|
|
|
|
2019-09-19 07:38:09 +00:00
|
|
|
## Setup documentation
|
|
|
|
add_subdirectory(doc)
|
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
## Visit all the directories:
|
|
|
|
add_subdirectory(src)
|
|
|
|
endif()
|
2018-10-24 13:20:27 +00:00
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
if(BUILD_TESTING)
|
2018-10-24 13:20:27 +00:00
|
|
|
add_subdirectory(tests)
|
2019-11-04 13:43:39 +00:00
|
|
|
if(QT_NO_MAKE_TESTS)
|
|
|
|
set_property(DIRECTORY tests PROPERTY EXCLUDE_FROM_ALL TRUE)
|
|
|
|
endif()
|
2018-10-24 13:20:27 +00:00
|
|
|
endif()
|
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
if(NOT QT_BUILD_STANDALONE_TESTS)
|
|
|
|
if(QT_WILL_BUILD_TOOLS)
|
|
|
|
add_subdirectory(qmake)
|
|
|
|
endif()
|
|
|
|
# As long as we use the mkspecs (for qplatformdefs.h), we need to always
|
|
|
|
# install it, especially when cross-compiling.
|
2020-01-15 22:01:16 +00:00
|
|
|
set(mkspecs_install_dir "${INSTALL_MKSPECSDIR}")
|
2019-11-01 10:48:23 +00:00
|
|
|
qt_path_join(mkspecs_install_dir ${QT_INSTALL_DIR} ${mkspecs_install_dir})
|
|
|
|
|
2020-01-15 22:01:16 +00:00
|
|
|
file(GLOB mkspecs_subdirs
|
|
|
|
LIST_DIRECTORIES TRUE
|
|
|
|
"${PROJECT_SOURCE_DIR}/mkspecs/*")
|
|
|
|
foreach(directory IN LISTS mkspecs_subdirs)
|
|
|
|
qt_copy_or_install(DIRECTORY "${directory}"
|
|
|
|
DESTINATION ${mkspecs_install_dir})
|
|
|
|
endforeach()
|
2019-02-15 12:16:35 +00:00
|
|
|
endif()
|
2019-01-17 09:22:59 +00:00
|
|
|
|
2019-06-11 13:46:31 +00:00
|
|
|
qt_build_repo_end()
|
|
|
|
|
2019-11-01 10:48:23 +00:00
|
|
|
if(NOT QT_BUILD_STANDALONE_TESTS AND BUILD_EXAMPLES)
|
2019-01-17 09:22:59 +00:00
|
|
|
add_subdirectory(examples)
|
2019-11-04 13:43:39 +00:00
|
|
|
if(QT_NO_MAKE_EXAMPLES)
|
|
|
|
set_property(DIRECTORY examples PROPERTY EXCLUDE_FROM_ALL TRUE)
|
|
|
|
endif()
|
2019-01-17 09:22:59 +00:00
|
|
|
endif()
|