Re #526 / #335 Add a new OPTION_AUTOVERSION boolean CMake cache variable (default: On), to enable/disable the aotumatic SVN version detection feature + slightly improve the version naming scheme
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@4391 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 4fad5ebc63703f8b697675af84a900ad2f07afc3 Former-commit-id: 9b1893b4e9da448c930bce4043f9fb2460a76ff1
This commit is contained in:
parent
d1426a4f50
commit
4b87e3c54e
2 changed files with 86 additions and 70 deletions
154
CMakeLists.txt
154
CMakeLists.txt
|
@ -17,96 +17,110 @@ CHECK_LIBRARIES()
|
||||||
CHECK_PLIB_LIBRARIES()
|
CHECK_PLIB_LIBRARIES()
|
||||||
CHECK_PACKAGES()
|
CHECK_PACKAGES()
|
||||||
|
|
||||||
#Calculate version
|
# Determine version
|
||||||
#Set version which doesn't follow from HeadURL
|
|
||||||
SET(HEAD_URL "$HeadURL$")
|
|
||||||
SET(NEXT_LESSER_VERSION 0) # The next lesser version
|
SET(NEXT_LESSER_VERSION 0) # The next lesser version
|
||||||
SET(NEXT_MAJOR_MINOR_VERSION "2.0") # Next major.minor version
|
SET(NEXT_MAJOR_MINOR_VERSION "2.0") # Next major.minor version
|
||||||
|
|
||||||
#Define regular expressions
|
IF(NOT OPTION_AUTOVERSION)
|
||||||
SET(REGEX_TAG "^\\$HeadURL:.*speed-dreams/tags/([^/\\$ ]*).*\\$$")
|
|
||||||
SET(REGEX_BUG_BRANCH "^\\$HeadURL:.*speed-dreams/branches/([0-9]+\\.[0-9]+)(\\.[xX])?/.*\\$$")
|
|
||||||
SET(REGEX_TRUNK "^\\$HeadURL:.*speed-dreams/trunk/.*\\$$")
|
|
||||||
SET(REGEX_BRANCH "^\\$HeadURL:.*speed-dreams/branches/([^/\\$ ]*).*\\$$")
|
|
||||||
|
|
||||||
#Check regular expressions
|
|
||||||
STRING(REGEX MATCH "${REGEX_TAG}" VERSION_IS_TAG "${HEAD_URL}")
|
|
||||||
STRING(REGEX MATCH "${REGEX_BUG_BRANCH}" VERSION_IS_BUG_BRANCH "${HEAD_URL}")
|
|
||||||
STRING(REGEX MATCH "${REGEX_TRUNK}" VERSION_IS_TRUNK "${HEAD_URL}")
|
|
||||||
STRING(REGEX MATCH "${REGEX_BRANCH}" VERSION_IS_BRANCH "${HEAD_URL}")
|
|
||||||
|
|
||||||
#Look in which case we are and set the version according to that
|
|
||||||
SET(NEED_SVN_REV FALSE)
|
|
||||||
IF(VERSION_IS_TAG)
|
|
||||||
STRING(REGEX REPLACE "${REGEX_TAG}" "\\1" VERSION "${HEAD_URL}")
|
|
||||||
SET(NEED_SVN_REV TRUE)
|
|
||||||
ELSEIF(VERSION_IS_BUG_BRANCH)
|
|
||||||
STRING(REGEX REPLACE "${REGEX_BUG_BRANCH}" "\\1" TMP_VERSION "${HEAD_URL}")
|
|
||||||
SET(VERSION "${TMP_VERSION}.${NEXT_LESSER_VERSION}-dev")
|
|
||||||
SET(NEED_SVN_REV TRUE)
|
|
||||||
ELSEIF(VERSION_IS_TRUNK)
|
|
||||||
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-dev")
|
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-dev")
|
||||||
SET(NEED_SVN_REV TRUE)
|
|
||||||
ELSEIF(VERSION_IS_BRANCH)
|
|
||||||
STRING(REGEX REPLACE "${REGEX_BRANCH}" "\\1" VERSION "${HEAD_URL}")
|
|
||||||
SET(VERSION "${VERSION}-dev")
|
|
||||||
SET(NEED_SVN_REV TRUE)
|
|
||||||
ELSE(VERSION_IS_TAG)
|
|
||||||
MESSAGE("Warning: Could not determine version name from HeadURL ${HEAD_URL}")
|
|
||||||
SET(VERSION "0.0-unkown")
|
|
||||||
ENDIF(VERSION_IS_TAG)
|
|
||||||
|
|
||||||
#Try to get current revision
|
|
||||||
IF(NEED_SVN_REV)
|
|
||||||
SET(SVN_FIND_REV_FAILED FALSE)
|
|
||||||
FIND_PROGRAM(SVNVERSION_EXEC svnversion PATHS /usr/local/bin /usr/bin)
|
|
||||||
MARK_AS_ADVANCED(SVNVERSION_EXEC)
|
|
||||||
IF(NOT SVNVERSION_EXEC)
|
|
||||||
SET(SVN_FIND_REV_FAILED TRUE)
|
|
||||||
ENDIF(NOT SVNVERSION_EXEC)
|
|
||||||
IF(NOT SVN_FIND_REV_FAILED)
|
|
||||||
MESSAGE(STATUS "Looking for current subversion revision (may be long) ...")
|
|
||||||
EXECUTE_PROCESS(COMMAND ${SVNVERSION_EXEC} ${CMAKE_CURRENT_SOURCE_DIR} --no-newline
|
|
||||||
RESULT_VARIABLE SVNVERSION_RESULT
|
|
||||||
OUTPUT_VARIABLE SVN_REV_LONG)
|
|
||||||
IF(NOT ${SVNVERSION_RESULT} EQUAL 0)
|
|
||||||
SET(SVN_FIND_REV_FAILED TRUE)
|
|
||||||
ENDIF(NOT ${SVNVERSION_RESULT} EQUAL 0)
|
|
||||||
ENDIF(NOT SVN_FIND_REV_FAILED)
|
|
||||||
IF(NOT SVN_FIND_REV_FAILED)
|
|
||||||
IF("${SVN_REV_LONG}" MATCHES ":")
|
|
||||||
STRING(REGEX REPLACE "^[^:]*:(.*)$" "\\1" SVN_REV "${SVN_REV_LONG}")
|
|
||||||
ELSE("${SVN_REV_LONG}" MATCHES ":")
|
|
||||||
SET(SVN_REV "${SVN_REV_LONG}")
|
|
||||||
ENDIF("${SVN_REV_LONG}" MATCHES ":")
|
|
||||||
IF(NOT SVN_REV)
|
|
||||||
SET(SVN_FIND_REV_FAILED TRUE)
|
|
||||||
ENDIF(NOT SVN_REV)
|
|
||||||
ENDIF(NOT SVN_FIND_REV_FAILED)
|
|
||||||
SET(VERSION_LONG "${VERSION}")
|
SET(VERSION_LONG "${VERSION}")
|
||||||
IF(NOT SVN_FIND_REV_FAILED)
|
|
||||||
STRING(TOLOWER ${SVN_REV} SVN_REV)
|
MESSAGE(STATUS "Version '${VERSION_LONG}' (not auto-detected from SVN source tree)")
|
||||||
SET(VERSION_LONG "${VERSION_LONG}-r${SVN_REV}")
|
|
||||||
ENDIF(NOT SVN_FIND_REV_FAILED)
|
|
||||||
MESSAGE(STATUS "Found '${VERSION_LONG}'")
|
|
||||||
ELSE(NEED_SVN_REV)
|
|
||||||
SET(VERSION_LONG "${VERSION}")
|
|
||||||
ENDIF(NEED_SVN_REV)
|
|
||||||
|
|
||||||
|
ELSE(NOT OPTION_AUTOVERSION)
|
||||||
|
|
||||||
|
# Use SVN HeadURL property on this CMakeLists.txt file in order to automatically get the current version
|
||||||
|
SET(HEAD_URL "$HeadURL$")
|
||||||
|
|
||||||
|
# Define regular expressions
|
||||||
|
SET(REGEX_TAG "^\\$HeadURL:.*speed-dreams/tags/([^/\\$ ]*).*\\$$")
|
||||||
|
SET(REGEX_BUG_BRANCH "^\\$HeadURL:.*speed-dreams/branches/([0-9]+\\.[0-9]+)(\\.[xX])?/.*\\$$")
|
||||||
|
SET(REGEX_TRUNK "^\\$HeadURL:.*speed-dreams/trunk/.*\\$$")
|
||||||
|
SET(REGEX_BRANCH "^\\$HeadURL:.*speed-dreams/branches/([^/\\$ ]*).*\\$$")
|
||||||
|
|
||||||
|
# Check regular expressions
|
||||||
|
STRING(REGEX MATCH "${REGEX_TAG}" VERSION_IS_TAG "${HEAD_URL}")
|
||||||
|
STRING(REGEX MATCH "${REGEX_BUG_BRANCH}" VERSION_IS_BUG_BRANCH "${HEAD_URL}")
|
||||||
|
STRING(REGEX MATCH "${REGEX_TRUNK}" VERSION_IS_TRUNK "${HEAD_URL}")
|
||||||
|
STRING(REGEX MATCH "${REGEX_BRANCH}" VERSION_IS_BRANCH "${HEAD_URL}")
|
||||||
|
|
||||||
|
# See if we need to look at the current SVN revision
|
||||||
|
SET(NEED_SVN_REV TRUE)
|
||||||
|
IF(VERSION_IS_TAG)
|
||||||
|
STRING(REGEX REPLACE "${REGEX_TAG}" "\\1" VERSION "${HEAD_URL}")
|
||||||
|
ELSEIF(VERSION_IS_BUG_BRANCH)
|
||||||
|
STRING(REGEX REPLACE "${REGEX_BUG_BRANCH}" "\\1" TMP_VERSION "${HEAD_URL}")
|
||||||
|
SET(VERSION "${TMP_VERSION}.${NEXT_LESSER_VERSION}-dev")
|
||||||
|
ELSEIF(VERSION_IS_TRUNK)
|
||||||
|
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-trunk")
|
||||||
|
ELSEIF(VERSION_IS_BRANCH)
|
||||||
|
STRING(REGEX REPLACE "${REGEX_BRANCH}" "\\1" VERSION "${HEAD_URL}")
|
||||||
|
ELSE(VERSION_IS_TAG)
|
||||||
|
MESSAGE("Warning: Could not determine version name from HeadURL ${HEAD_URL}")
|
||||||
|
SET(VERSION "${NEXT_MAJOR_MINOR_VERSION}-dev")
|
||||||
|
SET(NEED_SVN_REV FALSE)
|
||||||
|
ENDIF(VERSION_IS_TAG)
|
||||||
|
|
||||||
|
# Try to get current SVN revision
|
||||||
|
IF(NEED_SVN_REV)
|
||||||
|
SET(SVN_FIND_REV_FAILED FALSE)
|
||||||
|
FIND_PROGRAM(SVNVERSION_EXEC svnversion PATHS /usr/local/bin /usr/bin)
|
||||||
|
MARK_AS_ADVANCED(SVNVERSION_EXEC)
|
||||||
|
IF(NOT SVNVERSION_EXEC)
|
||||||
|
SET(SVN_FIND_REV_FAILED TRUE)
|
||||||
|
ENDIF(NOT SVNVERSION_EXEC)
|
||||||
|
IF(NOT SVN_FIND_REV_FAILED)
|
||||||
|
MESSAGE(STATUS "Looking for current subversion revision (may be long) ...")
|
||||||
|
EXECUTE_PROCESS(COMMAND ${SVNVERSION_EXEC} ${CMAKE_CURRENT_SOURCE_DIR} --no-newline
|
||||||
|
RESULT_VARIABLE SVNVERSION_RESULT
|
||||||
|
OUTPUT_VARIABLE SVN_REV_LONG)
|
||||||
|
IF(NOT ${SVNVERSION_RESULT} EQUAL 0)
|
||||||
|
SET(SVN_FIND_REV_FAILED TRUE)
|
||||||
|
ENDIF(NOT ${SVNVERSION_RESULT} EQUAL 0)
|
||||||
|
ENDIF(NOT SVN_FIND_REV_FAILED)
|
||||||
|
IF(NOT SVN_FIND_REV_FAILED)
|
||||||
|
IF("${SVN_REV_LONG}" MATCHES ":")
|
||||||
|
STRING(REGEX REPLACE "^[^:]*:(.*)$" "\\1" SVN_REV "${SVN_REV_LONG}")
|
||||||
|
ELSE("${SVN_REV_LONG}" MATCHES ":")
|
||||||
|
SET(SVN_REV "${SVN_REV_LONG}")
|
||||||
|
ENDIF("${SVN_REV_LONG}" MATCHES ":")
|
||||||
|
IF(NOT SVN_REV)
|
||||||
|
SET(SVN_FIND_REV_FAILED TRUE)
|
||||||
|
ENDIF(NOT SVN_REV)
|
||||||
|
ENDIF(NOT SVN_FIND_REV_FAILED)
|
||||||
|
SET(VERSION_LONG "${VERSION}")
|
||||||
|
IF(NOT SVN_FIND_REV_FAILED)
|
||||||
|
STRING(TOLOWER ${SVN_REV} SVN_REV)
|
||||||
|
SET(VERSION_LONG "${VERSION_LONG}-r${SVN_REV}")
|
||||||
|
ENDIF(NOT SVN_FIND_REV_FAILED)
|
||||||
|
ELSE(NEED_SVN_REV)
|
||||||
|
SET(VERSION_LONG "${VERSION}")
|
||||||
|
ENDIF(NEED_SVN_REV)
|
||||||
|
|
||||||
|
MESSAGE(STATUS "Version '${VERSION_LONG}'")
|
||||||
|
|
||||||
|
ENDIF(NOT OPTION_AUTOVERSION)
|
||||||
|
|
||||||
|
# Generate config.h
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.cmake
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.h.cmake
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
||||||
|
|
||||||
|
# Generate DOxygen configuration file
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/doxygen_config.cmake
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/doxygen_config.cmake
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/doxygen_config @ONLY)
|
${CMAKE_CURRENT_BINARY_DIR}/doxygen_config @ONLY)
|
||||||
|
|
||||||
|
# Install top tree data files
|
||||||
SD_INSTALL_FILES(DATA "/"
|
SD_INSTALL_FILES(DATA "/"
|
||||||
FILES credits.xml
|
FILES credits.xml
|
||||||
CHANGES.txt COPYING.txt INSTALL.txt README.txt TODO.txt)
|
CHANGES.txt COPYING.txt INSTALL.txt README.txt TODO.txt)
|
||||||
|
|
||||||
|
# Sub-dirs to build ...
|
||||||
ADD_SUBDIRECTORY(src)
|
ADD_SUBDIRECTORY(src)
|
||||||
ADD_SUBDIRECTORY(data)
|
ADD_SUBDIRECTORY(data)
|
||||||
ADD_SUBDIRECTORY(cmake)
|
ADD_SUBDIRECTORY(cmake)
|
||||||
|
|
||||||
|
# Usefull for using SD as a robot development framework without building SD
|
||||||
INSTALL_SD_CMAKE()
|
INSTALL_SD_CMAKE()
|
||||||
|
|
||||||
# Generate a 'make clobber'-like clobber.sh/.bat script in case of an in-source build.
|
# Generate a 'make clobber'-like clobber.sh/.bat script in case of an in-source build.
|
||||||
|
|
|
@ -1017,6 +1017,8 @@ MACRO(ADD_SD_COMPILE_OPTIONS)
|
||||||
SET(OPTION_UNLOAD_SSGGRAPH true CACHE BOOL "If false, never unload ssggraph module (useful on some Linuxes to avoid XOrg crashes)")
|
SET(OPTION_UNLOAD_SSGGRAPH true CACHE BOOL "If false, never unload ssggraph module (useful on some Linuxes to avoid XOrg crashes)")
|
||||||
ENDIF(UNIX)
|
ENDIF(UNIX)
|
||||||
|
|
||||||
|
SET(OPTION_AUTOVERSION true CACHE BOOL "Enable automatic computation of the version from SVN source tree")
|
||||||
|
|
||||||
# Compiler definitions.
|
# Compiler definitions.
|
||||||
ADD_DEFINITIONS(-D_SVID_SOURCE -D_BSD_SOURCE -DSHM)
|
ADD_DEFINITIONS(-D_SVID_SOURCE -D_BSD_SOURCE -DSHM)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue