1 cmake_minimum_required (VERSION 2.8)
2 project(AllFindModules)
5 cmake_policy(SET CMP0017 NEW)
8 # Avoid ctest truncation of output
9 message(STATUS "CTEST_FULL_OUTPUT")
11 file(GLOB FIND_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../Modules/Find*.cmake" )
13 macro(do_find MODULE_NAME)
14 message(STATUS " Checking Find${MODULE_NAME}")
15 find_package(${MODULE_NAME})
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")
25 # These modules are named Find*.cmake, but are nothing that works in
27 set(NO_FIND_MODULES "PackageHandleStandardArgs" "PackageMessage")
29 foreach(FIND_MODULE ${FIND_MODULES})
30 string(REGEX REPLACE ".*/Find(.*)\\.cmake$" "\\1" MODULE_NAME "${FIND_MODULE}")
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})
40 # Qt4 is not present, so we can check Qt3
42 set(DESIRED_QT_VERSION 3)
43 foreach(FIND_MODULE ${NO_QT4_MODULES} "Qt")
44 do_find(${FIND_MODULE})
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")
55 if ("${${VERSION_VAR}}" STREQUAL "")
56 message(SEND_ERROR "unexpected: ${VERSION_VAR} is empty")
58 if (${VERSION_VAR} VERSION_EQUAL 0)
59 message(SEND_ERROR "unexpected: ${VERSION_VAR} is VERSION_EQUAL 0")
61 if (NOT ${VERSION_VAR} VERSION_GREATER 0)
62 message(SEND_ERROR "unexpected: ${VERSION_VAR} is NOT VERSION_GREATER 0")
65 message(SEND_ERROR "${MODULE_NAME}_FOUND is set but version number variable ${VERSION_VAR} is NOT DEFINED")
70 # If any of these modules reported that it was found a version number should have been
73 foreach(VTEST ALSA ARMADILLO BZIP2 CUPS CURL EXPAT FREETYPE GETTEXT GIT HG
74 HSPELL ICOTOOL JASPER LIBLZMA LIBXML2 LIBXSLT PERL PKG_CONFIG
76 check_version_string(${VTEST} ${VTEST}_VERSION_STRING)
79 foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2 LibArchive OPENSCENEGRAPH
81 check_version_string(${VTEST} ${VTEST}_VERSION)
84 check_version_string(PYTHONINTERP PYTHON_VERSION_STRING)
85 check_version_string(SUBVERSION Subversion_VERSION_SVN)