[cmake]: add git and svn version script

Change-Id: Ia1f908986f503191c3e5a6bbe9dc5daa55648b40
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2016-08-20 18:44:34 +08:00
parent 9da1bfaa04
commit 72a6e3b06a
3 changed files with 79 additions and 15 deletions

View File

@@ -243,7 +243,6 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/.svn/")
endif (NOT TORTOISE_WCREV_EXECUTABLE) endif (NOT TORTOISE_WCREV_EXECUTABLE)
endif(WIN32) endif(WIN32)
endif(Subversion_FOUND) endif(Subversion_FOUND)
endif(EXISTS "${PROJECT_SOURCE_DIR}/.svn/") endif(EXISTS "${PROJECT_SOURCE_DIR}/.svn/")
if(${HAVE_SVN}) if(${HAVE_SVN})
@@ -253,15 +252,78 @@ if(${HAVE_SVN})
set(VERSION_REVISION ${Project_WC_REVISION}) set(VERSION_REVISION ${Project_WC_REVISION})
set(VERSION_LAST_AUTHOR ${Project_WC_LAST_CHANGED_AUTHOR}) set(VERSION_LAST_AUTHOR ${Project_WC_LAST_CHANGED_AUTHOR})
set(VERSION_LAST_DATA ${Project_WC_LAST_CHANGED_DATE}) 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() else()
set(VERSION_REVISION -1) set(VERSION_REVISION -1)
endif() endif()
configure_file( # ----------------------------------------------------------------------------
"${PROJECT_SOURCE_DIR}/build/cmake/svn_info.in" # Create git version information
"${PROJECT_SOURCE_DIR}/mpp/svn_info.h" # ----------------------------------------------------------------------------
) 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 # Build options

View File

@@ -17,10 +17,11 @@
#ifndef __VERSION_H__ #ifndef __VERSION_H__
#define __VERSION_H__ #define __VERSION_H__
#define SVN_VERSION "@VERSION_REVISION@" #define MPP_VERSION "@VERSION_REVISION@"
#define SVN_AUTHOR "@VERSION_LAST_AUTHOR@" #define MPP_AUTHOR "@VERSION_LAST_AUTHOR@"
#define SVN_DATE "@VERSION_LAST_DATA@" #define MPP_DATE "@VERSION_LAST_DATA@"
#define SVN_ONE_LINE "r@VERSION_REVISION@ author: @VERSION_LAST_AUTHOR@ date: @VERSION_LAST_DATA@" #define MPP_ONE_LINE "@VERSION_ONE_LINE@"
#define MPP_VER_NUM "@VERSION_VER_NUM@"
#endif /*__VERSION_H__*/ #endif /*__VERSION_H__*/

View File

@@ -23,16 +23,17 @@
#include "mpp_env.h" #include "mpp_env.h"
#include "mpp_info.h" #include "mpp_info.h"
#include "svn_info.h" #include "version.h"
/* /*
* To avoid string | grep author getting multiple results * To avoid string | grep author getting multiple results
* use commit to replace author * use commit to replace author
*/ */
static char mpp_version_revision[] = SVN_VERSION; static char mpp_version_revision[] = MPP_VERSION;
static char mpp_version_commit[] = SVN_AUTHOR; static char mpp_version_commit[] = MPP_AUTHOR;
static char mpp_version_date[] = SVN_DATE; static char mpp_version_date[] = MPP_DATE;
static char mpp_version_one_line[] = SVN_ONE_LINE; static char mpp_version_one_line[] = MPP_ONE_LINE;
static char mpp_version_number[] = MPP_VER_NUM;
static RK_CHIP_TYPE chip_version(void) static RK_CHIP_TYPE chip_version(void)
{ {
@@ -97,6 +98,6 @@ RK_CHIP_TYPE get_chip_type()
int mpp_info_get_revision() int mpp_info_get_revision()
{ {
return atoi(SVN_VERSION); return atoi(mpp_version_number);
} }