mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
[cmake] unify version creation
* move to common cmake/GetProjectVersion.cmake for both, WinPR and FreeRDP * add preference for git tag or commit * move options to this common file
This commit is contained in:
@@ -100,25 +100,10 @@ if($ENV{BUILD_NUMBER})
|
|||||||
set(BUILD_NUMBER $ENV{BUILD_NUMBER})
|
set(BUILD_NUMBER $ENV{BUILD_NUMBER})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(VERSION_REGEX "^(.*)([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
|
include(GetProjectVersion)
|
||||||
set(RAW_VERSION_STRING "3.16.1-dev0")
|
get_project_version(
|
||||||
if(EXISTS "${PROJECT_SOURCE_DIR}/.source_tag")
|
FREERDP_VERSION_MAJOR FREERDP_VERSION_MINOR FREERDP_VERSION_REVISION FREERDP_VERSION_SUFFIX GIT_REVISION
|
||||||
file(READ ${PROJECT_SOURCE_DIR}/.source_tag RAW_VERSION_STRING)
|
)
|
||||||
elseif(USE_VERSION_FROM_GIT_TAG)
|
|
||||||
git_get_exact_tag(_GIT_TAG --tags --always)
|
|
||||||
if(NOT ${_GIT_TAG} STREQUAL "n/a")
|
|
||||||
string(REGEX MATCH ${VERSION_REGEX} FOUND_TAG "${_GIT_TAG}")
|
|
||||||
if(FOUND_TAG)
|
|
||||||
set(RAW_VERSION_STRING ${_GIT_TAG})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
|
|
||||||
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\2" FREERDP_VERSION_MAJOR "${RAW_VERSION_STRING}")
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\3" FREERDP_VERSION_MINOR "${RAW_VERSION_STRING}")
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\4" FREERDP_VERSION_REVISION "${RAW_VERSION_STRING}")
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\5" FREERDP_VERSION_SUFFIX "${RAW_VERSION_STRING}")
|
|
||||||
|
|
||||||
set(FREERDP_API_VERSION "${FREERDP_VERSION_MAJOR}")
|
set(FREERDP_API_VERSION "${FREERDP_VERSION_MAJOR}")
|
||||||
set(FREERDP_VERSION "${FREERDP_VERSION_MAJOR}.${FREERDP_VERSION_MINOR}.${FREERDP_VERSION_REVISION}")
|
set(FREERDP_VERSION "${FREERDP_VERSION_MAJOR}.${FREERDP_VERSION_MINOR}.${FREERDP_VERSION_REVISION}")
|
||||||
@@ -129,22 +114,6 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
message("FREERDP_VERSION=${FREERDP_VERSION_FULL}")
|
message("FREERDP_VERSION=${FREERDP_VERSION_FULL}")
|
||||||
|
|
||||||
if(EXISTS "${PROJECT_SOURCE_DIR}/.source_version")
|
|
||||||
file(READ ${PROJECT_SOURCE_DIR}/.source_version GIT_REVISION)
|
|
||||||
|
|
||||||
string(STRIP ${GIT_REVISION} GIT_REVISION)
|
|
||||||
elseif(USE_VERSION_FROM_GIT_TAG)
|
|
||||||
git_get_exact_tag(GIT_REVISION --tags --always)
|
|
||||||
|
|
||||||
if(${GIT_REVISION} STREQUAL "n/a")
|
|
||||||
git_rev_parse(GIT_REVISION --short)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT GIT_REVISION)
|
|
||||||
set(GIT_REVISION ${FREERDP_VERSION})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Git Revision ${GIT_REVISION}")
|
message(STATUS "Git Revision ${GIT_REVISION}")
|
||||||
|
|
||||||
# MSVC compatibility with system headers
|
# MSVC compatibility with system headers
|
||||||
|
|||||||
@@ -153,8 +153,6 @@ if(WITH_VAAPI_H264_ENCODING)
|
|||||||
add_definitions("-DWITH_VAAPI_H264_ENCODING")
|
add_definitions("-DWITH_VAAPI_H264_ENCODING")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_VERSION_FROM_GIT_TAG "Extract FreeRDP version from git tag." ON)
|
|
||||||
|
|
||||||
option(WITH_CAIRO "Use CAIRO image library for screen resizing" OFF)
|
option(WITH_CAIRO "Use CAIRO image library for screen resizing" OFF)
|
||||||
option(WITH_SWSCALE "Use SWScale image library for screen resizing" ON)
|
option(WITH_SWSCALE "Use SWScale image library for screen resizing" ON)
|
||||||
|
|
||||||
|
|||||||
48
cmake/GetProjectVersion.cmake
Normal file
48
cmake/GetProjectVersion.cmake
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
option(USE_VERSION_FROM_GIT_TAG "Extract FreeRDP version from git tag." ON)
|
||||||
|
option(USE_GIT_FOR_REVISION "Extract git tag/commit" OFF)
|
||||||
|
|
||||||
|
function(get_project_version VERSION_MAJOR VERSION_MINOR VERSION_REVISION VERSION_SUFFIX GIT_REVISION)
|
||||||
|
|
||||||
|
# Default version, hard codec per release
|
||||||
|
set(RAW_VERSION_STRING "3.16.1-dev0")
|
||||||
|
|
||||||
|
set(VERSION_REGEX "^(.*)([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
|
||||||
|
|
||||||
|
# Prefer version from .source_tag file
|
||||||
|
if(EXISTS "${PROJECT_SOURCE_DIR}/.source_tag")
|
||||||
|
file(READ ${PROJECT_SOURCE_DIR}/.source_tag RAW_VERSION_STRING)
|
||||||
|
# otherwise try to extract the version from a git tag
|
||||||
|
elseif(USE_VERSION_FROM_GIT_TAG)
|
||||||
|
git_get_exact_tag(_GIT_TAG --tags --always)
|
||||||
|
if(NOT ${_GIT_TAG} STREQUAL "n/a")
|
||||||
|
string(REGEX MATCH ${VERSION_REGEX} FOUND_TAG "${_GIT_TAG}")
|
||||||
|
if(FOUND_TAG)
|
||||||
|
set(RAW_VERSION_STRING ${_GIT_TAG})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Default git revision
|
||||||
|
set(FKT_GIT_REVISION "n/a")
|
||||||
|
|
||||||
|
# Prefer git revision from .source_version file
|
||||||
|
if(EXISTS "${PROJECT_SOURCE_DIR}/.source_version")
|
||||||
|
file(READ ${PROJECT_SOURCE_DIR}/.source_version FKT_GIT_REVISION)
|
||||||
|
string(STRIP ${FKT_GIT_REVISION} FKT_GIT_REVISION)
|
||||||
|
# otherwise try to call git and extract tag/commit
|
||||||
|
elseif(USE_VERSION_FROM_GIT_TAG OR USE_GIT_FOR_REVISION)
|
||||||
|
git_rev_parse(FKT_GIT_REVISION --short)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
|
||||||
|
string(REGEX REPLACE "${VERSION_REGEX}" "\\2" FKT_VERSION_MAJOR "${RAW_VERSION_STRING}")
|
||||||
|
string(REGEX REPLACE "${VERSION_REGEX}" "\\3" FKT_VERSION_MINOR "${RAW_VERSION_STRING}")
|
||||||
|
string(REGEX REPLACE "${VERSION_REGEX}" "\\4" FKT_VERSION_REVISION "${RAW_VERSION_STRING}")
|
||||||
|
string(REGEX REPLACE "${VERSION_REGEX}" "\\5" FKT_VERSION_SUFFIX "${RAW_VERSION_STRING}")
|
||||||
|
|
||||||
|
set(${VERSION_MAJOR} ${FKT_VERSION_MAJOR} PARENT_SCOPE)
|
||||||
|
set(${VERSION_MINOR} ${FKT_VERSION_MINOR} PARENT_SCOPE)
|
||||||
|
set(${VERSION_REVISION} ${FKT_VERSION_REVISION} PARENT_SCOPE)
|
||||||
|
set(${VERSION_SUFFIX} ${FKT_VERSION_SUFFIX} PARENT_SCOPE)
|
||||||
|
set(${GIT_REVISION} ${FKT_GIT_REVISION} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
@@ -14,6 +14,8 @@ all sub-projects as WinPR.
|
|||||||
|
|
||||||
As default both variables are equal.
|
As default both variables are equal.
|
||||||
|
|
||||||
|
The whole detection has been encapsulated in cmake/GetProjectVersion.cmake
|
||||||
|
|
||||||
For nightly or development builds it is often of advantage to have the actual version from git
|
For nightly or development builds it is often of advantage to have the actual version from git
|
||||||
instead of having the hard coded value set in CMakeLists.txt. For this the cmake variable `USE_VERSION_FROM_GIT_TAG`
|
instead of having the hard coded value set in CMakeLists.txt. For this the cmake variable `USE_VERSION_FROM_GIT_TAG`
|
||||||
can be set. In order for this to work you need a) source checkout and b) git command line utility.
|
can be set. In order for this to work you need a) source checkout and b) git command line utility.
|
||||||
|
|||||||
@@ -130,25 +130,8 @@ if(NOT WIN32)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Soname versioning
|
# Soname versioning
|
||||||
set(VERSION_REGEX "^(.*)([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
|
include(GetProjectVersion)
|
||||||
set(RAW_VERSION_STRING "3.16.1-dev0")
|
get_project_version(WINPR_VERSION_MAJOR WINPR_VERSION_MINOR WINPR_VERSION_REVISION WINPR_VERSION_SUFFIX GIT_REVISION)
|
||||||
if(EXISTS "${PROJECT_SOURCE_DIR}/.source_tag")
|
|
||||||
file(READ ${PROJECT_SOURCE_DIR}/.source_tag RAW_VERSION_STRING)
|
|
||||||
elseif(USE_VERSION_FROM_GIT_TAG)
|
|
||||||
git_get_exact_tag(_GIT_TAG --tags --always)
|
|
||||||
if(NOT ${_GIT_TAG} STREQUAL "n/a")
|
|
||||||
string(REGEX MATCH ${VERSION_REGEX} FOUND_TAG "${_GIT_TAG}")
|
|
||||||
if(FOUND_TAG)
|
|
||||||
set(RAW_VERSION_STRING ${_GIT_TAG})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
|
|
||||||
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\2" WINPR_VERSION_MAJOR "${RAW_VERSION_STRING}")
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\3" WINPR_VERSION_MINOR "${RAW_VERSION_STRING}")
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\4" WINPR_VERSION_REVISION "${RAW_VERSION_STRING}")
|
|
||||||
string(REGEX REPLACE "${VERSION_REGEX}" "\\5" WINPR_VERSION_SUFFIX "${RAW_VERSION_STRING}")
|
|
||||||
|
|
||||||
set(WINPR_VERSION "${WINPR_VERSION_MAJOR}.${WINPR_VERSION_MINOR}.${WINPR_VERSION_REVISION}")
|
set(WINPR_VERSION "${WINPR_VERSION_MAJOR}.${WINPR_VERSION_MINOR}.${WINPR_VERSION_REVISION}")
|
||||||
set(WINPR_API_VERSION "${WINPR_VERSION_MAJOR}")
|
set(WINPR_API_VERSION "${WINPR_VERSION_MAJOR}")
|
||||||
|
|||||||
Reference in New Issue
Block a user