Files
ortools-clone/cmake/utils.cmake
2017-07-05 16:27:00 -07:00

65 lines
2.3 KiB
CMake

FUNCTION(GET_VERSION_FROM_FILE VERSION_MAJOR VERSION_MINOR VERSION_PATCH)
FILE(STRINGS "Version.txt" VERSION_DESC)
FOREACH(_VERSION_DESC ${VERSION_DESC})
IF(${_VERSION_DESC} MATCHES "OR_TOOLS_MAJOR = (.*)")
SET(${VERSION_MAJOR} ${CMAKE_MATCH_1} PARENT_SCOPE)
ENDIF()
IF(${_VERSION_DESC} MATCHES "OR_TOOLS_MINOR = (.*)")
SET(${VERSION_MINOR} ${CMAKE_MATCH_1} PARENT_SCOPE)
ENDIF()
ENDFOREACH()
ENDFUNCTION()
FUNCTION(GET_VERSION_FROM_GIT OUTPUT_VAR VERSION_MAJOR_ VERSION_MINOR_ VERSION_PATCH_)
FIND_PACKAGE(Git QUIET)
IF(GIT_FOUND)
EXECUTE_PROCESS(COMMAND
${GIT_EXECUTABLE}
"describe" "--tags"
RESULT_VARIABLE _OUTPUT_VAR
OUTPUT_VARIABLE VERSION_FULL
ERROR_QUIET)
IF(NOT _OUTPUT_VAR)
EXECUTE_PROCESS(COMMAND
${GIT_EXECUTABLE}
"log" "--oneline"
COMMAND
"wc"
"-l"
RESULT_VARIABLE _OUTPUT_VAR
OUTPUT_VARIABLE _VERSION_PATCH
ERROR_QUIET)
STRING(STRIP _VERSION_PATCH ${_VERSION_PATCH})
STRING(REGEX REPLACE "\n$" "" _VERSION_PATCH ${_VERSION_PATCH})
STRING(REGEX REPLACE " " "" _VERSION_PATCH ${_VERSION_PATCH})
STRING(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" _VERSION_MAJOR "${VERSION_FULL}")
STRING(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" _VERSION_MINOR "${VERSION_FULL}")
SET(${VERSION_MAJOR_} "${_VERSION_MAJOR}" PARENT_SCOPE)
SET(${VERSION_MINOR_} "${_VERSION_MINOR}" PARENT_SCOPE)
SET(${VERSION_PATCH_} "${_VERSION_PATCH}" PARENT_SCOPE)
ENDIF()
ENDIF()
SET(${OUTPUT_VAR} "${_OUTPUT_VAR}" PARENT_SCOPE)
ENDFUNCTION()
FUNCTION(SET_VERSION VERSION)
FIND_PACKAGE(Git QUIET)
IF(GIT_FOUND)
GET_VERSION_FROM_GIT(GIT_OUTPUT VERSION_MAJOR VERSION_MINOR VERSION_PATCH)
IF(GIT_OUTPUT)
GET_VERSION_FROM_FILE(VERSION_MAJOR VERSION_MINOR VERSION_PATCH)
ENDIF()
ELSE()
GET_VERSION_FROM_FILE(VERSION_MAJOR VERSION_MINOR VERSION_PATCH)
ENDIF()
SET(_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}")
IF(VERSION_PATCH)
SET(_VERSION "${_VERSION}.${VERSION_PATCH}")
ENDIF()
SET(${VERSION} ${_VERSION} PARENT_SCOPE)
ENDFUNCTION()