summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtBuild.cmake35
-rw-r--r--cmake/QtBuildInternals/QtBuildInternalsConfig.cmake35
-rw-r--r--cmake/QtPostProcess.cmake4
-rw-r--r--qmake/CMakeLists.txt4
-rw-r--r--src/CMakeLists.txt22
-rw-r--r--tests/CMakeLists.txt17
6 files changed, 82 insertions, 35 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index a18a858e0c..afcd165f0e 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -36,9 +36,17 @@ set(INSTALL_SYSCONFDIR "etc/xdg" CACHE PATH
set(INSTALL_EXAMPLESDIR "examples" CACHE PATH "Examples [PREFIX/examples]")
set(INSTALL_TESTSDIR "tests" CACHE PATH "Tests [PREFIX/tests]")
-set(INSTALL_CMAKE_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}" CACHE STRING "CMake namespace [Qt${PROJECT_VERSION_MAJOR}]")
+# The variables might have already been set in QtBuildInternalsExtra.cmake if the file is included
+# while building a new module and not QtBase. In that case, stop overriding the value.
+if(NOT INSTALL_CMAKE_NAMESPACE)
+ set(INSTALL_CMAKE_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
+ CACHE STRING "CMake namespace [Qt${PROJECT_VERSION_MAJOR}]")
+endif()
+if(NOT QT_CMAKE_EXPORT_NAMESPACE)
+ set(QT_CMAKE_EXPORT_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
+ CACHE STRING "CMake namespace used when exporting targets [Qt${PROJECT_VERSION_MAJOR}]")
+endif()
-set(QT_CMAKE_EXPORT_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}" CACHE STRING "CMake namespace used when exporting targets [Qt${PROJECT_VERSION_MAJOR}]")
set(QT_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}")
# the default RPATH to be used when installing, but only if it's not a system directory
@@ -1837,3 +1845,26 @@ function(qt_install_3rdparty_library target)
qt_install_3rdparty_config_files(${target} EXPORT ${target} ${ARGN})
endfunction()
+macro(qt_find_apple_system_frameworks)
+ if(APPLE)
+ find_library(FWAppKit AppKit)
+ find_library(FWApplicationServices ApplicationServices)
+ find_library(FWCarbon Carbon)
+ find_library(FWCoreFoundation CoreFoundation)
+ find_library(FWCoreServices CoreServices)
+ find_library(FWCoreVideo CoreVideo)
+ find_library(FWcups cups)
+ find_library(FWDiskArbitration DiskArbitration)
+ find_library(FWFoundation Foundation)
+ find_library(FWIOKit IOKit)
+ find_library(FWIOSurface IOSurface)
+ find_library(FWImageIO ImageIO)
+ find_library(FWMetal Metal)
+ find_library(FWMobileCoreServices MobileCoreServices)
+ find_library(FWQuartzCore QuartzCore)
+ find_library(FWSecurity Security)
+ find_library(FWSystemConfiguration SystemConfiguration)
+ find_library(FWUIKit UIKit)
+ find_library(FWWatchKit WatchKit)
+ endif()
+endmacro()
diff --git a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
index 767a9dc45f..6f0708bd80 100644
--- a/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
+++ b/cmake/QtBuildInternals/QtBuildInternalsConfig.cmake
@@ -12,18 +12,22 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/QtBuildInternalsExtra.cmake")
include(${CMAKE_CURRENT_LIST_DIR}/QtBuildInternalsExtra.cmake)
endif()
+macro(qt_set_up_build_internals_paths)
+ # Set up the paths for the modules.
+ set(QT_CMAKE_MODULE_PATH "${QT_BUILD_INTERNALS_PATH}/../${QT_CMAKE_EXPORT_NAMESPACE}")
+ list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_MODULE_PATH})
+
+ # If the repo has its own cmake modules, include those in the module path.
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+ endif()
+endmacro()
+
macro(qt_build_repo_begin)
if(${ARGC} EQUAL 1 AND "${ARGV0}" STREQUAL "SKIP_CMAKE_MODULE_PATH_ADDITION")
# No-op.
else()
- # Set up the paths for the modules.
- set(QT_CMAKE_MODULE_PATH "${QT_BUILD_INTERNALS_PATH}/../${QT_CMAKE_EXPORT_NAMESPACE}")
- list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_MODULE_PATH})
-
- # If the repo has its own cmake modules, include those in the module path.
- if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
- endif()
+ qt_set_up_build_internals_paths()
endif()
# Qt specific setup common for all modules:
@@ -73,3 +77,18 @@ macro(qt_build_repo)
qt_build_repo_end()
endmacro()
+
+macro(qt_set_up_standalone_tests_build)
+ qt_set_up_build_internals_paths()
+ include(QtSetup)
+ qt_find_apple_system_frameworks()
+endmacro()
+
+macro(qt_build_tests)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/auto/CMakeLists.txt")
+ add_subdirectory(auto)
+ endif()
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/benchmarks/CMakeLists.txt")
+ add_subdirectory(benchmarks)
+ endif()
+endmacro()
diff --git a/cmake/QtPostProcess.cmake b/cmake/QtPostProcess.cmake
index b1fb07c394..b43af42eec 100644
--- a/cmake/QtPostProcess.cmake
+++ b/cmake/QtPostProcess.cmake
@@ -174,6 +174,10 @@ option(BUILD_SHARED_LIBS \"Build Qt statically or dynamically\" ${BUILD_SHARED_L
string(APPEND QT_BUILD_INTERNALS_EXTRA_CMAKE_CODE "
set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})")
string(APPEND QT_BUILD_INTERNALS_EXTRA_CMAKE_CODE "
+set(INSTALL_CMAKE_NAMESPACE ${INSTALL_CMAKE_NAMESPACE})")
+ string(APPEND QT_BUILD_INTERNALS_EXTRA_CMAKE_CODE "
+set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})")
+ string(APPEND QT_BUILD_INTERNALS_EXTRA_CMAKE_CODE "
set(QT_BUILD_INTERNALS_PATH \"\${CMAKE_CURRENT_LIST_DIR}\")")
# Propagate the original install prefix, so that a developer building a child module can
diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt
index a1e7625650..04b89c3f95 100644
--- a/qmake/CMakeLists.txt
+++ b/qmake/CMakeLists.txt
@@ -8,9 +8,7 @@ qt_copy_or_install(DIRECTORY "${PROJECT_SOURCE_DIR}/mkspecs"
DESTINATION ${mkspecs_install_dir})
# special case end
-find_library(FWApplicationServices ApplicationServices) # special case
-find_library(FWCoreServices CoreServices) # special case
-find_library(FWFoundation Foundation) # special case
+qt_find_apple_system_frameworks() # special case
#####################################################################
## qmake Binary:
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index dbd6f15923..1bc66bee9d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,24 +1,4 @@
-if(APPLE)
- find_library(FWAppKit AppKit)
- find_library(FWApplicationServices ApplicationServices)
- find_library(FWCarbon Carbon)
- find_library(FWCoreFoundation CoreFoundation)
- find_library(FWCoreServices CoreServices)
- find_library(FWCoreVideo CoreVideo)
- find_library(FWcups cups)
- find_library(FWDiskArbitration DiskArbitration)
- find_library(FWFoundation Foundation)
- find_library(FWIOKit IOKit)
- find_library(FWIOSurface IOSurface)
- find_library(FWImageIO ImageIO)
- find_library(FWMetal Metal)
- find_library(FWMobileCoreServices MobileCoreServices)
- find_library(FWQuartzCore QuartzCore)
- find_library(FWSecurity Security)
- find_library(FWSystemConfiguration SystemConfiguration)
- find_library(FWUIKit UIKit)
- find_library(FWWatchKit WatchKit)
-endif()
+qt_find_apple_system_frameworks()
add_subdirectory(3rdparty)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 0653827192..109a165d74 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1 +1,16 @@
-add_subdirectory(auto)
+# special case begin
+if(NOT TARGET Qt::Test)
+ cmake_minimum_required(VERSION 3.14.0)
+ project(QtBaseTests C CXX ASM)
+ find_package(Qt5 REQUIRED COMPONENTS BuildInternals Core Test)
+ find_package(Qt5 COMPONENTS DBus Gui OpenGL Widgets Xml)
+ qt_set_up_standalone_tests_build()
+
+ # Find a few packages that are usually found in configure.cmake,
+ # because a few tests link directly against those libraries.
+ qt_find_package(WrapDBus1 PROVIDED_TARGETS dbus-1)
+ qt_find_package(WrapOpenGL PROVIDED_TARGETS WrapOpenGL)
+endif()
+# special case end
+
+qt_build_tests()