diff options
-rw-r--r-- | cmake/QtBuild.cmake | 35 | ||||
-rw-r--r-- | cmake/QtBuildInternals/QtBuildInternalsConfig.cmake | 35 | ||||
-rw-r--r-- | cmake/QtPostProcess.cmake | 4 | ||||
-rw-r--r-- | qmake/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/CMakeLists.txt | 22 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 17 |
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() |