Skip to content

Commit

Permalink
Merge pull request #15 from DaoCasino/cmake-versioning-409
Browse files Browse the repository at this point in the history
CYB-409 cmake functions for node & contracts
  • Loading branch information
adrianopol authored Oct 30, 2019
2 parents 113e4b9 + 6c33d90 commit 0d65d6b
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 31 deletions.
54 changes: 23 additions & 31 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,43 +31,33 @@ include(VersionMacros)
include(SetupTargetMacros)
include(InstallDirectoryPermissions)
include(MASSigning)
include(utils)

#---------- configuration ----------#
set(BLOCKCHAIN_NAME "EOSIO")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS ON)
set(CXX_STANDARD_REQUIRED ON)

execute_process(COMMAND git describe --tags
OUTPUT_VARIABLE GIT_TAG_RAW
ERROR_QUIET)
string(STRIP ${GIT_TAG_RAW} GIT_TAG)
string(REGEX REPLACE "^v" "" SEMVER_TMP_1 ${GIT_TAG})
string(REPLACE "." ";" SEMVER_TMP_LIST ${SEMVER_TMP_1})
list(GET SEMVER_TMP_LIST 0 SEMVER_MAJOR) # SEMVER_MAJOR.X.X
list(GET SEMVER_TMP_LIST 1 SEMVER_MINOR) # SEMVER_MAJOR.SEMVER_MINOR.X
list(GET SEMVER_TMP_LIST 2 SEMVER_TMP_PATCH)
string(REPLACE "-" ";" SEMVER_TMP_PATCH_LIST ${SEMVER_TMP_PATCH})
list(GET SEMVER_TMP_PATCH_LIST 0 SEMVER_PATCH) # SEMVER_MAJOR.SEMVER_MINOR.SEMVER_PATCH
set(SEMVER_FULL "${SEMVER_MAJOR}.${SEMVER_MINOR}.${SEMVER_PATCH}")

message(STATUS "${PROJECT} version: ${SEMVER_FULL} (semver), ${GIT_TAG} (git)")

set(VERSION_MAJOR ${SEMVER_MAJOR})
set(VERSION_MINOR ${SEMVER_MINOR})
set(VERSION_PATCH ${SEMVER_PATCH})

if(VERSION_SUFFIX)
set(VERSION_FULL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_SUFFIX}")
else()
set(VERSION_FULL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
endif()
set(CLI_CLIENT_EXECUTABLE_NAME ${PROJECT}-cli)
set(NODE_EXECUTABLE_NAME ${PROJECT}-node)
set(KEY_STORE_EXECUTABLE_NAME ${PROJECT}-wallet)
set(GUI_CLIENT_EXECUTABLE_NAME ${PROJECT})
set(CUSTOM_URL_SCHEME "gcs")
set(INSTALLER_APP_ID "68ad7005-8eee-49c9-95ce-9eed97e5b347")

#---------- version ----------#
get_version_from_git(VERSION_FULL VERSION_DIRTY)

set( CLI_CLIENT_EXECUTABLE_NAME ${PROJECT}-cli )
set( NODE_EXECUTABLE_NAME ${PROJECT}-node )
set( KEY_STORE_EXECUTABLE_NAME ${PROJECT}-wallet )
set( GUI_CLIENT_EXECUTABLE_NAME ${PROJECT} )
set( CUSTOM_URL_SCHEME "gcs" )
set( INSTALLER_APP_ID "68ad7005-8eee-49c9-95ce-9eed97e5b347" )
# set VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH
get_version_component("${VERSION_FULL}" 0 VERSION_MAJOR)
get_version_component("${VERSION_FULL}" 1 VERSION_MINOR)
get_version_component("${VERSION_FULL}" 2 VERSION_PATCH)

message(STATUS "${PROJECT} version: ${VERSION_FULL} (semver), ${VERSION_DIRTY} (git)")
message(STATUS " VERSION_MAJOR = ${VERSION_MAJOR}")
message(STATUS " VERSION_MINOR = ${VERSION_MINOR}")
message(STATUS " VERSION_PATCH = ${VERSION_PATCH}")

# http://stackoverflow.com/a/18369825
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
Expand Down Expand Up @@ -222,7 +212,6 @@ if(ENABLE_TX_SPONSORSHIP)
add_definitions(-DENABLE_TX_SPONSORSHIP)
endif()

include(utils)
###

if("${CORE_SYMBOL_NAME}" STREQUAL "")
Expand Down Expand Up @@ -274,6 +263,9 @@ install(FILES ${CMAKE_BINARY_DIR}/modules/eosio-config.cmake DESTINATION ${CMAKE
configure_file(${CMAKE_SOURCE_DIR}/CMakeModules/EosioTester.cmake.in ${CMAKE_BINARY_DIR}/modules/EosioTester.cmake @ONLY)
install(FILES ${CMAKE_BINARY_DIR}/modules/EosioTester.cmake DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT})

# for contracts repository
install(FILES ${CMAKE_SOURCE_DIR}/CMakeModules/utils.cmake DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT}/ RENAME ${PROJECT}-utils.cmake)

configure_file(${CMAKE_SOURCE_DIR}/LICENSE
${CMAKE_BINARY_DIR}/licenses/${PROJECT}/LICENSE COPYONLY)
configure_file(${CMAKE_SOURCE_DIR}/libraries/wabt/LICENSE
Expand Down
39 changes: 39 additions & 0 deletions CMakeModules/utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,42 @@ macro( copy_bin file )
add_custom_command( TARGET ${file} POST_BUILD COMMAND mkdir -p ${CMAKE_BINARY_DIR}/bin )
add_custom_command( TARGET ${file} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${file} ${CMAKE_BINARY_DIR}/bin/ )
endmacro( copy_bin )

#
# Set variable ${out_semver} to a semantic version taken from a git tag.
# Set variable ${out_dirty} to a current (probably dirty) git tag.
#
# Semantic version is a 3-component string "X.Y.Z".
#
# Example:
#
# get_version_from_git(semver dirty)
# message(STATUS "semver = ${semver}, dirty git version = ${dirty}")
#
function(get_version_from_git out_semver out_dirty)
execute_process(
COMMAND git describe --tags --dirty
OUTPUT_VARIABLE git_tag_raw
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)

string(REGEX REPLACE "^v([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" semver "${git_tag_raw}")

# return
set(${out_semver} "${semver}" PARENT_SCOPE)
set(${out_dirty} "${git_tag_raw}" PARENT_SCOPE)
endfunction()

#
# get_version_component("11.22.33" 0 x) # => x = 11
# get_version_component("11.22.33" 1 x) # => x = 22
# get_version_component("11.22.33" 2 x) # => x = 33
#
function(get_version_component semantic_version component_index out)
string(REPLACE "." ";" version_list "${semantic_version}")
list(GET version_list "${component_index}" component)

# return
set(${out} "${component}" PARENT_SCOPE)
endfunction()

0 comments on commit 0d65d6b

Please sign in to comment.