mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
a7939b727f
added new `GIT_MODIFIED` variable - used to determine whether the vcs tree was compiled or not at the time of building the app added information about running in DEBUG mode which might be very helpful to determine whether one is running a DEBUG build, e.g. in the process of troubleshooting/determining crash causes Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
81 lines
2.9 KiB
CMake
81 lines
2.9 KiB
CMake
# This script will set the following variables:
|
|
# GIT_HASH
|
|
# If the git binary is found and the git work tree is intact, GIT_HASH is worked out using the `git rev-parse --short HEAD` command
|
|
# The value of GIT_HASH can be overriden by defining the GIT_HASH environment variable
|
|
# GIT_COMMIT
|
|
# If the git binary is found and the git work tree is intact, GIT_COMMIT is worked out using the `git rev-parse HEAD` command
|
|
# The value of GIT_COMMIT can be overriden by defining the GIT_COMMIT environment variable
|
|
# GIT_RELEASE
|
|
# If the git binary is found and the git work tree is intact, GIT_RELEASE is worked out using the `git describe` command
|
|
# The value of GIT_RELEASE can be overriden by defining the GIT_RELEASE environment variable
|
|
# GIT_MODIFIED
|
|
# If the git binary is found and the git work tree is intact, GIT_MODIFIED is worked out by checking if output of `git status --porcelain -z` command is empty
|
|
# The value of GIT_MODIFIED cannot be overriden
|
|
|
|
find_package(Git)
|
|
|
|
set(GIT_HASH "GIT-REPOSITORY-NOT-FOUND")
|
|
set(GIT_COMMIT "GIT-REPOSITORY-NOT-FOUND")
|
|
set(GIT_RELEASE "${PROJECT_VERSION}")
|
|
set(GIT_MODIFIED 0)
|
|
|
|
if (GIT_EXECUTABLE)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --is-inside-work-tree
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
RESULT_VARIABLE GIT_REPOSITORY_NOT_FOUND
|
|
ERROR_QUIET
|
|
)
|
|
if (GIT_REPOSITORY_NOT_FOUND)
|
|
set(GIT_REPOSITORY_FOUND 0)
|
|
else ()
|
|
set(GIT_REPOSITORY_FOUND 1)
|
|
endif()
|
|
|
|
if (GIT_REPOSITORY_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_HASH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} describe
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_RELEASE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} status --porcelain -z
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_MODIFIED_OUTPUT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif (GIT_REPOSITORY_FOUND)
|
|
endif (GIT_EXECUTABLE)
|
|
|
|
if (GIT_MODIFIED_OUTPUT)
|
|
set(GIT_MODIFIED 1)
|
|
endif ()
|
|
|
|
if (DEFINED ENV{GIT_HASH})
|
|
set(GIT_HASH "$ENV{GIT_HASH}")
|
|
endif ()
|
|
if (DEFINED ENV{GIT_COMMIT})
|
|
set(GIT_COMMIT "$ENV{GIT_COMMIT}")
|
|
endif ()
|
|
if (DEFINED ENV{GIT_RELEASE})
|
|
set(GIT_RELEASE "$ENV{GIT_RELEASE}")
|
|
endif ()
|
|
|
|
message(STATUS "Injected git values: ${GIT_COMMIT} (${GIT_RELEASE}) modified: ${GIT_MODIFIED}")
|