diff options
-rw-r--r-- | config.tests/cmake_zstd/check_zstd.cmake | 5 | ||||
-rw-r--r-- | configure.cmake | 18 | ||||
-rw-r--r-- | src/corelib/CMakeLists.txt | 5 |
3 files changed, 28 insertions, 0 deletions
diff --git a/config.tests/cmake_zstd/check_zstd.cmake b/config.tests/cmake_zstd/check_zstd.cmake new file mode 100644 index 0000000000..267494f90b --- /dev/null +++ b/config.tests/cmake_zstd/check_zstd.cmake @@ -0,0 +1,5 @@ +file(ARCHIVE_CREATE + OUTPUT cmake_zstd.zstd + PATHS "${CMAKE_CURRENT_LIST_FILE}" + FORMAT raw + COMPRESSION Zstd) diff --git a/configure.cmake b/configure.cmake index 840d5f586c..cfd355dcfe 100644 --- a/configure.cmake +++ b/configure.cmake @@ -830,6 +830,24 @@ qt_feature("zstd" PRIVATE LABEL "Zstandard support" CONDITION ZSTD_FOUND ) +# special case begin +# Check whether CMake was built with zstd support. +# See https://gitlab.kitware.com/cmake/cmake/-/issues/21552 +if(NOT DEFINED CACHE{QT_CMAKE_ZSTD_SUPPORT}) + set(QT_CMAKE_ZSTD_SUPPORT FALSE CACHE INTERNAL "") + if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.18") + execute_process(COMMAND "${CMAKE_COMMAND}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/config.tests/cmake_zstd/check_zstd.cmake" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/config.tests" + OUTPUT_QUIET ERROR_QUIET + RESULT_VARIABLE qt_check_zstd_exit_code) + if(qt_check_zstd_exit_code EQUAL 0) + set(QT_CMAKE_ZSTD_SUPPORT TRUE CACHE INTERNAL "") + endif() + unset(qt_check_zstd_exit_code) + endif() +endif() +# special case end qt_feature("thread" PUBLIC SECTION "Kernel" LABEL "Thread support" diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 2af8854798..3c6b20636a 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -1187,6 +1187,11 @@ if(QT_FEATURE_mimetype AND QT_FEATURE_mimetype_database) ) else() if(QT_FEATURE_zstd) + if(NOT QT_CMAKE_ZSTD_SUPPORT) + message(FATAL_ERROR + "CMake was not built with zstd support. " + "Rebuild CMake or set QT_AVOID_CMAKE_ARCHIVING_API=ON.") + endif() set(qmime_db_compression Zstd) string(APPEND qmime_db_content "#define MIME_DATABASE_IS_ZSTD\n") else() |