summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--cmake/QtBuild.cmake148
-rw-r--r--src/corelib/CMakeLists.txt3
-rw-r--r--src/testlib/CMakeLists.txt6
4 files changed, 61 insertions, 98 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 622cc5e00b..4f00d333dc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12.0)
+cmake_minimum_required(VERSION 3.13.0)
project(QtBase
VERSION 5.12.0
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index cae2aaf1b5..1bc55348e9 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -431,7 +431,7 @@ function(qt_internal_process_automatic_sources target)
endfunction()
-set(__default_private_args "SOURCES;LIBRARIES;INCLUDE_DIRECTORIES;DEFINES;DBUS_ADAPTOR_FLAGS;DBUS_ADAPTOR_SOURCES;DBUS_INTERFACE_FLAGS;DBUS_INTERFACE_SOURCES")
+set(__default_private_args "SOURCES;LIBRARIES;INCLUDE_DIRECTORIES;DEFINES;DBUS_ADAPTOR_FLAGS;DBUS_ADAPTOR_SOURCES;DBUS_INTERFACE_FLAGS;DBUS_INTERFACE_SOURCES;FEATURE_DEPENDENCIES")
set(__default_public_args "PUBLIC_LIBRARIES;PUBLIC_INCLUDE_DIRECTORIES;PUBLIC_DEFINES")
@@ -454,14 +454,19 @@ function(extend_target target)
qt_create_qdbusxml2cpp_command("${target}" "${adaptor}" ADAPTOR FLAGS "${arg_DBUS_ADAPTOR_FLAGS}")
list(APPEND dbus_sources "${sources}")
endforeach()
+
foreach(interface ${arg_DBUS_INTERFACE_SOURCES})
qt_create_qdbusxml2cpp_command("${target}" "${interface}" INTERFACE FLAGS "${arg_DBUS_INTERFACE_FLAGS}")
list(APPEND dbus_sources "${sources}")
endforeach()
qt_internal_process_automatic_sources("${target}" "${arg_SOURCES}")
- set(must_push_features OFF)
- foreach(dep ${arg_LIBRARIES} ${arg_PUBLIC_LIBRARIES})
+ # Import features
+ if(NOT "${target}" STREQUAL "Core")
+ qt_pull_features_into_current_scope(PUBLIC_FEATURES PRIVATE_FEATURES FEATURE_PROPERTY_INFIX "GLOBAL_" Qt::Core)
+ endif()
+
+ foreach(dep ${arg_FEATURE_DEPENDENCIES} ${arg_LIBRARIES} ${arg_PUBLIC_LIBRARIES})
if("${dep}" MATCHES "^Qt::((.+)(Private)|(.+))$")
if (${CMAKE_MATCH_COUNT} EQUAL 3)
set(depTarget ${CMAKE_MATCH_2})
@@ -479,8 +484,6 @@ function(extend_target target)
qt_pull_features_into_current_scope(PRIVATE_FEATURES ${depTarget})
endif()
qt_pull_features_into_current_scope(PUBLIC_FEATURES ${depTarget})
-
- set(must_push_features ON)
endif()
endforeach()
@@ -492,9 +495,7 @@ function(extend_target target)
target_compile_definitions("${target}" PUBLIC ${arg_PUBLIC_DEFINES} PRIVATE ${arg_DEFINES})
target_link_libraries("${target}" PUBLIC ${arg_PUBLIC_LIBRARIES} PRIVATE ${arg_LIBRARIES})
- if(must_push_features)
- qt_push_features_into_parent_scope()
- endif()
+ qt_push_features_into_parent_scope()
endif()
endfunction()
@@ -569,7 +570,7 @@ function(add_qt_module target)
# Process arguments:
qt_parse_all_arguments(arg "add_qt_module" "NO_MODULE_HEADERS;STATIC" "CONFIG_MODULE_NAME"
- "${__default_private_args};${__default_public_args};FEATURE_DEPENDENCIES" ${ARGN})
+ "${__default_private_args};${__default_public_args}" ${ARGN})
if(NOT DEFINED arg_CONFIG_MODULE_NAME)
set(arg_CONFIG_MODULE_NAME "${module_lower}")
@@ -592,23 +593,7 @@ function(add_qt_module target)
add_library("${target_private}" INTERFACE)
qt_internal_add_target_aliases("${target_private}")
- # Import global features
- if(NOT "${target}" STREQUAL "Core")
- qt_pull_features_into_current_scope(PUBLIC_FEATURES PRIVATE_FEATURES FEATURE_PROPERTY_INFIX "GLOBAL_" Qt::Core)
- endif()
-
- # Fetch features from dependencies and make them available to the
- # caller as well as to the local scope for configure.cmake evaluation.
- foreach(dep ${arg_LIBRARIES} ${arg_PUBLIC_LIBRARIES} ${arg_FEATURE_DEPENDENCIES})
- if("${dep}" MATCHES "(Qt::.+)Private")
- set(publicDep ${CMAKE_MATCH_1})
- qt_pull_features_into_current_scope(PRIVATE_FEATURES ${publicDep})
- else()
- set(publicDep ${dep})
- endif()
- qt_pull_features_into_current_scope(PUBLIC_FEATURES ${publicDep})
- endforeach()
-
+ # Module headers:
if(${arg_NO_MODULE_HEADERS})
set_target_properties("${target}" PROPERTIES MODULE_HAS_HEADERS OFF)
else()
@@ -616,6 +601,12 @@ function(add_qt_module target)
execute_process(COMMAND "${HOST_PERL}" -w "${QT_SYNCQT}" -quiet -module "${module}" -version "${PROJECT_VERSION}" -outdir "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}")
set_target_properties("${target}" PROPERTIES MODULE_HAS_HEADERS ON)
+
+ ### FIXME: Can we replace headers.pri?
+ qt_read_headers_pri("${target}" "module_headers")
+ set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${module_headers_public}")
+ set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${module_include_dir}/${module}Depends")
+ set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${module_headers_private}")
endif()
set_target_properties("${target}" PROPERTIES
@@ -623,28 +614,6 @@ function(add_qt_module target)
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_BINDIR}"
OUTPUT_NAME "${module_versioned}")
- set(configureFile "${CMAKE_CURRENT_SOURCE_DIR}/configure.cmake")
- if(EXISTS "${configureFile}")
- qt_feature_module_begin(
- LIBRARY "${target}"
- PUBLIC_FILE "qt${arg_CONFIG_MODULE_NAME}-config.h"
- PRIVATE_FILE "qt${arg_CONFIG_MODULE_NAME}-config_p.h"
- PUBLIC_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
- PRIVATE_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
- )
- include(${configureFile})
- qt_feature_module_end("${target}")
- qt_pull_features_into_current_scope(PUBLIC_FEATURES PRIVATE_FEATURES "${target}")
-
- set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qt${arg_CONFIG_MODULE_NAME}-config.h")
- set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qt${arg_CONFIG_MODULE_NAME}-config_p.h")
-
- if("${target}" STREQUAL "Core")
- set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig.h")
- set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig_p.h")
- endif()
- endif()
-
qt_internal_library_deprecation_level(deprecation_define)
extend_target("${target}"
@@ -672,22 +641,29 @@ function(add_qt_module target)
QT_BUILDING_QT
QT_BUILD_${module_upper}_LIB ### FIXME: use QT_BUILD_ADDON for Add-ons or remove if we don't have add-ons anymore
"${deprecation_define}"
- PUBLIC_LIBRARIES
- ${arg_PUBLIC_LIBRARIES}
- LIBRARIES
- ${arg_LIBRARIES}
- DBUS_ADAPTOR_SOURCES "${arg_DBUS_ADAPTOR_SOURCES}"
- DBUS_ADAPTOR_FLAGS "${arg_DBUS_ADAPTOR_FLAGS}"
- DBUS_INTERFACE_SOURCES "${arg_DBUS_INTERFACE_SOURCES}"
- DBUS_INTERFACE_FLAGS "${arg_DBUS_INTERFACE_FLAGS}"
+ PUBLIC_LIBRARIES ${arg_PUBLIC_LIBRARIES}
+ LIBRARIES ${arg_LIBRARIES}
+ FEATURE_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
+ DBUS_ADAPTOR_SOURCES ${arg_DBUS_ADAPTOR_SOURCES}
+ DBUS_ADAPTOR_FLAGS ${arg_DBUS_ADAPTOR_FLAGS}
+ DBUS_INTERFACE_SOURCES ${arg_DBUS_INTERFACE_SOURCES}
+ DBUS_INTERFACE_FLAGS ${arg_DBUS_INTERFACE_FLAGS}
)
- ### FIXME: Can we replace headers.pri?
- if(NOT ${arg_NO_MODULE_HEADERS})
- qt_read_headers_pri("${target}" "module_headers")
- set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${module_headers_public}")
- set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${module_headers_private}")
- set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${module_include_dir}/${module}Depends")
+ set(configureFile "${CMAKE_CURRENT_SOURCE_DIR}/configure.cmake")
+ if(EXISTS "${configureFile}")
+ qt_feature_module_begin(
+ LIBRARY "${target}"
+ PUBLIC_FILE "qt${arg_CONFIG_MODULE_NAME}-config.h"
+ PRIVATE_FILE "qt${arg_CONFIG_MODULE_NAME}-config_p.h"
+ PUBLIC_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
+ PRIVATE_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
+ )
+ include(${configureFile})
+ qt_feature_module_end("${target}")
+
+ set_property(TARGET "${target}" APPEND PROPERTY PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qt${arg_CONFIG_MODULE_NAME}-config.h")
+ set_property(TARGET "${target}" APPEND PROPERTY PRIVATE_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qt${arg_CONFIG_MODULE_NAME}-config_p.h")
endif()
if(DEFINED module_headers_private)
@@ -696,8 +672,6 @@ function(add_qt_module target)
qt_internal_add_linker_version_script("${target}")
endif()
- qt_pull_features_into_current_scope(PUBLIC_FEATURES PRIVATE_FEATURES ${arg_FEATURE_DEPENDENCIES})
-
install(TARGETS "${target}" "${target_private}" EXPORT "${module_versioned}Targets"
LIBRARY DESTINATION ${INSTALL_LIBDIR}
ARCHIVE DESTINATION ${INSTALL_LIBDIR}
@@ -762,41 +736,26 @@ endfunction()
# This is the main entry point for defining Qt plugins.
-# A CMake target is created with the given name. The TYPE parameter is needed to place the
+# A CMake target is created with the given target. The TYPE parameter is needed to place the
# plugin into the correct plugins/ sub-directory.
-function(add_qt_plugin name)
- # This is a copy paste of add_qt_module with minor changes and some commented out stuff.
- # FIXME !!!
- set(module "${name}")
- string(TOUPPER "${name}" name_upper)
+function(add_qt_plugin target)
+ qt_internal_module_info(module "${target}")
qt_parse_all_arguments(arg "add_qt_plugin" "" "TYPE" "${__default_private_args};${__default_public_args}" ${ARGN})
if (NOT DEFINED arg_TYPE)
message(FATAL_ERROR "add_qt_plugin called without setting a TYPE.")
endif()
- add_library("${module}")
- set_target_properties("${module}" PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_PLUGINSDIR}/${arg_TYPE}")
- set_target_properties("${module}" PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_BINDIR}")
-
- # Import global features
- qt_pull_features_into_current_scope(PUBLIC_FEATURES PRIVATE_FEATURES FEATURE_PROPERTY_INFIX "GLOBAL_" Qt::Core)
+ add_library("${target}")
+ qt_internal_add_target_aliases("${target}")
- # Fetch features from dependencies and make them available to the
- # caller as well as to the local scope for configure.cmake evaluation.
- foreach(dep ${arg_LIBRARIES} ${arg_PUBLIC_LIBRARIES})
- if("${dep}" MATCHES "(Qt::.+)Private")
- set(publicDep ${CMAKE_MATCH_1})
- qt_pull_features_into_current_scope(PRIVATE_FEATURES ${publicDep})
- else()
- set(publicDep ${dep})
- endif()
- qt_pull_features_into_current_scope(PUBLIC_FEATURES ${publicDep})
- endforeach()
+ set_target_properties("${target}" PROPERTIES
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_PLUGINSDIR}/${arg_TYPE}"
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_BINDIR}")
qt_internal_library_deprecation_level(deprecation_define)
- extend_target("${module}"
+ extend_target("${target}"
SOURCES ${arg_SOURCES}
INCLUDE_DIRECTORIES
"${CMAKE_CURRENT_SOURCE_DIR}"
@@ -812,30 +771,31 @@ function(add_qt_plugin name)
QT_USE_QSTRINGBUILDER
QT_DEPRECATED_WARNINGS
QT_BUILDING_QT
- QT_BUILD_${name_upper}_LIB ### FIXME: use QT_BUILD_ADDON for Add-ons or remove if we don't have add-ons anymore
+ QT_BUILD_${module_upper}_LIB ### FIXME: use QT_BUILD_ADDON for Add-ons or remove if we don't have add-ons anymore
"${deprecation_define}"
PUBLIC_DEFINES
- QT_${name_upper}_LIB
+ QT_${module_upper}_LIB
${arg_PUBLIC_DEFINES}
+ FEATURE_DEPENDENCIES ${arg_FEATURE_DEPENDENCIES}
DBUS_ADAPTOR_SOURCES "${arg_DBUS_ADAPTOR_SOURCES}"
DBUS_ADAPTOR_FLAGS "${arg_DBUS_ADAPTOR_FLAGS}"
DBUS_INTERFACE_SOURCES "${arg_DBUS_INTERFACE_SOURCES}"
DBUS_INTERFACE_FLAGS "${arg_DBUS_INTERFACE_FLAGS}"
)
- install(TARGETS "${module}" EXPORT "${module}Targets"
+ install(TARGETS "${target}" EXPORT "${target}Targets"
LIBRARY DESTINATION ${INSTALL_PLUGINSDIR}/${arg_TYPE}
ARCHIVE DESTINATION ${INSTALL_LIBDIR}/${arg_TYPE}
)
- install(EXPORT "${module}Targets" NAMESPACE Qt:: DESTINATION ${INSTALL_LIBDIR}/cmake)
+ install(EXPORT "${target}Targets" NAMESPACE Qt:: DESTINATION ${INSTALL_LIBDIR}/cmake)
### fixme: cmake is missing a built-in variable for this. We want to apply it only to modules and plugins
# that belong to Qt.
if (GCC)
- qt_internal_add_link_flags("${module}" "-Wl,--no-undefined")
+ qt_internal_add_link_flags("${target}" "-Wl,--no-undefined")
endif()
- qt_internal_add_linker_version_script(${module})
+ qt_internal_add_linker_version_script(${target})
qt_push_features_into_parent_scope()
endfunction()
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index 8c8c033859..7824a2e506 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -240,6 +240,9 @@ add_qt_module(Core
QT_NO_FOREACH
)
+set_property(TARGET Core APPEND PROPERTY PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig.h")
+set_property(TARGET Core APPEND PROPERTY PRIVATE_HEADER "${CMAKE_CURRENT_BINARY_DIR}/global/qconfig_p.h")
+
# As a special feature, the global features are attached to QtCore as
# custom properties. That's symmetric to qconfig.cpp/h being part of
# QtCore and not of a QtGlobal library.
diff --git a/src/testlib/CMakeLists.txt b/src/testlib/CMakeLists.txt
index 3650fd0e37..ed8d2c8df7 100644
--- a/src/testlib/CMakeLists.txt
+++ b/src/testlib/CMakeLists.txt
@@ -49,11 +49,11 @@ add_qt_module(Test
qxmltestlogger.cpp
qxunittestlogger.cpp
LIBRARIES
- CorePrivate
+ Qt::CorePrivate
PUBLIC_LIBRARIES
- Core
+ Qt::Core
DEFINES
- QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_ASCII
QT_NO_FOREACH
QT_NO_DATASTREAM
)