diff --git a/CMakeLists.txt b/CMakeLists.txt index caeb8e7..bb5eaff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,7 @@ project(moonlight-embedded VERSION 2.4.10 LANGUAGES C) SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") SET(CMAKE_C_STANDARD 99) include(${CMAKE_ROOT}/Modules/GNUInstallDirs.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/generate_version_header.cmake) aux_source_directory(./src SRC_LIST) list(APPEND SRC_LIST ./src/input/evdev.c ./src/input/mapping.c ./src/input/udev.c) diff --git a/cmake/generate_version_header.cmake b/cmake/generate_version_header.cmake new file mode 100644 index 0000000..a1ff085 --- /dev/null +++ b/cmake/generate_version_header.cmake @@ -0,0 +1,29 @@ +include(FindGit) + +if(GIT_FOUND AND IS_DIRECTORY "${PROJECT_SOURCE_DIR}/.git") + set(GIT_BRANCH "") + set(GIT_COMMIT_HASH "") + + # Get the current working branch + execute_process( + COMMAND ${GIT_EXECUTABLE} name-rev --name-only HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH0 + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + # Clean Branch name to have only the branch + STRING(REGEX REPLACE "((origin))+" "" GIT_BRANCH1 ${GIT_BRANCH0}) + STRING(REGEX REPLACE "((remotes))+" "" GIT_BRANCH2 ${GIT_BRANCH1}) + STRING(REGEX REPLACE "\\/+" "" GIT_BRANCH3 ${GIT_BRANCH2}) + STRING(REGEX REPLACE "~[0-9]*" "" GIT_BRANCH4 ${GIT_BRANCH3}) + STRING(REGEX REPLACE "\\^[0-9]*" "" GIT_BRANCH ${GIT_BRANCH4}) + + # Get the latest abbreviated commit hash of the working branch + execute_process( + COMMAND git log -1 --format=%h + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() diff --git a/src/configuration.h.in b/src/configuration.h.in index e329365..db35be9 100644 --- a/src/configuration.h.in +++ b/src/configuration.h.in @@ -20,5 +20,7 @@ #define VERSION_MAJOR @PROJECT_VERSION_MAJOR@ #define VERSION_MINOR @PROJECT_VERSION_MINOR@ #define VERSION_PATCH @PROJECT_VERSION_PATCH@ +#cmakedefine GIT_BRANCH "@GIT_BRANCH@" +#cmakedefine GIT_COMMIT_HASH "@GIT_COMMIT_HASH@" #define COMPILE_OPTIONS "@MOONLIGHT_OPTIONS@" diff --git a/src/main.c b/src/main.c index 6802b30..1c6633e 100644 --- a/src/main.c +++ b/src/main.c @@ -151,7 +151,11 @@ static void stream(PSERVER_DATA server, PCONFIGURATION config, enum platform sys } static void help() { + #ifdef GIT_BRANCH + printf("Moonlight Embedded %d.%d.%d-%s-%s\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, GIT_BRANCH, GIT_COMMIT_HASH); + #else printf("Moonlight Embedded %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); + #endif printf("Usage: moonlight [action] (options) [host]\n"); printf(" moonlight [configfile]\n"); printf("\n Actions\n\n");