diff --git a/CMakeLists.txt b/CMakeLists.txt index ce7d08fe..6536429f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -243,7 +243,6 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/.svn/") endif (NOT TORTOISE_WCREV_EXECUTABLE) endif(WIN32) endif(Subversion_FOUND) - endif(EXISTS "${PROJECT_SOURCE_DIR}/.svn/") if(${HAVE_SVN}) @@ -253,15 +252,78 @@ if(${HAVE_SVN}) set(VERSION_REVISION ${Project_WC_REVISION}) set(VERSION_LAST_AUTHOR ${Project_WC_LAST_CHANGED_AUTHOR}) set(VERSION_LAST_DATA ${Project_WC_LAST_CHANGED_DATE}) + set(VERSION_ONE_LINE "${VERSION_REVISION} author: ${VERSION_LAST_AUTHOR} date: ${VERSION_LAST_DATA}") + set(VERSION_VER_NUM ${VERSION_REVISION}) else() set(VERSION_REVISION -1) endif() -configure_file( - "${PROJECT_SOURCE_DIR}/build/cmake/svn_info.in" - "${PROJECT_SOURCE_DIR}/mpp/svn_info.h" -) +# ---------------------------------------------------------------------------- +# Create git version information +# ---------------------------------------------------------------------------- +if(EXISTS "${PROJECT_SOURCE_DIR}/.git/") + find_package(Git) + if(GIT_FOUND) + # get author + execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%an + OUTPUT_VARIABLE EXEC_OUT + ERROR_VARIABLE EXEC_ERROR + RESULT_VARIABLE EXEC_RET + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) + if (NOT EXEC_RET) + message(STATUS "author: ${EXEC_OUT}") + set(VERSION_LAST_AUTHOR ${EXEC_OUT}) + endif() + + # get date + execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%ad + OUTPUT_VARIABLE EXEC_OUT + ERROR_VARIABLE EXEC_ERROR + RESULT_VARIABLE EXEC_RET + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) + + if (NOT EXEC_RET) + message(STATUS "author: ${EXEC_OUT}") + set(VERSION_LAST_DATA ${EXEC_OUT}) + endif() + + # get version hash + execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%H + OUTPUT_VARIABLE EXEC_OUT + ERROR_VARIABLE EXEC_ERROR + RESULT_VARIABLE EXEC_RET + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) + + if (NOT EXEC_RET) + set(VERSION_REVISION ${EXEC_OUT}) + endif() + + # get one line version information + execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:"%h author: %an %s" + OUTPUT_VARIABLE EXEC_OUT + ERROR_VARIABLE EXEC_ERROR + RESULT_VARIABLE EXEC_RET + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) + + if (NOT EXEC_RET) + message(STATUS "git version: ${EXEC_OUT}") + set(VERSION_ONE_LINE ${EXEC_OUT}) + string(REPLACE "\"" "" VERSION_ONE_LINE ${VERSION_ONE_LINE}) + endif() + + set(VERSION_VER_NUM -1) + endif() +endif(EXISTS "${PROJECT_SOURCE_DIR}/.git/") + +configure_file( + "${PROJECT_SOURCE_DIR}/build/cmake/version.in" + "${PROJECT_SOURCE_DIR}/mpp/version.h" +) # ---------------------------------------------------------------------------- # Build options diff --git a/build/cmake/svn_info.in b/build/cmake/version.in similarity index 69% rename from build/cmake/svn_info.in rename to build/cmake/version.in index 1d3137e3..1dce0688 100644 --- a/build/cmake/svn_info.in +++ b/build/cmake/version.in @@ -17,10 +17,11 @@ #ifndef __VERSION_H__ #define __VERSION_H__ -#define SVN_VERSION "@VERSION_REVISION@" -#define SVN_AUTHOR "@VERSION_LAST_AUTHOR@" -#define SVN_DATE "@VERSION_LAST_DATA@" -#define SVN_ONE_LINE "r@VERSION_REVISION@ author: @VERSION_LAST_AUTHOR@ date: @VERSION_LAST_DATA@" +#define MPP_VERSION "@VERSION_REVISION@" +#define MPP_AUTHOR "@VERSION_LAST_AUTHOR@" +#define MPP_DATE "@VERSION_LAST_DATA@" +#define MPP_ONE_LINE "@VERSION_ONE_LINE@" +#define MPP_VER_NUM "@VERSION_VER_NUM@" #endif /*__VERSION_H__*/ diff --git a/mpp/mpp_info.cpp b/mpp/mpp_info.cpp index c0b1ba93..e0acdbe8 100644 --- a/mpp/mpp_info.cpp +++ b/mpp/mpp_info.cpp @@ -23,16 +23,17 @@ #include "mpp_env.h" #include "mpp_info.h" -#include "svn_info.h" +#include "version.h" /* * To avoid string | grep author getting multiple results * use commit to replace author */ -static char mpp_version_revision[] = SVN_VERSION; -static char mpp_version_commit[] = SVN_AUTHOR; -static char mpp_version_date[] = SVN_DATE; -static char mpp_version_one_line[] = SVN_ONE_LINE; +static char mpp_version_revision[] = MPP_VERSION; +static char mpp_version_commit[] = MPP_AUTHOR; +static char mpp_version_date[] = MPP_DATE; +static char mpp_version_one_line[] = MPP_ONE_LINE; +static char mpp_version_number[] = MPP_VER_NUM; static RK_CHIP_TYPE chip_version(void) { @@ -97,6 +98,6 @@ RK_CHIP_TYPE get_chip_type() int mpp_info_get_revision() { - return atoi(SVN_VERSION); + return atoi(mpp_version_number); }