mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-25 08:52:26 +00:00
cmake: Fix generation of version.cpp
This commit is contained in:
parent
4233d88341
commit
56895ee07a
2 changed files with 46 additions and 42 deletions
|
@ -29,40 +29,46 @@
|
||||||
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
||||||
|
|
||||||
# Check what commit we're on
|
# Check what commit we're on
|
||||||
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD RESULT_VARIABLE RET OUTPUT_VARIABLE COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
if(RET)
|
function (get_version_tag_from_git GIT)
|
||||||
# Something went wrong, set the version tag to -unknown
|
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD
|
||||||
|
RESULT_VARIABLE RET
|
||||||
|
OUTPUT_VARIABLE COMMIT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
|
if(RET)
|
||||||
set(VERSIONTAG "unknown")
|
# Something went wrong, set the version tag to -unknown
|
||||||
set(VERSION_IS_RELEASE "false")
|
|
||||||
configure_file("src/version.cpp.in" "${TO}")
|
|
||||||
else()
|
|
||||||
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
|
|
||||||
message(STATUS "You are currently on commit ${COMMIT}")
|
|
||||||
|
|
||||||
# Get all the tags
|
message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
|
||||||
execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit RESULT_VARIABLE RET OUTPUT_VARIABLE TAGGEDCOMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
set(VERSIONTAG "unknown")
|
||||||
|
|
||||||
if(NOT TAGGEDCOMMIT)
|
|
||||||
message(WARNING "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
|
|
||||||
set(VERSIONTAG "${COMMIT}")
|
|
||||||
set(VERSION_IS_RELEASE "false")
|
set(VERSION_IS_RELEASE "false")
|
||||||
else()
|
else()
|
||||||
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
|
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
|
||||||
|
message(STATUS "You are currently on commit ${COMMIT}")
|
||||||
|
|
||||||
# Check if we're building that tagged commit or a different one
|
# Get all the tags
|
||||||
if(COMMIT STREQUAL TAGGEDCOMMIT)
|
execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit RESULT_VARIABLE RET OUTPUT_VARIABLE TAGGEDCOMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
message(STATUS "You are building a tagged release")
|
|
||||||
set(VERSIONTAG "release")
|
if(NOT TAGGEDCOMMIT)
|
||||||
set(VERSION_IS_RELEASE "true")
|
message(WARNING "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
|
||||||
else()
|
|
||||||
message(STATUS "You are ahead of or behind a tagged release")
|
|
||||||
set(VERSIONTAG "${COMMIT}")
|
set(VERSIONTAG "${COMMIT}")
|
||||||
set(VERSION_IS_RELEASE "false")
|
set(VERSION_IS_RELEASE "false")
|
||||||
|
else()
|
||||||
|
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
|
||||||
|
|
||||||
|
# Check if we're building that tagged commit or a different one
|
||||||
|
if(COMMIT STREQUAL TAGGEDCOMMIT)
|
||||||
|
message(STATUS "You are building a tagged release")
|
||||||
|
set(VERSIONTAG "release")
|
||||||
|
set(VERSION_IS_RELEASE "true")
|
||||||
|
else()
|
||||||
|
message(STATUS "You are ahead of or behind a tagged release")
|
||||||
|
set(VERSIONTAG "${COMMIT}")
|
||||||
|
set(VERSION_IS_RELEASE "false")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file("src/version.cpp.in" "${TO}")
|
set(VERSIONTAG "${VERSIONTAG}" PARENT_SCOPE)
|
||||||
endif()
|
set(VERSION_IS_RELEASE "${VERSION_IS_RELEASE}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
|
@ -26,27 +26,25 @@
|
||||||
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
function (write_static_version_header hash)
|
function (write_version tag)
|
||||||
set(VERSIONTAG "${hash}")
|
set(VERSIONTAG "${tag}" CACHE STRING "The tag portion of the Monero software version" FORCE)
|
||||||
configure_file("${CMAKE_SOURCE_DIR}/src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
|
configure_file("${CMAKE_SOURCE_DIR}/src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
find_package(Git QUIET)
|
find_package(Git QUIET)
|
||||||
if ("$Format:$" STREQUAL "")
|
if ("$Format:$" STREQUAL "")
|
||||||
# We're in a tarball; use hard-coded variables.
|
# We're in a tarball; use hard-coded variables.
|
||||||
write_static_version_header("release")
|
set(VERSION_IS_RELEASE "true")
|
||||||
|
write_version("release")
|
||||||
elseif (GIT_FOUND OR Git_FOUND)
|
elseif (GIT_FOUND OR Git_FOUND)
|
||||||
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
||||||
add_custom_command(
|
include(GitVersion)
|
||||||
OUTPUT "${CMAKE_BINARY_DIR}/version.cpp"
|
get_version_tag_from_git("${GIT_EXECUTABLE}")
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
write_version("${VERSIONTAG}")
|
||||||
"-D" "GIT=${GIT_EXECUTABLE}"
|
|
||||||
"-D" "TO=${CMAKE_BINARY_DIR}/version.cpp"
|
|
||||||
"-P" "cmake/GenVersion.cmake"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
|
||||||
else()
|
else()
|
||||||
message(STATUS "WARNING: Git was not found!")
|
message(STATUS "WARNING: Git was not found!")
|
||||||
write_static_version_header("unknown")
|
set(VERSION_IS_RELEASE "false")
|
||||||
|
write_version("unknown")
|
||||||
endif ()
|
endif ()
|
||||||
add_custom_target(genversion ALL
|
add_custom_target(genversion ALL
|
||||||
DEPENDS "${CMAKE_BINARY_DIR}/version.cpp")
|
DEPENDS "${CMAKE_BINARY_DIR}/version.cpp")
|
||||||
|
|
Loading…
Reference in a new issue