Files
CMake/Tests/CMakeOnly/AllFindModules/CMakeLists.txt
Julien Marrec e672db628b FindRuby: Rename variables to match case of module name
Use recommended case for variable names, i.e. matching name of the
module as passed to `find_package`.

For backwards compatibility, the upper case versions of both input and
output variables are used and defined when appropriate.  Skip this for
the _FOUND variable because FPHSA already does it.

This follows the approach from commit a7b09e7f43 (FindProtobuf: Rename
variables to match case of module name, 2016-03-01, v3.6.0-rc1~273^2).

Issue: #20370
2020-03-11 13:56:10 -04:00

95 lines
3.7 KiB
CMake

cmake_minimum_required(VERSION 2.8.4) # new enough for CMP0017
project(AllFindModules)
# Avoid ctest truncation of output
message(STATUS "CTEST_FULL_OUTPUT")
set(ORIGINAL_MODULE_PATH "${CMAKE_MODULE_PATH}")
file(GLOB FIND_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../Modules/Find*.cmake" )
macro(do_find MODULE_NAME)
message(STATUS " Checking Find${MODULE_NAME}")
find_package(${MODULE_NAME})
set(CMAKE_MODULE_PATH "${ORIGINAL_MODULE_PATH}")
endmacro()
# It is only possible to use either Qt3 or Qt4 in one project.
# Since FindQt will complain if both are found we explicitly request Qt4 here
# and filter out FindQt3. FindKDE3 also depends on Qt3 and
# is therefore also blocked
set(DESIRED_QT_VERSION 4)
set(NO_QT4_MODULES "Qt3" "KDE3")
# ignore everything that has it's own test in Tests/Module/
file(GLOB OWN_TEST_MODULES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/../../Module/" "${CMAKE_CURRENT_SOURCE_DIR}/../../Module/Find*")
foreach(FIND_MODULE IN LISTS OWN_TEST_MODULES)
string(REGEX REPLACE "^Find" "" _MOD_NAME "${FIND_MODULE}")
list(APPEND NO_FIND_MODULES "${_MOD_NAME}")
endforeach()
# These modules are named Find*.cmake, but are nothing that works in
# find_package().
list(APPEND NO_FIND_MODULES "PackageHandleStandardArgs" "PackageMessage")
foreach(FIND_MODULE IN LISTS FIND_MODULES)
string(REGEX REPLACE ".*/Find(.*)\\.cmake$" "\\1" MODULE_NAME "${FIND_MODULE}")
list(FIND NO_QT4_MODULES ${MODULE_NAME} NO_QT4_INDEX)
list(FIND NO_FIND_MODULES ${MODULE_NAME} NO_FIND_INDEX)
if (NO_QT4_INDEX EQUAL -1 AND NO_FIND_INDEX EQUAL -1)
do_find(${MODULE_NAME})
endif ()
endforeach()
# Qt4 is not present, so we can check Qt3
if (NOT QT4_FOUND)
set(DESIRED_QT_VERSION 3)
foreach(FIND_MODULE ${NO_QT4_MODULES} "Qt")
do_find(${FIND_MODULE})
endforeach()
endif ()
macro(check_version_string MODULE_NAME VERSION_VAR)
string(FIND " ${CMake_TEST_CMakeOnly.AllFindModules_NO_VERSION} " " ${MODULE_NAME} " _exclude_pos)
if (NOT _exclude_pos EQUAL -1)
message(STATUS "excluding check of ${VERSION_VAR}='${${VERSION_VAR}}' due to local configuration")
elseif (${MODULE_NAME}_FOUND)
if (DEFINED ${VERSION_VAR})
message(STATUS "${VERSION_VAR}='${${VERSION_VAR}}'")
if (NOT ${VERSION_VAR} MATCHES "^[0-9]")
message(SEND_ERROR "unexpected: ${VERSION_VAR} does not begin with a decimal digit")
endif()
if ("${${VERSION_VAR}}" STREQUAL "")
message(SEND_ERROR "unexpected: ${VERSION_VAR} is empty")
endif()
if (${VERSION_VAR} VERSION_EQUAL 0)
message(SEND_ERROR "unexpected: ${VERSION_VAR} is VERSION_EQUAL 0")
endif()
if (NOT ${VERSION_VAR} VERSION_GREATER 0)
message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0")
endif()
else()
message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")
endif()
endif ()
endmacro()
# If any of these modules reported that it was found a version number should have been
# reported.
foreach(VTEST ALSA ARMADILLO BZIP2 CUPS CURL EXPAT FREETYPE GETTEXT GIT HG
HSPELL ICOTOOL JASPER LIBLZMA LIBXML2 LIBXSLT LTTNGUST PERL PKG_CONFIG
PostgreSQL TIFF ZLIB)
check_version_string(${VTEST} ${VTEST}_VERSION_STRING)
endforeach()
foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2
HDF5 JPEG LibArchive OPENSCENEGRAPH Ruby RUBY SWIG Protobuf)
check_version_string(${VTEST} ${VTEST}_VERSION)
endforeach()
check_version_string(PYTHONINTERP PYTHON_VERSION_STRING)
check_version_string(SUBVERSION Subversion_VERSION_SVN)