Files
2025-01-16 19:57:23 -05:00

75 lines
2.5 KiB
CMake

find_package(Git)
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
option(GIT_SUBMODULE "Check submodules during build" OFF)
if(GIT_SUBMODULE)
message(STATUS "Submodule update")
execute_process(
COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE GIT_SUBMODULE_RESULT
OUTPUT_VARIABLE GIT_SUBMODULE_OUTPUT
ERROR_VARIABLE GIT_SUBMODULE_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_SUBMODULE_RESULT EQUAL 0)
cmake_print_variables(GIT_SUBMODULE_RESULT GIT_SUBMODULE_OUTPUT GIT_SUBMODULE_ERROR)
message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMODULE_RESULT}, please checkout submodules")
endif()
endif()
endif()
include(CMakePrintHelpers)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref @
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QGC_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
cmake_print_variables(QGC_GIT_BRANCH)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short @
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QGC_GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
cmake_print_variables(QGC_GIT_HASH)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --always --tags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QGC_APP_VERSION_STR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
cmake_print_variables(QGC_APP_VERSION_STR)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=0
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QGC_APP_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
cmake_print_variables(QGC_APP_VERSION)
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --format=%aI ${QGC_APP_VERSION}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QGC_APP_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
cmake_print_variables(QGC_APP_DATE)
string(FIND ${QGC_APP_VERSION} "v" QGC_APP_VERSION_VALID)
if(QGC_APP_VERSION_VALID GREATER -1)
string(REPLACE "v" "" QGC_APP_VERSION ${QGC_APP_VERSION})
else()
set(QGC_APP_VERSION "0.0.0")
endif()
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" QGC_APP_VERSION_MATCH ${QGC_APP_VERSION})
set(QGC_APP_VERSION_MAJOR ${CMAKE_MATCH_1})
set(QGC_APP_VERSION_MINOR ${CMAKE_MATCH_2})
set(QGC_APP_VERSION_PATCH ${CMAKE_MATCH_3})
cmake_print_variables(QGC_APP_VERSION QGC_APP_VERSION_MAJOR QGC_APP_VERSION_MINOR QGC_APP_VERSION_PATCH)