diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a38cab..7a54531 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,18 +11,41 @@ include_directories("${INCLUDE_PATH}") set(GIT_VERSION_FILE ${CMAKE_SOURCE_DIR}/include/version.h) set(GIT_VERSION_TMP_FILE ${CMAKE_SOURCE_DIR}/include/verison.h.tmp) -add_custom_command( - OUTPUT ${GIT_VERSION_TMP_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE} - COMMAND python ${SCRIPT_DIR}/git_branch_name.py >> ${GIT_VERSION_TMP_FILE} - COMMAND python ${SCRIPT_DIR}/git_commit_hash.py >> ${GIT_VERSION_TMP_FILE} - COMMAND python ${SCRIPT_DIR}/git_tag_name.py >> ${GIT_VERSION_TMP_FILE} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE} - COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Regenerating version.h" - VERBATIM -) +#require python on windows +#i know this program can't be built on windows, but i wanted to figure out how to do this +if(WIN32) + find_package(PythonInterp 3 REQUIRED) +else() + find_package(PythonInterp 3 QUIET) +endif() + +if(PYTHONINTERP_FOUND) + add_custom_command( + OUTPUT ${GIT_VERSION_TMP_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE} + COMMAND ${PYTHON_EXECUTABLE} ${SCRIPT_DIR}/git_branch_name.py >> ${GIT_VERSION_TMP_FILE} + COMMAND ${PYTHON_EXECUTABLE} ${SCRIPT_DIR}/git_commit_hash.py >> ${GIT_VERSION_TMP_FILE} + COMMAND ${PYTHON_EXECUTABLE} ${SCRIPT_DIR}/git_tag_name.py >> ${GIT_VERSION_TMP_FILE} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE} + COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Regenerating version.h" + VERBATIM + ) +elseif(UNIX) + add_custom_command( + OUTPUT ${GIT_VERSION_TMP_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE} + COMMAND ${SCRIPT_DIR}/git_branch_name.sh >> ${GIT_VERSION_TMP_FILE} + COMMAND ${SCRIPT_DIR}/git_commit_hash.sh >> ${GIT_VERSION_TMP_FILE} + COMMAND ${SCRIPT_DIR}/git_tag_name.sh >> ${GIT_VERSION_TMP_FILE} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE} + COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Regenerating version.h" + VERBATIM + ) +endif() #setup cmake options option(BUILD_REXLEDCTL "Build led control program" ON) diff --git a/scripts/git_branch_name.sh b/scripts/git_branch_name.sh new file mode 100755 index 0000000..ec0c6c7 --- /dev/null +++ b/scripts/git_branch_name.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +output="$(git rev-parse --abbrev-ref HEAD)" + +if test -n "$output";then + echo "#define GIT_BRANCH_NAME \"$output\" //test" +fi diff --git a/scripts/git_commit_hash.sh b/scripts/git_commit_hash.sh new file mode 100755 index 0000000..01e315d --- /dev/null +++ b/scripts/git_commit_hash.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +output="$(git describe --always --dirty --abbrev --match="NeVeRmAtCh")" + +if test -n output;then + echo "#define GIT_COMMIT_HASH \"$output\"" +fi diff --git a/scripts/git_tag_name.sh b/scripts/git_tag_name.sh new file mode 100755 index 0000000..8e3cb7e --- /dev/null +++ b/scripts/git_tag_name.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +output="$(git tag --points-at HEAD)" + +if test -n "$output";then + if test "${output:0:1}" = "v" || test "${output:0:1}" = "V";then + echo "#define GIT_TAG_NAME \"${output:1}\"" + fi +fi