Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Tests/CMakeOnly/AllFindModules/CMakeLists.txt
3153 views
1
cmake_minimum_required(VERSION 3.10)
2
project(AllFindModules)
3
4
# Avoid ctest truncation of output
5
message(STATUS "CTEST_FULL_OUTPUT")
6
7
set(ORIGINAL_MODULE_PATH "${CMAKE_MODULE_PATH}")
8
9
file(GLOB FIND_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../Modules/Find*.cmake" )
10
11
macro(do_find MODULE_NAME)
12
message(STATUS " Checking Find${MODULE_NAME}")
13
find_package(${MODULE_NAME})
14
set(CMAKE_MODULE_PATH "${ORIGINAL_MODULE_PATH}")
15
endmacro()
16
17
# It is only possible to use either Qt3 or Qt4 in one project.
18
# Since FindQt will complain if both are found we explicitly request Qt4 here
19
# and filter out FindQt3. FindKDE3 also depends on Qt3 and
20
# is therefore also blocked
21
set(DESIRED_QT_VERSION 4)
22
set(NO_QT4_MODULES "Qt3" "KDE3")
23
24
# ignore everything that has it's own test in Tests/Module/
25
file(GLOB OWN_TEST_MODULES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/../../Module/" "${CMAKE_CURRENT_SOURCE_DIR}/../../Module/Find*")
26
foreach(FIND_MODULE IN LISTS OWN_TEST_MODULES)
27
string(REGEX REPLACE "^Find" "" _MOD_NAME "${FIND_MODULE}")
28
list(APPEND NO_FIND_MODULES "${_MOD_NAME}")
29
endforeach()
30
31
# These modules are named Find*.cmake, but are nothing that works in
32
# find_package().
33
list(APPEND NO_FIND_MODULES "PackageHandleStandardArgs" "PackageMessage")
34
35
foreach(FIND_MODULE IN LISTS FIND_MODULES)
36
string(REGEX REPLACE ".*/Find(.*)\\.cmake$" "\\1" MODULE_NAME "${FIND_MODULE}")
37
38
list(FIND NO_QT4_MODULES ${MODULE_NAME} NO_QT4_INDEX)
39
list(FIND NO_FIND_MODULES ${MODULE_NAME} NO_FIND_INDEX)
40
if (NO_QT4_INDEX EQUAL -1 AND NO_FIND_INDEX EQUAL -1)
41
do_find(${MODULE_NAME})
42
endif ()
43
44
endforeach()
45
46
# Qt4 is not present, so we can check Qt3
47
if (NOT Qt4_FOUND)
48
set(DESIRED_QT_VERSION 3)
49
foreach(FIND_MODULE ${NO_QT4_MODULES} "Qt")
50
do_find(${FIND_MODULE})
51
endforeach()
52
endif ()
53
54
macro(check_version_string MODULE_NAME VERSION_VAR)
55
string(FIND " ${CMake_TEST_CMakeOnly.AllFindModules_NO_VERSION} " " ${MODULE_NAME} " _exclude_pos)
56
if (NOT _exclude_pos EQUAL -1)
57
message(STATUS "excluding check of ${VERSION_VAR}='${${VERSION_VAR}}' due to local configuration")
58
elseif (${MODULE_NAME}_FOUND)
59
60
unset(SKIP_CHECK)
61
if(${MODULE_NAME} STREQUAL "HG")
62
execute_process(COMMAND "${HG_EXECUTABLE}" --version OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE HG_RV)
63
if(NOT HG_RV EQUAL 0)
64
message(WARNING "Broken HG executable detected, skipping")
65
set(SKIP_CHECK TRUE)
66
endif()
67
endif()
68
if (DEFINED ${VERSION_VAR})
69
message(STATUS "${VERSION_VAR}='${${VERSION_VAR}}'")
70
if (NOT ${VERSION_VAR} MATCHES "^[0-9]")
71
message(SEND_ERROR "unexpected: ${VERSION_VAR} does not begin with a decimal digit")
72
endif()
73
if ("${${VERSION_VAR}}" STREQUAL "")
74
message(SEND_ERROR "unexpected: ${VERSION_VAR} is empty")
75
endif()
76
if (${VERSION_VAR} VERSION_EQUAL 0)
77
message(SEND_ERROR "unexpected: ${VERSION_VAR} is VERSION_EQUAL 0")
78
endif()
79
if (NOT ${VERSION_VAR} VERSION_GREATER 0)
80
message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0")
81
endif()
82
else()
83
if(NOT SKIP_CHECK)
84
message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")
85
endif()
86
endif()
87
endif ()
88
endmacro()
89
90
# If any of these modules reported that it was found a version number should have been
91
# reported.
92
93
foreach(
94
VTEST
95
ALSA ARMADILLO
96
BZIP2
97
CUPS CURL
98
EXPAT
99
FREETYPE
100
GETTEXT GIT GNUTLS
101
HG HSPELL
102
ICOTOOL
103
JASPER
104
LIBLZMA LIBXML2 LIBXSLT LTTNGUST
105
OpenCL
106
PERL PKG_CONFIG PNG PostgreSQL
107
SDL
108
TCLSH TIFF
109
wxWidgets
110
ZLIB
111
)
112
check_version_string(${VTEST} ${VTEST}_VERSION_STRING)
113
endforeach()
114
115
foreach(
116
VTEST
117
ALSA Armadillo
118
BISON Boost BZip2 BZIP2
119
CUDA Cups
120
DevIL Doxygen DOXYGEN
121
EXPAT
122
FLEX Freetype
123
Gettext GIF GnuTLS GNUTLS GTK2
124
HDF5 Hg HSPELL
125
Icotool
126
Jasper JPEG
127
LibArchive LibLZMA LIBLZMA LibXml2 LibXslt LTTngUST
128
OpenCL OpenSceneGraph OPENSCENEGRAPH OpenSSL OPENSSL
129
Perl PerlLibs PkgConfig PNG PostgreSQL Protobuf
130
Ruby RUBY
131
SDL SWIG
132
Tclsh TIFF
133
wxWidgets
134
ZLIB
135
)
136
check_version_string(${VTEST} ${VTEST}_VERSION)
137
endforeach()
138
139
check_version_string(PYTHONINTERP PYTHON_VERSION_STRING)
140
check_version_string(SUBVERSION Subversion_VERSION)
141
check_version_string(SUBVERSION Subversion_VERSION_SVN)
142
143