aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2021-05-12 16:35:16 +0200
committerIvan Komissarov <ABBAPOH@gmail.com>2021-05-18 08:37:37 +0000
commit287311ed774a86ef9ce053dd42e947cd28b48495 (patch)
treeb3fe3f16a83920df60d275411251e22de590bd57
parentb1ccd9ab328cc7f7e34ab653ec93f389b9945e19 (diff)
cmake: Add Qt6 build
Also, switch Linux CMake job to build Qbs with Qt6 Change-Id: I188845a7cc086a8c87dbb7445ea95f99b26d94ef Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--.github/workflows/main.yml12
-rw-r--r--CMakeLists.txt16
-rw-r--r--cmake/QbsBuildConfig.cmake6
-rw-r--r--doc/CMakeLists.txt2
-rw-r--r--src/app/config-ui/CMakeLists.txt2
-rw-r--r--src/lib/corelib/CMakeLists.txt9
-rw-r--r--src/lib/scriptengine/CMakeLists.txt10
-rw-r--r--src/libexec/qbs_processlauncher/CMakeLists.txt2
-rw-r--r--tests/benchmarker/CMakeLists.txt2
-rw-r--r--tests/fuzzy-test/CMakeLists.txt2
10 files changed, 40 insertions, 23 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index b15885b8a..dde93af8e 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -62,18 +62,20 @@ jobs:
- {
name: 'Build on Linux (clang_tidy)',
script: './scripts/run-analyzer.sh',
+ image: 'focal',
options: 'profile:qt-clang_64 modules.cpp.compilerWrapper:ccache',
cacheid: 'clang',
}
- {
name: 'Build on Linux (CMake)',
script: './scripts/build-qbs-with-cmake.sh',
- options: '-DQBS_USE_BUNDLED_QT_SCRIPT=1',
+ image: 'focal-qt6',
cacheid: 'cmake',
}
- {
name: 'Build on Linux (QMake)',
script: './scripts/build-qbs-with-qmake.sh',
+ image: 'focal',
options: 'CONFIG+=ccache',
cacheid: 'qmake',
}
@@ -96,13 +98,13 @@ jobs:
key: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache-${{ steps.get-timestamp.outputs.timestamp }}
restore-keys: ${{ runner.os }}-${{ matrix.config.cacheid }}-ccache-
- name: Pull the Focal Image
- run: docker-compose pull focal
+ run: docker-compose pull ${{ matrix.config.image }}
- name: Print ccache stats
- run: docker-compose run focal ccache -s
+ run: docker-compose run ${{ matrix.config.image }} ccache -s
- name: Build Qbs
- run: docker-compose run focal ${{ matrix.config.script }}
+ run: docker-compose run ${{ matrix.config.image }} ${{ matrix.config.script }}
- name: Print ccache stats
- run: docker-compose run focal ccache -s
+ run: docker-compose run ${{ matrix.config.image }} ccache -s
build-macos:
name: Build on macOS
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e3d15219..441454b10 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,18 +22,28 @@ set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
+find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
+
if(WITH_TESTS)
enable_testing()
set(QT_TEST_COMPONENT Test)
- set(IMPLICIT_DEPENDS Qt5::Test)
+ set(IMPLICIT_DEPENDS Qt${QT_VERSION_MAJOR}::Test)
endif()
-find_package(Qt5
+find_package(Qt${QT_VERSION_MAJOR}
COMPONENTS Concurrent Core Gui Network Widgets Xml ${QT_TEST_COMPONENT}
REQUIRED
)
-find_package(Qt5 COMPONENTS Script)
+find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS Script)
+
+if (Qt6_FOUND)
+ find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core5Compat REQUIRED)
+ set_property(TARGET Qt6::Core5Compat PROPERTY IMPORTED_GLOBAL TRUE) # hack for CMake < 1.18
+ add_library(Qt6Core5Compat ALIAS Qt6::Core5Compat)
+else()
+ add_library(Qt6Core5Compat INTERFACE)
+endif()
add_subdirectory(src)
add_subdirectory(doc)
diff --git a/cmake/QbsBuildConfig.cmake b/cmake/QbsBuildConfig.cmake
index a1eecded8..8bdfec77e 100644
--- a/cmake/QbsBuildConfig.cmake
+++ b/cmake/QbsBuildConfig.cmake
@@ -55,9 +55,9 @@ endif()
function(get_update_path_command var)
if(WIN32)
- get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_RELEASE)
+ get_target_property(_QTCORE_LIBRARY Qt${QT_VERSION_MAJOR}::Core IMPORTED_LOCATION_RELEASE)
if(NOT _QTCORE_LIBRARY)
- get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_DEBUG)
+ get_target_property(_QTCORE_LIBRARY Qt${QT_VERSION_MAJOR}::Core IMPORTED_LOCATION_DEBUG)
endif()
get_filename_component(_QT_LIBRARY_PATH "${_QTCORE_LIBRARY}" DIRECTORY)
get_target_property(_QBS_LIBRARY_PATH qbscore LIBRARY_OUTPUT_DIRECTORY)
@@ -240,7 +240,7 @@ function(add_qbs_test test_name)
)
target_link_libraries(
${target_name}
- PRIVATE ${_arg_DEPENDS} qbscore qbsconsolelogger Qt5::Test
+ PRIVATE ${_arg_DEPENDS} qbscore qbsconsolelogger Qt${QT_VERSION_MAJOR}::Test
PUBLIC ${_arg_PUBLIC_DEPENDS}
)
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 0b5922a1a..96cdab897 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -42,7 +42,7 @@ if (QBS_INSTALL_HTML_DOCS OR QBS_INSTALL_QCH_DOCS)
set(_INSTALL_QCH_DOCS false)
endif()
- get_target_property(_QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
+ get_target_property(_QT_QMAKE_EXECUTABLE Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION)
get_update_path_command(UPDATE_PATH_COMMAND)
add_custom_target(
BuildQbsDocumentation ALL
diff --git a/src/app/config-ui/CMakeLists.txt b/src/app/config-ui/CMakeLists.txt
index 47b9c1905..f3375d5ea 100644
--- a/src/app/config-ui/CMakeLists.txt
+++ b/src/app/config-ui/CMakeLists.txt
@@ -14,6 +14,6 @@ if(APPLE)
endif()
add_qbs_app(qbs-config-ui
- DEPENDS qbscore qbsconsolelogger Qt5::Widgets ${MACOS_FRAMEWORKS}
+ DEPENDS qbscore qbsconsolelogger Qt${QT_VERSION_MAJOR}::Widgets ${MACOS_FRAMEWORKS}
SOURCES ${SOURCES} ${MACOS_SOURCES}
)
diff --git a/src/lib/corelib/CMakeLists.txt b/src/lib/corelib/CMakeLists.txt
index 3a070b55c..423f04ce7 100644
--- a/src/lib/corelib/CMakeLists.txt
+++ b/src/lib/corelib/CMakeLists.txt
@@ -422,9 +422,14 @@ add_qbs_library(qbscore
PUBLIC_DEFINES
${QBS_PROJECT_FILE_UPDATES_DEFINES}
DEPENDS
- Qt5::CorePrivate Qt5::Network qbsscriptengine Qt5::Xml ${EXTERNAL_DEPENDS}
+ Qt${QT_VERSION_MAJOR}::CorePrivate
+ Qt${QT_VERSION_MAJOR}::Network
+ Qt${QT_VERSION_MAJOR}::Xml
+ Qt6Core5Compat
+ qbsscriptengine
+ ${EXTERNAL_DEPENDS}
PUBLIC_DEPENDS
- Qt5::Core
+ Qt${QT_VERSION_MAJOR}::Core
INCLUDES
"${CMAKE_CURRENT_SOURCE_DIR}/../.."
SOURCES
diff --git a/src/lib/scriptengine/CMakeLists.txt b/src/lib/scriptengine/CMakeLists.txt
index 452605888..01c6cd09b 100644
--- a/src/lib/scriptengine/CMakeLists.txt
+++ b/src/lib/scriptengine/CMakeLists.txt
@@ -38,7 +38,7 @@ set(QT_SCRIPT_INCLUDES
"${QT_SCRIPT_PATH}/script"
"${QT_SCRIPT_PATH}/script/api"
"${QT_SCRIPT_PATH}/script/parser"
- "${CMAKE_CURRENT_BINARY_DIR}/include/QtScript/${Qt5_VERSION}/QtScript"
+ "${CMAKE_CURRENT_BINARY_DIR}/include/QtScript/${QT_VERSION}/QtScript"
)
set(QT_SCRIPT_DEFINES
@@ -83,7 +83,7 @@ else()
"-Wno-nonnull-compare" "-pthread")
endif()
-set(QT_SCRIPT_PUBLIC_DEPENDS Qt5::Core)
+set(QT_SCRIPT_PUBLIC_DEPENDS Qt${QT_VERSION_MAJOR}::Core)
if (UNIX)
list(APPEND QT_SCRIPT_PUBLIC_DEPENDS "pthread")
elseif(WIN32)
@@ -323,7 +323,7 @@ list_transform_prepend(PARSER_SOURCES "${QT_SCRIPT_PATH}/script/parser/")
find_package(Perl)
-get_target_property(_QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
+get_target_property(_QT_QMAKE_EXECUTABLE Qt${QT_VERSION_MAJOR}::qmake IMPORTED_LOCATION)
get_filename_component(_QT_BIN_DIRECTORY ${_QT_QMAKE_EXECUTABLE} DIRECTORY)
file(GLOB API_HEADERS "${QT_SCRIPT_PATH}/script/api/*.h")
@@ -334,7 +334,7 @@ add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/include/QtScript/qscriptengine.h"
COMMAND ${PERL_EXECUTABLE} "${_QT_BIN_DIRECTORY}/syncqt.pl"
-minimal
- -version "${Qt5_VERSION}"
+ -version "${QT_VERSION}"
-outdir ${CMAKE_CURRENT_BINARY_DIR}
"${QT_SCRIPT_PATH}/.."
BYPRODUCTS
@@ -344,7 +344,7 @@ add_custom_command(
add_qbs_library(qbsscriptengine
STATIC
DEFINES ${QT_SCRIPT_DEFINES}
- DEPENDS Qt5::CorePrivate
+ DEPENDS Qt${QT_VERSION_MAJOR}::CorePrivate Qt6Core5Compat
PUBLIC_DEPENDS ${QT_SCRIPT_PUBLIC_DEPENDS}
INCLUDES ${QT_SCRIPT_PUBLIC_INCLUDES} ${QT_SCRIPT_INCLUDES} ${JAVASCRIPT_CORE_INCLUDES}
PUBLIC_INCLUDES ${QT_SCRIPT_PUBLIC_INCLUDES}
diff --git a/src/libexec/qbs_processlauncher/CMakeLists.txt b/src/libexec/qbs_processlauncher/CMakeLists.txt
index 73aca9f07..03ab07cbe 100644
--- a/src/libexec/qbs_processlauncher/CMakeLists.txt
+++ b/src/libexec/qbs_processlauncher/CMakeLists.txt
@@ -15,7 +15,7 @@ list_transform_prepend(PROTOCOL_SOURCES ${PATH_TO_PROTOCOL_SOURCES}/)
add_qbs_app(qbs_processlauncher
DESTINATION ${QBS_LIBEXEC_INSTALL_DIR}
- DEPENDS Qt5::Core Qt5::Network
+ DEPENDS Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network
INCLUDES ${PATH_TO_PROTOCOL_SOURCES}
SOURCES ${SOURCES} ${PROTOCOL_SOURCES}
)
diff --git a/tests/benchmarker/CMakeLists.txt b/tests/benchmarker/CMakeLists.txt
index d77d6d9c4..12a6b3076 100644
--- a/tests/benchmarker/CMakeLists.txt
+++ b/tests/benchmarker/CMakeLists.txt
@@ -13,6 +13,6 @@ set(SOURCES
)
add_qbs_app(qbs_benchmarker
- DEPENDS Qt5::Core Qt5::Concurrent
+ DEPENDS Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Concurrent
SOURCES ${SOURCES}
)
diff --git a/tests/fuzzy-test/CMakeLists.txt b/tests/fuzzy-test/CMakeLists.txt
index fe3a1a54e..43101f68b 100644
--- a/tests/fuzzy-test/CMakeLists.txt
+++ b/tests/fuzzy-test/CMakeLists.txt
@@ -7,6 +7,6 @@ set(SOURCES
)
add_qbs_app(qbs_fuzzy-test
- DEPENDS Qt5::Core
+ DEPENDS Qt${QT_VERSION_MAJOR}::Core
SOURCES ${SOURCES}
)