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