Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / CMakeOnly / AllFindModules / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8.4) # new enough for CMP0017
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(VTEST ALSA ARMADILLO BZIP2 CUPS CURL EXPAT FREETYPE GETTEXT GIT HG
94         HSPELL ICOTOOL JASPER LIBLZMA LIBXML2 LIBXSLT LTTNGUST PERL PKG_CONFIG
95         PostgreSQL TIFF ZLIB)
96     check_version_string(${VTEST} ${VTEST}_VERSION_STRING)
97 endforeach()
98
99 foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2
100         HDF5 JPEG LibArchive OPENSCENEGRAPH Ruby RUBY SWIG Protobuf)
101     check_version_string(${VTEST} ${VTEST}_VERSION)
102 endforeach()
103
104 check_version_string(PYTHONINTERP PYTHON_VERSION_STRING)
105 check_version_string(SUBVERSION Subversion_VERSION_SVN)