739593cc9afb5ad51835e72f896659b181b8c121
[platform/upstream/cmake.git] / Tests / CMakeOnly / AllFindModules / CMakeLists.txt
1 cmake_minimum_required (VERSION 2.8)
2 project(AllFindModules)
3
4 if (POLICY CMP0017)
5   cmake_policy(SET CMP0017 NEW)
6 endif ()
7
8 # Avoid ctest truncation of output
9 message(STATUS "CTEST_FULL_OUTPUT")
10
11 file(GLOB FIND_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../Modules/Find*.cmake" )
12
13 macro(do_find MODULE_NAME)
14     message(STATUS "   Checking Find${MODULE_NAME}")
15     find_package(${MODULE_NAME})
16 endmacro()
17
18 # It is only possible to use either Qt3 or Qt4 in one project.
19 # Since FindQt will complain if both are found we explicitly request Qt4 here
20 # and filter out FindQt3. FindKDE3 also depends on Qt3 and
21 # is therefore also blocked
22 set(DESIRED_QT_VERSION 4)
23 set(NO_QT4_MODULES "Qt3" "KDE3")
24
25 # These modules are named Find*.cmake, but are nothing that works in
26 # find_package().
27 set(NO_FIND_MODULES "PackageHandleStandardArgs" "PackageMessage")
28
29 foreach(FIND_MODULE ${FIND_MODULES})
30     string(REGEX REPLACE ".*/Find(.*)\\.cmake$" "\\1" MODULE_NAME "${FIND_MODULE}")
31
32     list(FIND NO_QT4_MODULES ${MODULE_NAME} NO_QT4_INDEX)
33     list(FIND NO_FIND_MODULES ${MODULE_NAME} NO_FIND_INDEX)
34     if (NO_QT4_INDEX EQUAL -1 AND NO_FIND_INDEX EQUAL -1)
35         do_find(${MODULE_NAME})
36     endif ()
37
38 endforeach()
39
40 # Qt4 is not present, so we can check Qt3
41 if (NOT QT4_FOUND)
42     set(DESIRED_QT_VERSION 3)
43     foreach(FIND_MODULE ${NO_QT4_MODULES} "Qt")
44         do_find(${FIND_MODULE})
45     endforeach()
46 endif ()
47
48 macro(check_version_string MODULE_NAME VERSION_VAR)
49     if (${MODULE_NAME}_FOUND)
50         if (DEFINED ${VERSION_VAR})
51             message(STATUS "${VERSION_VAR}='${${VERSION_VAR}}'")
52             if (NOT ${VERSION_VAR} MATCHES "^[0-9]")
53                 message(SEND_ERROR "unexpected: ${VERSION_VAR} does not begin with a decimal digit")
54             endif()
55             if ("${${VERSION_VAR}}" STREQUAL "")
56                 message(SEND_ERROR "unexpected: ${VERSION_VAR} is empty")
57             endif()
58             if (${VERSION_VAR} VERSION_EQUAL 0)
59                 message(SEND_ERROR "unexpected: ${VERSION_VAR} is VERSION_EQUAL 0")
60             endif()
61             if (NOT ${VERSION_VAR} VERSION_GREATER 0)
62                 message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0")
63             endif()
64         else()
65             message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")
66         endif()
67     endif ()
68 endmacro()
69
70 # If any of these modules reported that it was found a version number should have been
71 # reported.
72
73 foreach(VTEST ALSA ARMADILLO BZIP2 CUPS CURL EXPAT FREETYPE GETTEXT GIT HG
74         HSPELL ICOTOOL JASPER LIBLZMA LIBXML2 LIBXSLT PERL PKG_CONFIG
75         PostgreSQL TIFF ZLIB)
76     check_version_string(${VTEST} ${VTEST}_VERSION_STRING)
77 endforeach()
78
79 foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2 LibArchive OPENSCENEGRAPH
80         RUBY SWIG)
81     check_version_string(${VTEST} ${VTEST}_VERSION)
82 endforeach()
83
84 check_version_string(PYTHONINTERP PYTHON_VERSION_STRING)
85 check_version_string(SUBVERSION Subversion_VERSION_SVN)