From 5af95aa5d5d89150ffc81c1b3e2a920bce159f84 Mon Sep 17 00:00:00 2001 From: Matt Stevens Date: Mon, 11 May 2020 03:34:20 +0100 Subject: [PATCH] Set bgfx PROJECT_VERSION from bgfx versioning scheme. (#80) --- CMakeLists.txt | 5 ++++- cmake/version.cmake | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 cmake/version.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 96b45f5..312f04b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,10 @@ # this software. If not, see . cmake_minimum_required( VERSION 3.0 ) -project( bgfx ) +project(bgfx) + +# sets project version from api ver / git rev +include( cmake/version.cmake ) set_property( GLOBAL PROPERTY USE_FOLDERS ON ) set(CMAKE_CXX_STANDARD 14) diff --git a/cmake/version.cmake b/cmake/version.cmake new file mode 100644 index 0000000..337be77 --- /dev/null +++ b/cmake/version.cmake @@ -0,0 +1,37 @@ +# bgfx versioning scheme: +# bgfx 1.104.7082 +# ^ ^^^ ^^^^ +# | | +--- Commit number (https://github.com/bkaradzic/bgfx / git rev-list --count HEAD) +# | +------- API version (from https://github.com/bkaradzic/bgfx/blob/master/scripts/bgfx.idl#L4) +# +--------- Major revision (always 1) + +# BGFX_API_VERSION generated from https://github.com/bkaradzic/bgfx/blob/master/scripts/bgfx.idl#L4 +# bgfx/src/version.h: +# BGFX_REV_NUMBER +# BGFX_REV_SHA1 + +find_package(Git QUIET) + +execute_process(COMMAND "${GIT_EXECUTABLE}" -C bgfx log --pretty=format:'%h' -n 1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_REV + ERROR_QUIET) + +execute_process(COMMAND "${GIT_EXECUTABLE}" -C bgfx rev-list --count HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_REV_COUNT + ERROR_QUIET) + +# read version(100) from bgfx.idl +file(READ "${CMAKE_SOURCE_DIR}/bgfx/scripts/bgfx.idl" BGFX_IDL) +string(REGEX MATCH "version\\(([^\)]+)\\)" + BGFX_API_VERSION ${BGFX_IDL}) +set(BGFX_API_VERSION ${CMAKE_MATCH_1}) +set(BGFX_REV_NUMBER ${GIT_REV_COUNT}) +set(BGFX_REV ${GIT_REV}) + +# set project specific versions +set(PROJECT_VERSION 1.${BGFX_API_VERSION}.${BGFX_REV_NUMBER}) +set(PROJECT_VERSION_MAJOR 1) +set(PROJECT_VERSION_MINOR ${BGFX_API_VERSION}) +set(PROJECT_VERSION_PATCH ${BGFX_REV_NUMBER}) \ No newline at end of file