Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem2/cmake/FindPackageHandleAdvancedArgs.cmake @ 2613

Last change on this file since 2613 was 2613, checked in by rgrieder, 15 years ago
  • Added FindPackageHandleAdvancedArgs.cmake module that invokes FindPackageHandleStandardArgs and then checks the version requirements. Usage: FIND_PACKAGE_HANDLE_ADVANCED_ARGS(NAME MSG VERSION VARS) (like the orginal CMake module, but with the additional version argument)
  • Updated DetermineVersion.cmake and HandleLibraryTypes.cmake to use FUNCTION instead of MACRO and also removed CACHE setting of the veriables (unnecessary).
  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1INCLUDE(FindPackageHandleStandardArgs)
2INCLUDE(CompareVersionStrings)
3
4FUNCTION(FIND_PACKAGE_HANDLE_ADVANCED_ARGS _name _fail_msg _version)
5
6  # Modify the message to include version requirements
7  IF("${_fail_msg}" STREQUAL "DEFAULT_MSG")
8    SET(_fail_msg_adv "Could NOT find ${_name}")
9  ELSE("${_fail_msg}" STREQUAL "DEFAULT_MSG")
10    SET(_fail_msg_adv "${_fail_msg}")
11  ENDIF("${_fail_msg}" STREQUAL "DEFAULT_MSG")
12  IF(${_name}_FIND_VERSION_EXACT)
13    SET(_fail_msg_adv "${_fail_msg_adv} (version requirements: exactly ${${_name}_FIND_VERSION}")
14  ELSE(${_name}_FIND_VERSION_EXACT)
15    SET(_fail_msg_adv "${_fail_msg_adv} (version requirements: at least ${${_name}_FIND_VERSION}")
16  ENDIF(${_name}_FIND_VERSION_EXACT)
17  FIND_PACKAGE_HANDLE_STANDARD_ARGS("${_name}" "${_fail_msg_adv}" ${ARGN})
18  STRING(TOUPPER ${_name} _NAME_UPPER)
19
20  # Also check version requirements if given to FindPackage(...)
21  IF(${_name}_FIND_VERSION)
22    # Note: the last argument of the function tells it to cut the first
23    #       version string instead of padding it with zeros if necessary
24    COMPARE_VERSION_STRINGS("${_version}" "${${_name}_FIND_VERSION}" _compatible TRUE)
25    IF(${_name}_FIND_VERSION_EXACT AND NOT _compatible EQUAL 0)
26      MESSAGE(FATAL_ERROR "Exact ${_name} version required is ${${_name}_FIND_VERSION}\n"
27                          "Your version is ${_version}")
28      SET(${_NAME_UPPER}_FOUND FALSE)
29    ELSEIF(_compatible LESS 0)
30      MESSAGE(FATAL_ERROR "Minimum ${_name} version required is ${${_name}_FIND_VERSION}\n"
31                          "Your version is ${_version}")
32      SET(${_NAME_UPPER}_FOUND FALSE)
33    ENDIF(${_name}_FIND_VERSION_EXACT AND NOT _compatible EQUAL 0)
34  ENDIF(${_name}_FIND_VERSION)
35
36  # Raise scope (FindPackageHandleStandardArgs uses PARENT_SCOPE)
37  SET(${_NAME_UPPER}_FOUND ${${_NAME_UPPER}_FOUND} PARENT_SCOPE)
38
39ENDFUNCTION(FIND_PACKAGE_HANDLE_ADVANCED_ARGS)
Note: See TracBrowser for help on using the repository browser.