Home | History | Annotate | Line # | Download | only in cmake
      1 # This module defines the following variables utilizing
      2 # git to determine the parent tag. And if found the macro
      3 # will attempt to parse them in the github tag fomat
      4 #
      5 # Useful for auto-versioning in our CMakeLists
      6 #
      7 #  EVENT_GIT___VERSION_MAJOR - Major version.
      8 #  EVENT_GIT___VERSION_MINOR - Minor version
      9 #  EVENT_GIT___VERSION_STAGE - Stage version
     10 #
     11 # Example usage:
     12 #
     13 # event_fuzzy_version_from_git()
     14 #    message("Libvent major=${EVENT_GIT___VERSION_MAJOR}")
     15 #    message("        minor=${EVENT_GIT___VERSION_MINOR}")
     16 #    message("        patch=${EVENT_GIT___VERSION_PATCH}")
     17 #    message("        stage=${EVENT_GIT___VERSION_STAGE}")
     18 # endif()
     19 
     20 include(FindGit)
     21 
     22 macro(event_fuzzy_version_from_git)
     23 	# set our defaults.
     24 	set(EVENT_GIT___VERSION_MAJOR 2)
     25 	set(EVENT_GIT___VERSION_MINOR 1)
     26 	set(EVENT_GIT___VERSION_PATCH 12)
     27 	set(EVENT_GIT___VERSION_STAGE "stable")
     28 
     29 	find_package(Git)
     30 
     31 	if (GIT_FOUND)
     32 		execute_process(
     33 			COMMAND
     34 				${GIT_EXECUTABLE} describe --abbrev=0 --always
     35 			WORKING_DIRECTORY
     36 				${PROJECT_SOURCE_DIR}
     37 			RESULT_VARIABLE
     38 				GITRET
     39 			OUTPUT_VARIABLE
     40 				GITVERSION
     41 			OUTPUT_STRIP_TRAILING_WHITESPACE
     42 		)
     43 
     44 		string(REGEX REPLACE "[\\._-]" ";" VERSION_LIST "${GITVERSION}")
     45 		if(VERSION_LIST)
     46 			list(LENGTH VERSION_LIST VERSION_LIST_LENGTH)
     47 		endif()
     48 
     49 		if ((GITRET EQUAL 0) AND (VERSION_LIST_LENGTH EQUAL 5))
     50 			list(GET VERSION_LIST 1 _MAJOR)
     51 			list(GET VERSION_LIST 2 _MINOR)
     52 			list(GET VERSION_LIST 3 _PATCH)
     53 			list(GET VERSION_LIST 4 _STAGE)
     54 
     55 			set(_DEFAULT_VERSION "${EVENT_GIT___VERSION_MAJOR}.${EVENT_GIT___VERSION_MINOR}.${EVENT_GIT___VERSION_PATCH}-${EVENT_GIT___VERSION_STAGE}")
     56 			set(_GIT_VERSION     "${_MAJOR}.${_MINOR}.${_PATCH}-${_STAGE}")
     57 
     58 			if (${_DEFAULT_VERSION} VERSION_LESS ${_GIT_VERSION})
     59 				set(EVENT_GIT___VERSION_MAJOR ${_MAJOR})
     60 				set(EVENT_GIT___VERSION_MINOR ${_MINOR})
     61 				set(EVENT_GIT___VERSION_PATCH ${_PATCH})
     62 				set(EVENT_GIT___VERSION_STAGE ${_STAGE})
     63 			endif()
     64 		endif()
     65 	endif()
     66 endmacro()
     67