xref: /libbtbb/cmake/set_release.cmake (revision 1b6084db537fc44a8544216a62d67e015d1605c9)
1*1b6084dbSDominic Spill# This script controls the version string that is passed at compile time.
2*1b6084dbSDominic Spill# To override the version, use cmake -DRELEASE_STRING="you_version"
3*1b6084dbSDominic Spill# If RELEASE_STRING is not explicitly set we attempt to use the latest git
4*1b6084dbSDominic Spill# commit.  If cmake isn't being run from within a git repository we use the
5*1b6084dbSDominic Spill# LATEST_RELEASE variable, which developers should set before a release is
6*1b6084dbSDominic Spill# tagged
7*1b6084dbSDominic Spill
8*1b6084dbSDominic Spillif(NOT DEFINED RELEASE_STRING)
9ed5d4f18SDominic Spill	set(LATEST_RELEASE "2017-03-R2")
10ed5d4f18SDominic Spill
11ed5d4f18SDominic Spill	execute_process(
12ed5d4f18SDominic Spill		COMMAND git log -n 1 --format=%h
13ed5d4f18SDominic Spill		WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
14ed5d4f18SDominic Spill		RESULT_VARIABLE GIT_EXIT_ERROR
15ed5d4f18SDominic Spill		ERROR_QUIET
16ed5d4f18SDominic Spill		OUTPUT_VARIABLE GIT_VERSION
17ed5d4f18SDominic Spill		OUTPUT_STRIP_TRAILING_WHITESPACE
18ed5d4f18SDominic Spill	)
19ed5d4f18SDominic Spill	if (GIT_EXIT_ERROR)
20ed5d4f18SDominic Spill		# We're probably not in a git repo
21*1b6084dbSDominic Spill		set(RELEASE_STRING ${LATEST_RELEASE})
22ed5d4f18SDominic Spill	else (GIT_EXIT_ERROR)
23ed5d4f18SDominic Spill		# We're in a git repo
24ed5d4f18SDominic Spill		execute_process(
25ed5d4f18SDominic Spill			COMMAND git status -s --untracked-files=no
26ed5d4f18SDominic Spill			OUTPUT_VARIABLE DIRTY
27ed5d4f18SDominic Spill		)
28ed5d4f18SDominic Spill		if ( NOT "${DIRTY}" STREQUAL "" )
29ed5d4f18SDominic Spill			set(DIRTY_FLAG "*")
30ed5d4f18SDominic Spill		else()
31ed5d4f18SDominic Spill			set(DIRTY_FLAG "")
32ed5d4f18SDominic Spill		endif()
33*1b6084dbSDominic Spill		set(RELEASE_STRING "git-${GIT_VERSION}${DIRTY_FLAG}")
34ed5d4f18SDominic Spill	endif (GIT_EXIT_ERROR)
35*1b6084dbSDominic Spillendif(NOT DEFINED RELEASE_STRING)