Path: blob/master/Tests/CMakeOnly/AllFindModules/CMakeLists.txt
3153 views
cmake_minimum_required(VERSION 3.10)1project(AllFindModules)23# Avoid ctest truncation of output4message(STATUS "CTEST_FULL_OUTPUT")56set(ORIGINAL_MODULE_PATH "${CMAKE_MODULE_PATH}")78file(GLOB FIND_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../Modules/Find*.cmake" )910macro(do_find MODULE_NAME)11message(STATUS " Checking Find${MODULE_NAME}")12find_package(${MODULE_NAME})13set(CMAKE_MODULE_PATH "${ORIGINAL_MODULE_PATH}")14endmacro()1516# It is only possible to use either Qt3 or Qt4 in one project.17# Since FindQt will complain if both are found we explicitly request Qt4 here18# and filter out FindQt3. FindKDE3 also depends on Qt3 and19# is therefore also blocked20set(DESIRED_QT_VERSION 4)21set(NO_QT4_MODULES "Qt3" "KDE3")2223# ignore everything that has it's own test in Tests/Module/24file(GLOB OWN_TEST_MODULES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/../../Module/" "${CMAKE_CURRENT_SOURCE_DIR}/../../Module/Find*")25foreach(FIND_MODULE IN LISTS OWN_TEST_MODULES)26string(REGEX REPLACE "^Find" "" _MOD_NAME "${FIND_MODULE}")27list(APPEND NO_FIND_MODULES "${_MOD_NAME}")28endforeach()2930# These modules are named Find*.cmake, but are nothing that works in31# find_package().32list(APPEND NO_FIND_MODULES "PackageHandleStandardArgs" "PackageMessage")3334foreach(FIND_MODULE IN LISTS FIND_MODULES)35string(REGEX REPLACE ".*/Find(.*)\\.cmake$" "\\1" MODULE_NAME "${FIND_MODULE}")3637list(FIND NO_QT4_MODULES ${MODULE_NAME} NO_QT4_INDEX)38list(FIND NO_FIND_MODULES ${MODULE_NAME} NO_FIND_INDEX)39if (NO_QT4_INDEX EQUAL -1 AND NO_FIND_INDEX EQUAL -1)40do_find(${MODULE_NAME})41endif ()4243endforeach()4445# Qt4 is not present, so we can check Qt346if (NOT Qt4_FOUND)47set(DESIRED_QT_VERSION 3)48foreach(FIND_MODULE ${NO_QT4_MODULES} "Qt")49do_find(${FIND_MODULE})50endforeach()51endif ()5253macro(check_version_string MODULE_NAME VERSION_VAR)54string(FIND " ${CMake_TEST_CMakeOnly.AllFindModules_NO_VERSION} " " ${MODULE_NAME} " _exclude_pos)55if (NOT _exclude_pos EQUAL -1)56message(STATUS "excluding check of ${VERSION_VAR}='${${VERSION_VAR}}' due to local configuration")57elseif (${MODULE_NAME}_FOUND)5859unset(SKIP_CHECK)60if(${MODULE_NAME} STREQUAL "HG")61execute_process(COMMAND "${HG_EXECUTABLE}" --version OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE HG_RV)62if(NOT HG_RV EQUAL 0)63message(WARNING "Broken HG executable detected, skipping")64set(SKIP_CHECK TRUE)65endif()66endif()67if (DEFINED ${VERSION_VAR})68message(STATUS "${VERSION_VAR}='${${VERSION_VAR}}'")69if (NOT ${VERSION_VAR} MATCHES "^[0-9]")70message(SEND_ERROR "unexpected: ${VERSION_VAR} does not begin with a decimal digit")71endif()72if ("${${VERSION_VAR}}" STREQUAL "")73message(SEND_ERROR "unexpected: ${VERSION_VAR} is empty")74endif()75if (${VERSION_VAR} VERSION_EQUAL 0)76message(SEND_ERROR "unexpected: ${VERSION_VAR} is VERSION_EQUAL 0")77endif()78if (NOT ${VERSION_VAR} VERSION_GREATER 0)79message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0")80endif()81else()82if(NOT SKIP_CHECK)83message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")84endif()85endif()86endif ()87endmacro()8889# If any of these modules reported that it was found a version number should have been90# reported.9192foreach(93VTEST94ALSA ARMADILLO95BZIP296CUPS CURL97EXPAT98FREETYPE99GETTEXT GIT GNUTLS100HG HSPELL101ICOTOOL102JASPER103LIBLZMA LIBXML2 LIBXSLT LTTNGUST104OpenCL105PERL PKG_CONFIG PNG PostgreSQL106SDL107TCLSH TIFF108wxWidgets109ZLIB110)111check_version_string(${VTEST} ${VTEST}_VERSION_STRING)112endforeach()113114foreach(115VTEST116ALSA Armadillo117BISON Boost BZip2 BZIP2118CUDA Cups119DevIL Doxygen DOXYGEN120EXPAT121FLEX Freetype122Gettext GIF GnuTLS GNUTLS GTK2123HDF5 Hg HSPELL124Icotool125Jasper JPEG126LibArchive LibLZMA LIBLZMA LibXml2 LibXslt LTTngUST127OpenCL OpenSceneGraph OPENSCENEGRAPH OpenSSL OPENSSL128Perl PerlLibs PkgConfig PNG PostgreSQL Protobuf129Ruby RUBY130SDL SWIG131Tclsh TIFF132wxWidgets133ZLIB134)135check_version_string(${VTEST} ${VTEST}_VERSION)136endforeach()137138check_version_string(PYTHONINTERP PYTHON_VERSION_STRING)139check_version_string(SUBVERSION Subversion_VERSION)140check_version_string(SUBVERSION Subversion_VERSION_SVN)141142143