Changeset 7582 for code/branches/ois_update/cmake/tools
- Timestamp:
- Oct 25, 2010, 11:05:34 PM (15 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/ois_update/cmake/tools/CheckPackageVersion.cmake
r7581 r7582 21 21 # Reto Grieder 22 22 # Description: 23 # General package configuration. Merely sets the include paths. 24 # Library files are treated separately. 25 # 23 # Check package version info 24 # MAJOR: Breaking change 25 # MINOR: No breaking changes by the dependency package 26 # For example any code running on 3.0 should still run on 3.1 27 # But you can specify that the code only runs on 3.1 and higher 28 # or 4.0 and higher (so both 3.1 and 4.0 will work). 26 29 27 # Check package version info 28 # MAJOR: Breaking change 29 # MINOR: No breaking changes by the dependency package 30 # For example any code running on 3.0 should still run on 3.1 31 # But you can specify that the code only runs on 3.1 and higher 32 # or 4.0 and higher (so both 3.1 and 4.0 will work). 33 SET(ALLOWED_MINIMUM_VERSIONS 3.1 4.0 5.0) 30 MACRO(CHECK_PACKAGE_VERSION) 31 SET(_allowed_minimum_versions ${ARGN}) 34 32 35 IF(NOT EXISTS ${DEPENDENCY_PACKAGE_DIR}/version.txt) 36 SET(DEPENDENCY_VERSION 1.0) 37 ELSE() 38 # Get version from file 39 FILE(READ ${DEPENDENCY_PACKAGE_DIR}/version.txt _file_content) 40 SET(_match) 41 STRING(REGEX MATCH "([0-9]+.[0-9]+)" _match ${_file_content}) 42 IF(_match) 43 SET(DEPENDENCY_VERSION ${_match}) 33 IF(NOT EXISTS ${DEPENDENCY_PACKAGE_DIR}/version.txt) 34 SET(DEPENDENCY_VERSION 1.0) 44 35 ELSE() 45 MESSAGE(FATAL_ERROR "The version.txt file in the dependency file has corrupt version information.") 46 ENDIF() 47 ENDIF() 48 49 INCLUDE(CompareVersionStrings) 50 SET(_version_match FALSE) 51 FOREACH(_version ${ALLOWED_MINIMUM_VERSIONS}) 52 # Get major version 53 STRING(REGEX REPLACE "^([0-9]+)\\..*$" "\\1" _major_version "${_version}") 54 COMPARE_VERSION_STRINGS(${DEPENDENCY_VERSION} ${_major_version} _result TRUE) 55 IF(_result EQUAL 0) 56 COMPARE_VERSION_STRINGS(${DEPENDENCY_VERSION} ${_version} _result FALSE) 57 IF(NOT _result LESS 0) 58 SET(_version_match TRUE) 36 # Get version from file 37 FILE(READ ${DEPENDENCY_PACKAGE_DIR}/version.txt _file_content) 38 SET(_match) 39 STRING(REGEX MATCH "([0-9]+.[0-9]+)" _match ${_file_content}) 40 IF(_match) 41 SET(DEPENDENCY_VERSION ${_match}) 42 ELSE() 43 MESSAGE(FATAL_ERROR "The version.txt file in the dependency file has corrupt version information.") 59 44 ENDIF() 60 45 ENDIF() 61 ENDFOREACH(_version) 62 IF(NOT _version_match) 63 MESSAGE(FATAL_ERROR "Your dependency package version is ${DEPENDENCY_VERSION}\n" 64 "Possible required versions: ${ALLOWED_MINIMUM_VERSIONS}\n" 65 "You can get a new version from www.orxonox.net") 66 ENDIF() 67 68 IF(NOT _INTERNAL_PACKAGE_MESSAGE) 69 MESSAGE(STATUS "Using library package for the dependencies.") 70 SET(_INTERNAL_PACKAGE_MESSAGE 1 CACHE INTERNAL "Do not edit!" FORCE) 71 ENDIF() 72 73 # Ogre versions >= 1.7 require the POCO library on Windows with MSVC for threading 74 COMPARE_VERSION_STRINGS(${DEPENDENCY_VERSION} 5 _result TRUE) 75 IF(NOT _result EQUAL -1 AND NOT MINGW) 76 SET(POCO_REQUIRED TRUE) 77 ENDIF() 78 79 # Include paths and other special treatments 80 SET(ENV{ALUTDIR} ${DEP_INCLUDE_DIR}/freealut) 81 SET(ENV{BOOST_ROOT} ${DEP_INCLUDE_DIR}/boost) 82 SET(ENV{CEGUIDIR} ${DEP_INCLUDE_DIR}/cegui) 83 SET(ENV{DBGHELP_DIR} ${DEP_INCLUDE_DIR}/dbghelp) 84 SET(ENV{DXSDK_DIR} ${DEP_INCLUDE_DIR}/directx) 85 #SET(ENV{ENETDIR} ${DEP_INCLUDE_DIR}/enet) 86 SET(ENV{LUA_DIR} ${DEP_INCLUDE_DIR}/lua) 87 SET(ENV{OGGDIR} ${DEP_INCLUDE_DIR}/libogg) 88 SET(ENV{VORBISDIR} ${DEP_INCLUDE_DIR}/libvorbis) 89 SET(ENV{OGRE_HOME} ${DEP_INCLUDE_DIR}/ogre) 90 SET(ENV{OGRE_PLUGIN_DIR} ${DEP_BINARY_DIR}) 91 SET(ENV{OPENALDIR} ${DEP_INCLUDE_DIR}/openal) 92 SET(ENV{POCODIR} ${DEP_INCLUDE_DIR}/poco) 93 LIST(APPEND CMAKE_INCLUDE_PATH ${DEP_INCLUDE_DIR}/tcl/include) 94 LIST(APPEND CMAKE_INCLUDE_PATH ${DEP_INCLUDE_DIR}/zlib/include) 95 96 ### INSTALL ### 97 98 # Tcl script library 99 INSTALL( 100 DIRECTORY ${DEP_LIBRARY_DIR}/tcl/ 101 DESTINATION lib/tcl 102 ) 103 104 # On Windows, DLLs have to be in the executable folder, install them 105 IF(WIN32 AND DEP_BINARY_DIR) 106 ## DEBUG 107 # When installing a debug version, we really can't know which libraries 108 # are used in released mode because there might be deps of deps. 109 # --> Copy all of them, except the debug databases 110 INSTALL( 111 DIRECTORY ${DEP_BINARY_DIR}/ 112 DESTINATION bin 113 CONFIGURATIONS Debug 114 REGEX "^.*\\.pdb$" EXCLUDE 115 ) 116 117 ## RELEASE 118 # Try to filter out all the debug libraries. If the regex doesn't do the 119 # job anymore, simply adjust it. 120 INSTALL( 121 DIRECTORY ${DEP_BINARY_DIR}/ 122 DESTINATION bin 123 CONFIGURATIONS Release RelWithDebInfo MinSizeRel 124 REGEX "_[Dd]\\.[a-zA-Z0-9+-]+$|-mt-gd-|^.*\\.pdb$" EXCLUDE 125 ) 126 ENDIF() 46 47 INCLUDE(CompareVersionStrings) 48 SET(_version_match FALSE) 49 FOREACH(_version ${_allowed_minimum_versions}) 50 # Get major version 51 STRING(REGEX REPLACE "^([0-9]+)\\..*$" "\\1" _major_version "${_version}") 52 COMPARE_VERSION_STRINGS(${DEPENDENCY_VERSION} ${_major_version} _result TRUE) 53 IF(_result EQUAL 0) 54 COMPARE_VERSION_STRINGS(${DEPENDENCY_VERSION} ${_version} _result FALSE) 55 IF(NOT _result LESS 0) 56 SET(_version_match TRUE) 57 ENDIF() 58 ENDIF() 59 ENDFOREACH(_version) 60 IF(NOT _version_match) 61 MESSAGE(FATAL_ERROR "Your dependency package version is ${DEPENDENCY_VERSION}\n" 62 "Possible required versions: ${_allowed_minimum_versions}\n" 63 "You can get a new version from www.orxonox.net") 64 ENDIF() 65 66 ENDMACRO(CHECK_PACKAGE_VERSION)
Note: See TracChangeset
for help on using the changeset viewer.