Warning, /frameworks/extra-cmake-modules/tests/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 #============================================================================= 0002 # SPDX-FileCopyrightText: 2011 Alex Neundorf <neundorf@kde.org> 0003 # SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org> 0004 # 0005 # SPDX-License-Identifier: BSD-3-Clause 0006 #============================================================================= 0007 0008 # We need to set a language to find CMake packages installed in 0009 # architecture-dependent locations (like /usr/lib64). 0010 # We only set this for the tests, making sure it does not interfere 0011 # with other files (as ECM itself is architecture-independent). 0012 project(ECMTests C CXX) 0013 include(../modules/QtVersionOption.cmake) 0014 0015 find_package(Qt${QT_MAJOR_VERSION} COMPONENTS Core LinguistTools Quick CONFIG) 0016 set_package_properties( 0017 Qt${QT_MAJOR_VERSION}LinguistTools 0018 PROPERTIES 0019 URL "https://www.qt.io/" 0020 DESCRIPTION "Qt linguist tools." 0021 TYPE OPTIONAL 0022 PURPOSE "Required to run tests for the ECMPoQmTools module." 0023 ) 0024 0025 set_package_properties( 0026 Qt${QT_MAJOR_VERSION}Core 0027 PROPERTIES 0028 URL "https://www.qt.io/" 0029 DESCRIPTION "Qt core library." 0030 TYPE OPTIONAL 0031 PURPOSE "Required to run tests for the ECMQtDeclareLoggingCategory module, and for some tests of the KDEInstallDirs module." 0032 ) 0033 0034 add_subdirectory(ECMAddTests) 0035 add_subdirectory(ECMGenerateExportHeaderTest) 0036 add_subdirectory(ECMGenerateHeadersTest) 0037 add_subdirectory(ECMSetupVersionTest) 0038 add_subdirectory(ECMGeneratePkgConfigFile) 0039 0040 if (TARGET Qt6::Core) 0041 set(QT_VERSION_OPT "-DBUILD_WITH_QT6=ON") 0042 else() 0043 set(QT_VERSION_OPT "-DBUILD_WITH_QT6=OFF") 0044 endif() 0045 0046 # a macro for tests that have a simple format where the name matches the 0047 # directory and project 0048 macro(add_test_variant NAME BASE COMMAND) 0049 string(REPLACE "." "/" src_dir "${BASE}") 0050 string(REPLACE "." "/" build_dir "${NAME}") 0051 string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}") 0052 if (NOT ${NAME}_EXTRA_OPTIONS) 0053 set(_build_opts --build-options ${QT_VERSION_OPT}) 0054 else() 0055 set(_build_opts ${${NAME}_EXTRA_OPTIONS} ${QT_VERSION_OPT}) 0056 endif() 0057 add_test(${NAME} ${CMAKE_CTEST_COMMAND} 0058 --build-and-test 0059 "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}" 0060 "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}" 0061 --build-two-config 0062 --build-generator ${CMAKE_GENERATOR} 0063 --build-makeprogram ${CMAKE_MAKE_PROGRAM} 0064 --build-project ${proj} 0065 ${_build_opts} 0066 --test-command ${COMMAND} ${ARGN}) 0067 endmacro() 0068 macro(add_test_macro NAME) 0069 add_test_variant("${NAME}" "${NAME}" ${ARGN}) 0070 endmacro() 0071 0072 list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/find-modules) 0073 0074 add_subdirectory(ECMCheckOutboundLicenseTest) 0075 0076 # Skip if PyQt not available 0077 find_file(SIP_Qt5Core_Mod_FILE 0078 NAMES QtCoremod.sip 0079 PATH_SUFFIXES share/sip/PyQt5/QtCore 0080 ) 0081 0082 if(NOT SIP_Qt5Core_Mod_FILE) 0083 message(STATUS "WARNING: skipping tests that require PyQt") 0084 else() 0085 find_package(PythonModuleGeneration) 0086 foreach(pyversion 2 3) 0087 if (GPB_PYTHON${pyversion}_COMMAND) 0088 if (pythonCommands) 0089 list(APPEND pythonCommands " && ") 0090 endif() 0091 set(pythonCommands 0092 ${GPB_PYTHON${pyversion}_COMMAND} 0093 "${CMAKE_CURRENT_SOURCE_DIR}/GenerateSipBindings/testscript.py" 0094 "${CMAKE_CURRENT_BINARY_DIR}/GenerateSipBindings/py${pyversion}" 0095 ) 0096 endif() 0097 endforeach() 0098 if (pythonCommands) 0099 add_test_macro(GenerateSipBindings ${pythonCommands}) 0100 else() 0101 message(STATUS "WARNING: skipping GenerateSipBindings test") 0102 endif() 0103 endif() 0104 0105 add_test_macro(ExecuteCoreModules dummy) 0106 add_test_macro(ExecuteKDEModules dummy) 0107 add_test_macro(KDEFetchTranslations dummy) 0108 0109 add_test_variant(KDEInstallDirsTest.vars_in_sync_no_args 0110 KDEInstallDirsTest.vars_in_sync dummy) 0111 add_test_macro(KDEInstallDirsTest.not_cache_variable dummy) 0112 0113 set(KDEInstallDirsTest.vars_in_sync_kde_arg_EXTRA_OPTIONS 0114 --build-options -DKDE_INSTALL_BINDIR=altbin 0115 -DBINDIR_expected_value=altbin 0116 -DCMAKE_WARN_DEPRECATED=TRUE 0117 ) 0118 add_test_variant(KDEInstallDirsTest.vars_in_sync_kde_arg 0119 KDEInstallDirsTest.vars_in_sync dummy) 0120 0121 set(KDEInstallDirsTest.vars_in_sync_cmake_arg_EXTRA_OPTIONS 0122 --build-options -DCMAKE_INSTALL_BINDIR=altbin 0123 -DBINDIR_expected_value=altbin 0124 -DCMAKE_WARN_DEPRECATED=TRUE 0125 ) 0126 add_test_variant(KDEInstallDirsTest.vars_in_sync_cmake_arg 0127 KDEInstallDirsTest.vars_in_sync dummy) 0128 0129 # KDEInstallDirs6 explicitly sets KDE_INSTALL_DIRS_NO_DEPRECATED to false, 0130 # hence this test makes no sense in that case 0131 if(TARGET Qt5::Core) 0132 set(KDEInstallDirsTest.vars_in_sync_oldstyle_arg_EXTRA_OPTIONS 0133 --build-options -DBIN_INSTALL_DIR=altbin 0134 -DBINDIR_expected_value=altbin 0135 -DCMAKE_WARN_DEPRECATED=TRUE 0136 ) 0137 add_test_variant(KDEInstallDirsTest.vars_in_sync_oldstyle_arg 0138 KDEInstallDirsTest.vars_in_sync dummy) 0139 endif() 0140 0141 set(KDEInstallDirsTest.relative_or_absolute_usr_EXTRA_OPTIONS 0142 --build-options -DCMAKE_INSTALL_PREFIX=/usr 0143 -DKDE_INSTALL_USE_QT_SYS_PATHS=FALSE 0144 -DAUTOSTARTDIR_should_be_absolute=TRUE 0145 -DCONFDIR_should_be_absolute=TRUE 0146 -DSYSCONFDIR_should_be_absolute=TRUE 0147 ) 0148 add_test_variant(KDEInstallDirsTest.relative_or_absolute_usr 0149 KDEInstallDirsTest.relative_or_absolute dummy) 0150 0151 if (TARGET Qt5::qmake OR TARGET Qt6::Core) 0152 set(KDEInstallDirsTest.relative_or_absolute_qt_EXTRA_OPTIONS 0153 --build-options -DCMAKE_INSTALL_PREFIX=/tmp 0154 -DKDE_INSTALL_USE_QT_SYS_PATHS=TRUE 0155 -DPLUGINDIR_should_be_absolute=TRUE 0156 -DQMLDIR_should_be_absolute=TRUE 0157 -DQTQCHDIR_should_be_absolute=TRUE 0158 -DQTPLUGINDIR_should_be_absolute=TRUE 0159 -DQTQUICKIMPORTSDIR_should_be_absolute=TRUE 0160 ) 0161 add_test_variant(KDEInstallDirsTest.relative_or_absolute_qt 0162 KDEInstallDirsTest.relative_or_absolute dummy) 0163 endif () 0164 if (TARGET Qt${QT_MAJOR_VERSION}::Core) 0165 set(ECMQtDeclareLoggingCategoryTest_EXTRA_OPTIONS 0166 --build-target all 0167 --build-options 0168 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQtDeclareLoggingCategoryTest/InstallDirectory" 0169 ) 0170 add_test_macro(ECMQtDeclareLoggingCategoryTest 0171 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQtDeclareLoggingCategoryTest/check.cmake" 0172 ) 0173 endif() 0174 0175 add_test_macro(FindModules dummy) 0176 add_test_macro(UseFindModules dummy) 0177 0178 set(ECMAddAppIconTest_EXTRA_OPTIONS 0179 --build-target all 0180 --build-options 0181 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMAddAppIconTest/InstallDirectory" 0182 ) 0183 add_test_macro(ECMAddAppIconTest 0184 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMAddAppIconTest/check_files.cmake" 0185 ) 0186 0187 set(ECMInstallIconsTest_EXTRA_OPTIONS 0188 --build-target install 0189 --build-options 0190 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMInstallIconsTest/InstallDirectory" 0191 ) 0192 add_test_macro(ECMInstallIconsTest 0193 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMInstallIconsTest/check_tree.cmake" 0194 ) 0195 0196 set(KDEPackageAppTemplatesTest_EXTRA_OPTIONS 0197 --build-target install 0198 --build-options 0199 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/KDEPackageAppTemplatesTest/InstallDirectory" 0200 ) 0201 add_test_macro(KDEPackageAppTemplatesTest 0202 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/KDEPackageAppTemplatesTest/check.cmake" 0203 ) 0204 0205 if (TARGET Qt${QT_MAJOR_VERSION}::Core AND TARGET Qt${QT_MAJOR_VERSION}::lconvert) 0206 set(ECMPoQmToolsTest_EXTRA_OPTIONS 0207 --build-target install 0208 --build-options 0209 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMPoQmToolsTest/InstallDirectory" 0210 ) 0211 add_test_macro(ECMPoQmToolsTest 0212 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMPoQmToolsTest/check.cmake" 0213 ) 0214 endif() 0215 0216 set_package_properties( 0217 Qt${QT_MAJOR_VERSION}Quick 0218 PROPERTIES 0219 URL "https://www.qt.io/" 0220 DESCRIPTION "Qt Quick library." 0221 TYPE OPTIONAL 0222 PURPOSE "Required to run tests for the ECMQMLModules module." 0223 ) 0224 if (TARGET Qt${QT_MAJOR_VERSION}::Quick) 0225 set(ECMFindQmlModuleTest.nonexistent_EXTRA_OPTIONS 0226 --build-options -DQML_MODULE_NAME=org.kde.ecmtest42 -DQML_MODULE_VERSION=2.0 -DEXPECTED_FOUND_VARAIBLE=FALSE 0227 ) 0228 add_test_variant(ECMFindQmlModuleTest.nonexistent ECMFindQmlModuleTest dummy) 0229 set(ECMFindQmlModuleTest.existent_EXTRA_OPTIONS 0230 --build-options -DQML_MODULE_NAME=org.kde.ecmtest -DQML_MODULE_VERSION=2.0 -DEXPECTED_FOUND_VARAIBLE=TRUE -DBUILD_WITH_QT6=ON 0231 ) 0232 add_test_variant(ECMFindQmlModuleTest.existent ECMFindQmlModuleTest dummy) 0233 0234 0235 set(ECMFindQmlModuleTest.missmatching_version_EXTRA_OPTIONS 0236 --build-options -DQML_MODULE_NAME=org.kde.ecmtest -DQML_MODULE_VERSION=2.9 -DEXPECTED_FOUND_VARAIBLE=FALSE 0237 ) 0238 add_test_variant(ECMFindQmlModuleTest.missmatching_version ECMFindQmlModuleTest dummy) 0239 if (QT_MAJOR_VERSION VERSION_GREATER 5) 0240 set(ECMFindQmlModuleTest.later_version_found_EXTRA_OPTIONS 0241 --build-options -DQML_MODULE_NAME=org.kde.ecmtest -DQML_MODULE_VERSION=1.9 -DEXPECTED_FOUND_VARAIBLE=TRUE 0242 ) 0243 add_test_variant(ECMFindQmlModuleTest.later_version_found ECMFindQmlModuleTest dummy) 0244 endif() 0245 endif() 0246 0247 if (TARGET Qt5::Quick) 0248 set(ECMQmlModuleTest.static_full_qt5_EXTRA_OPTIONS 0249 --build-target install 0250 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_full_qt5/install 0251 -DBUILD_SHARED_LIBS=OFF 0252 -DQT_MAJOR_VERSION=5 0253 ) 0254 add_test_variant(ECMQmlModuleTest.static_full_qt5 ECMQmlModuleTest 0255 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_full_qt5/check.cmake" 0256 ) 0257 0258 set(ECMQmlModuleTest.shared_full_qt5_EXTRA_OPTIONS 0259 --build-target install 0260 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_full_qt5/install 0261 -DBUILD_SHARED_LIBS=ON 0262 -DQT_MAJOR_VERSION=5 0263 ) 0264 add_test_variant(ECMQmlModuleTest.shared_full_qt5 ECMQmlModuleTest 0265 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_full_qt5/check.cmake" 0266 ) 0267 0268 set(ECMQmlModuleTest.static_qmlonly_qt5_EXTRA_OPTIONS 0269 --build-target install 0270 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_qmlonly_qt5/install 0271 -DBUILD_SHARED_LIBS=OFF 0272 -DQML_ONLY=ON 0273 -DQT_MAJOR_VERSION=5 0274 ) 0275 add_test_variant(ECMQmlModuleTest.static_qmlonly_qt5 ECMQmlModuleTest 0276 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_qmlonly_qt5/check.cmake" 0277 ) 0278 0279 set(ECMQmlModuleTest.shared_qmlonly_qt5_EXTRA_OPTIONS 0280 --build-target install 0281 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_qmlonly_qt5/install 0282 -DBUILD_SHARED_LIBS=ON 0283 -DQML_ONLY=ON 0284 -DQT_MAJOR_VERSION=5 0285 ) 0286 add_test_variant(ECMQmlModuleTest.shared_qmlonly_qt5 ECMQmlModuleTest 0287 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_qmlonly_qt5/check.cmake" 0288 ) 0289 0290 set(ECMQmlModuleTest.shared_depends_qt5_EXTRA_OPTIONS 0291 --build-target install 0292 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_depends_qt5/install 0293 -DBUILD_SHARED_LIBS=ON 0294 -DDEPENDS=ON 0295 -DQT_MAJOR_VERSION=5 0296 ) 0297 add_test_variant(ECMQmlModuleTest.shared_depends_qt5 ECMQmlModuleTest 0298 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_depends_qt5/check.cmake" 0299 ) 0300 endif() 0301 0302 if (TARGET Qt6::Quick) 0303 set(ECMQmlModuleTest.static_full_qt6_EXTRA_OPTIONS 0304 --build-target install 0305 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_full_qt6/install 0306 -DBUILD_SHARED_LIBS=OFF 0307 -DQT_MAJOR_VERSION=6 0308 ) 0309 add_test_variant(ECMQmlModuleTest.static_full_qt6 ECMQmlModuleTest 0310 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_full_qt6/check.cmake" 0311 ) 0312 0313 set(ECMQmlModuleTest.shared_full_qt6_EXTRA_OPTIONS 0314 --build-target install 0315 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_full_qt5/install 0316 -DBUILD_SHARED_LIBS=ON 0317 -DQT_MAJOR_VERSION=6 0318 ) 0319 add_test_variant(ECMQmlModuleTest.shared_full_qt6 ECMQmlModuleTest 0320 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_full_qt6/check.cmake" 0321 ) 0322 0323 set(ECMQmlModuleTest.static_qmlonly_qt6_EXTRA_OPTIONS 0324 --build-target install 0325 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_qmlonly_qt6/install 0326 -DBUILD_SHARED_LIBS=OFF 0327 -DQML_ONLY=ON 0328 -DQT_MAJOR_VERSION=6 0329 ) 0330 add_test_variant(ECMQmlModuleTest.static_qmlonly_qt6 ECMQmlModuleTest 0331 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/static_qmlonly_qt6/check.cmake" 0332 ) 0333 0334 set(ECMQmlModuleTest.shared_qmlonly_qt6_EXTRA_OPTIONS 0335 --build-target install 0336 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_qmlonly_qt6/install 0337 -DBUILD_SHARED_LIBS=ON 0338 -DQML_ONLY=ON 0339 -DQT_MAJOR_VERSION=6 0340 ) 0341 add_test_variant(ECMQmlModuleTest.shared_qmlonly_qt6 ECMQmlModuleTest 0342 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_qmlonly_qt6/check.cmake" 0343 ) 0344 0345 set(ECMQmlModuleTest.shared_depends_qt6_EXTRA_OPTIONS 0346 --build-target install 0347 --build-options -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_depends_qt6/install 0348 -DBUILD_SHARED_LIBS=ON 0349 -DDEPENDS=ON 0350 -DQT_MAJOR_VERSION=6 0351 ) 0352 add_test_variant(ECMQmlModuleTest.shared_depends_qt6 ECMQmlModuleTest 0353 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMQmlModuleTest/shared_depends_qt6/check.cmake" 0354 ) 0355 endif() 0356 0357 set(ECMConfiguredInstallTest_EXTRA_OPTIONS 0358 --build-target install 0359 --build-options 0360 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMConfiguredInstallTest/InstallDirectory" 0361 ) 0362 add_test_macro(ECMConfiguredInstallTest 0363 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMConfiguredInstallTest/check_tree.cmake" 0364 ) 0365 0366 set(ECMGenerateDBusServiceFileTest_EXTRA_OPTIONS 0367 --build-target install 0368 --build-options 0369 "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/ECMGenerateDBusServiceFileTest/InstallDirectory" 0370 ) 0371 add_test_macro(ECMGenerateDBusServiceFileTest 0372 ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMGenerateDBusServiceFileTest/check_tree.cmake" 0373 )