diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f4602044..4134fcf9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,8 @@ if(NOT CMAKE_BUILD_TYPE) endif() message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") +set(GIT_COMMIT "" CACHE STRING "Git commit hash (skips git invocation if set)") + option(LIBDDWAF_BUILD_SHARED "Build shared library" ON) option(LIBDDWAF_BUILD_STATIC "Build shared library" ON) option(LIBDDWAF_TESTING "Load test subdirectories and targets" ON) diff --git a/cmake/package.cmake b/cmake/package.cmake index 927bb1eb4..b2b624909 100644 --- a/cmake/package.cmake +++ b/cmake/package.cmake @@ -22,20 +22,25 @@ set(CPACK_GENERATOR "TGZ") set(CPACK_SOURCE_GENERATOR "TGZ") ## Package name -execute_process(COMMAND git describe --exact-match --tags HEAD - WORKING_DIRECTORY ${libddwaf_SOURCE_DIR} - OUTPUT_VARIABLE DDWAF_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET -) - -if (NOT DDWAF_VERSION) +if(GIT_COMMIT) set(DDWAF_VERSION ${CMAKE_PROJECT_VERSION}) - execute_process(COMMAND git rev-parse --short HEAD + string(SUBSTRING "${GIT_COMMIT}" 0 7 SHORT_BUILD_ID) +else() + execute_process(COMMAND git describe --exact-match --tags HEAD WORKING_DIRECTORY ${libddwaf_SOURCE_DIR} - OUTPUT_VARIABLE SHORT_BUILD_ID + OUTPUT_VARIABLE DDWAF_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET ) + + if (NOT DDWAF_VERSION) + set(DDWAF_VERSION ${CMAKE_PROJECT_VERSION}) + execute_process(COMMAND git rev-parse --short HEAD + WORKING_DIRECTORY ${libddwaf_SOURCE_DIR} + OUTPUT_VARIABLE SHORT_BUILD_ID + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() endif() set(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${DDWAF_VERSION}-${CMAKE_SYSTEM_NAME}-${LIBDDWAF_PACKAGE_PROCESSOR}) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 42964059a..29bda900b 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,8 +1,12 @@ -execute_process(COMMAND git rev-parse HEAD - WORKING_DIRECTORY ${libddwaf_SOURCE_DIR} - OUTPUT_VARIABLE BUILD_ID - OUTPUT_STRIP_TRAILING_WHITESPACE -) +if(GIT_COMMIT) + set(BUILD_ID "${GIT_COMMIT}") +else() + execute_process(COMMAND git rev-parse HEAD + WORKING_DIRECTORY ${libddwaf_SOURCE_DIR} + OUTPUT_VARIABLE BUILD_ID + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() message(STATUS "Build id is ${BUILD_ID}") string(SUBSTRING "${BUILD_ID}" 0 2 BUILD_ID_PREFIX)