aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorxiphon <xiphon@protonmail.com>2020-07-01 01:29:09 +0000
committerxiphon <xiphon@protonmail.com>2020-07-01 01:48:52 +0000
commitf55bf48baddeb99aff395e9fd94b7ac82ba8388d (patch)
tree94a9372c29ad708122c08fbdd76d5c70226278b8 /cmake
parente0faddf964148ccad0e7207fd9bb8040ae4f9232 (diff)
downloadmonzero-gui-f55bf48baddeb99aff395e9fd94b7ac82ba8388d.tar.gz
monzero-gui-f55bf48baddeb99aff395e9fd94b7ac82ba8388d.tar.xz
monzero-gui-f55bf48baddeb99aff395e9fd94b7ac82ba8388d.zip
cmake: fix git tag + commit detection and version.js generation
Diffstat (limited to 'cmake')
-rw-r--r--cmake/GitGetVersionTag.cmake (renamed from cmake/GenVersionGui.cmake)67
-rw-r--r--cmake/VersionGui.cmake23
2 files changed, 45 insertions, 45 deletions
diff --git a/cmake/GenVersionGui.cmake b/cmake/GitGetVersionTag.cmake
index 0ec2e8ba..b66b1886 100644
--- a/cmake/GenVersionGui.cmake
+++ b/cmake/GitGetVersionTag.cmake
@@ -28,37 +28,40 @@
#
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
-# 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)
+function (git_get_version_tag git directory result_var)
+ execute_process(COMMAND "${git}" rev-parse --short HEAD
+ WORKING_DIRECTORY ${directory}
+ OUTPUT_VARIABLE COMMIT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if(NOT COMMIT)
+ message(WARNING "${directory}: cannot determine current commit. Make sure that you are building from a Git working tree")
+ set(${result_var} "unknown" PARENT_SCOPE)
+ return()
+ endif()
-if(RET)
- # Something went wrong, set the version tag to -unknown
-
- message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
- set(VERSIONTAG "unknown")
- configure_file("src/version.js.in" "${TO}")
-else()
- string(SUBSTRING ${COMMIT} 0 9 COMMIT)
- message(STATUS "You are currently on commit ${COMMIT}")
-
- # Get all the tags
- execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit RESULT_VARIABLE RET OUTPUT_VARIABLE TAGGEDCOMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- 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}")
- 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")
- else()
- message(STATUS "You are ahead of or behind a tagged release")
- set(VERSIONTAG "${COMMIT}")
- endif()
- endif()
+ execute_process(COMMAND "${git}" describe --tags --exact-match
+ WORKING_DIRECTORY ${directory}
+ OUTPUT_VARIABLE TAG
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if(TAG)
+ message(STATUS "${directory}: building tagged release ${TAG}-${COMMIT}")
+ set(${result_var} "${TAG}-${COMMIT}" PARENT_SCOPE)
+ return()
+ endif()
- configure_file("src/version.js.in" "${TO}")
-endif()
+ execute_process(COMMAND "${git}" describe --tags --long
+ WORKING_DIRECTORY ${directory}
+ OUTPUT_VARIABLE MOST_RECENT_TAG
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if(MOST_RECENT_TAG)
+ message(STATUS "${directory}: ahead of or behind a tagged release, building ${MOST_RECENT_TAG}")
+ set(${result_var} "${MOST_RECENT_TAG}" PARENT_SCOPE)
+ return()
+ endif()
+
+ message(STATUS "${directory}: building ${COMMIT} commit")
+ set(${result_var} "${COMMIT}" PARENT_SCOPE)
+endfunction()
diff --git a/cmake/VersionGui.cmake b/cmake/VersionGui.cmake
index b248cba0..fd0eddae 100644
--- a/cmake/VersionGui.cmake
+++ b/cmake/VersionGui.cmake
@@ -26,27 +26,24 @@
# 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.
-function (write_static_version_header hash)
- set(VERSIONTAG "${hash}")
- configure_file("${CMAKE_SOURCE_DIR}/version.js.in" "${CMAKE_SOURCE_DIR}/version.js")
+function (write_static_version_header VERSION_TAG_GUI VERSION_TAG_CORE)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.js.in" "${CMAKE_CURRENT_SOURCE_DIR}/version.js")
endfunction ()
find_package(Git QUIET)
if ("$Format:$" STREQUAL "")
# We're in a tarball; use hard-coded variables.
- write_static_version_header("release")
+ write_static_version_header("release" "release")
elseif (GIT_FOUND OR Git_FOUND)
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
- add_custom_command(
- OUTPUT "${CMAKE_SOURCE_DIR}/version.js"
- COMMAND "${CMAKE_COMMAND}"
- "-D" "GIT=${GIT_EXECUTABLE}"
- "-D" "TO=${CMAKE_SOURCE_DIR}/version.js"
- "-P" "cmake/GenVersionGui.cmake"
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
+
+ include(GitGetVersionTag)
+ git_get_version_tag(${GIT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} VERSION_TAG_GUI)
+ git_get_version_tag(${GIT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/monero VERSION_TAG_CORE)
+ write_static_version_header(${VERSION_TAG_GUI} ${VERSION_TAG_CORE})
else()
message(STATUS "WARNING: Git was not found!")
- write_static_version_header("unknown")
+ write_static_version_header("unknown" "unknown")
endif ()
add_custom_target(genversiongui ALL
- DEPENDS "${CMAKE_SOURCE_DIR}/version.js")
+ DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/version.js")