diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-06-28 19:44:01 +0200 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-06-29 03:23:31 +0200 |
| commit | 2a6f4d879ca79158b92aa84ca63137b86ed4704d (patch) | |
| tree | c3e619f341b2e176e834b8716863b198211477d9 /CMake | |
| parent | 61c45e8d685c5df05815ba60e3656b53947ba37c (diff) | |
CMake: Generate scmrev.h at build time instead of configure time.
Diffstat (limited to 'CMake')
| -rw-r--r-- | CMake/ScmRevGen.cmake | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/CMake/ScmRevGen.cmake b/CMake/ScmRevGen.cmake new file mode 100644 index 0000000000..aacf7491ce --- /dev/null +++ b/CMake/ScmRevGen.cmake @@ -0,0 +1,53 @@ +cmake_minimum_required(VERSION 3.13) + +# for revision info +if(GIT_FOUND) + # defines DOLPHIN_WC_REVISION + execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD + OUTPUT_VARIABLE DOLPHIN_WC_REVISION + OUTPUT_STRIP_TRAILING_WHITESPACE) + # defines DOLPHIN_WC_DESCRIBE + execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --always --long --dirty + OUTPUT_VARIABLE DOLPHIN_WC_DESCRIBE + OUTPUT_STRIP_TRAILING_WHITESPACE) + + # remove hash (and trailing "-0" if needed) from description + string(REGEX REPLACE "(-0)?-[^-]+((-dirty)?)$" "\\2" DOLPHIN_WC_DESCRIBE "${DOLPHIN_WC_DESCRIBE}") + + # defines DOLPHIN_WC_BRANCH + execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + OUTPUT_VARIABLE DOLPHIN_WC_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +# version number +set(DOLPHIN_VERSION_MAJOR "5") +set(DOLPHIN_VERSION_MINOR "0") +if(DOLPHIN_WC_BRANCH STREQUAL "stable") + set(DOLPHIN_VERSION_PATCH "0") +else() + set(DOLPHIN_VERSION_PATCH ${DOLPHIN_WC_REVISION}) +endif() + +# If Dolphin is not built from a Git repository, default the version info to +# reasonable values. +if(NOT DOLPHIN_WC_REVISION) + set(DOLPHIN_WC_DESCRIBE "${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}") + set(DOLPHIN_WC_REVISION "${DOLPHIN_WC_DESCRIBE} (no further info)") + set(DOLPHIN_WC_BRANCH "master") +endif() + +if(DOLPHIN_WC_BRANCH STREQUAL "master" OR DOLPHIN_WC_BRANCH STREQUAL "stable") + set(DOLPHIN_WC_IS_STABLE "1") +else() + set(DOLPHIN_WC_IS_STABLE "0") +endif() + +configure_file( + "${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h.in" + "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h.tmp" +) + +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h.tmp" "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h") + +file(REMOVE "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h.tmp") |
