Changed GitBuildID.cmake to work as function

This commit is contained in:
redtide 2024-01-04 13:00:26 +01:00
parent 7633785567
commit a2f62eab04
No known key found for this signature in database
2 changed files with 32 additions and 28 deletions

View file

@ -6,25 +6,29 @@
# OUTPUT_FILE The file which gets written # OUTPUT_FILE The file which gets written
# PREFIX An optional prefix for the constant name # PREFIX An optional prefix for the constant name
get_filename_component(OUTPUT_NAME "${OUTPUT_FILE}" NAME)
get_filename_component(OUTPUT_DIR "${OUTPUT_FILE}" DIRECTORY)
message("(Git Build ID) Generating ${OUTPUT_NAME}")
find_package(Git QUIET) find_package(Git QUIET)
file(MAKE_DIRECTORY "${OUTPUT_DIR}") function(make_git_build_id)
set(oneValueArgs SOURCE_DIR OUTPUT_FILE PREFIX)
cmake_parse_arguments(GBI "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(GIT_FOUND) get_filename_component(OUTPUT_NAME "${GBI_OUTPUT_FILE}" NAME)
get_filename_component(OUTPUT_DIR "${GBI_OUTPUT_FILE}" DIRECTORY)
message("(Git Build ID) Generating ${OUTPUT_NAME}")
file(MAKE_DIRECTORY "${OUTPUT_DIR}")
if(GIT_FOUND)
execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD" execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD"
WORKING_DIRECTORY "${SOURCE_DIR}" WORKING_DIRECTORY "${GBI_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_COMMIT_ID OUTPUT_VARIABLE GIT_COMMIT_ID
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
else() else()
set(GIT_COMMIT_ID "") set(GIT_COMMIT_ID "")
message("(Git Build ID) Error: could not find Git") message("(Git Build ID) Error: could not find Git")
endif() endif()
file(WRITE "${OUTPUT_FILE}.temp" "const char* ${PREFIX}GitBuildId = \"${GIT_COMMIT_ID}\";\n") file(WRITE "${GBI_OUTPUT_FILE}.temp" "const char* ${GBI_PREFIX}GitBuildId = \"${GIT_COMMIT_ID}\";\n")
execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "copy_if_different" "${OUTPUT_FILE}.temp" "${OUTPUT_FILE}") execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "copy_if_different" "${GBI_OUTPUT_FILE}.temp" "${GBI_OUTPUT_FILE}")
file(REMOVE "${OUTPUT_FILE}.temp") file(REMOVE "${GBI_OUTPUT_FILE}.temp")
endfunction()

View file

@ -358,17 +358,17 @@ endif()
add_library(sfizz::sfizz ALIAS sfizz_static) add_library(sfizz::sfizz ALIAS sfizz_static)
# Git build identifier # Git build identifier
add_custom_target(sfizz-generate-git-build-id include(GitBuildID)
COMMAND "${CMAKE_COMMAND}" make_git_build_id(
"-DSOURCE_DIR=${PROJECT_SOURCE_DIR}" SOURCE_DIR "${PROJECT_SOURCE_DIR}"
"-DOUTPUT_FILE=${PROJECT_BINARY_DIR}/git-build-id/GitBuildId.c" OUTPUT_FILE "${PROJECT_BINARY_DIR}/git-build-id/GitBuildId.c"
"-P" "${PROJECT_SOURCE_DIR}/cmake/GitBuildID.cmake" )
BYPRODUCTS "${PROJECT_BINARY_DIR}/git-build-id/GitBuildId.c") add_library(sfizz_git_build_id STATIC EXCLUDE_FROM_ALL
add_library(sfizz-git-build-id STATIC EXCLUDE_FROM_ALL
"sfizz/git-build-id/GitBuildId.h" "sfizz/git-build-id/GitBuildId.h"
"${PROJECT_BINARY_DIR}/git-build-id/GitBuildId.c") "${PROJECT_BINARY_DIR}/git-build-id/GitBuildId.c"
target_include_directories(sfizz-git-build-id PUBLIC "sfizz/git-build-id") )
add_dependencies(sfizz-git-build-id sfizz-generate-git-build-id) target_include_directories(sfizz_git_build_id PUBLIC "sfizz/git-build-id")
target_link_libraries(sfizz_static PRIVATE sfizz_git_build_id)
# Preserve generated files (Faust) # Preserve generated files (Faust)
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM TRUE) set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM TRUE)