1 # SPDX-FileCopyrightText: Copyright (c) Kitware Inc. 2 # SPDX-License-Identifier: BSD-3-Clause 4 # Used to determine the version for ParaView source using "git describe", if git 5 # is found. On success sets following variables in caller's scope: 6 # ${var_prefix}_VERSION 7 # ${var_prefix}_VERSION_MAJOR 8 # ${var_prefix}_VERSION_MINOR 9 # ${var_prefix}_VERSION_PATCH 10 # ${var_prefix}_VERSION_PATCH_EXTRA 11 # ${var_prefix}_VERSION_FULL 12 # ${var_prefix}_VERSION_IS_RELEASE is true, if patch-extra is empty. 14 # If git is not found, or git describe cannot be run successfully, then these 15 # variables are left unchanged and status message is printed. 18 # source_dir : Source directory 19 # git_command : git executable 20 # var_prefix : prefix for variables e.g. "PARAVIEW". 22 if (
"$Format:$" STREQUAL
"")
23 # We are in an exported tarball and should use the shipped version 24 # information. Just return here to avoid the warning message at the end of 27 elseif (NOT PARAVIEW_GIT_DESCRIBE AND
28 EXISTS ${git_command} AND
29 EXISTS ${source_dir}/.git)
31 COMMAND ${git_command} describe
32 WORKING_DIRECTORY ${source_dir}
33 RESULT_VARIABLE result
34 OUTPUT_VARIABLE output
36 OUTPUT_STRIP_TRAILING_WHITESPACE
37 ERROR_STRIP_TRAILING_WHITESPACE)
38 if (NOT result EQUAL 0)
39 # git describe failed (bad return code). 43 # note, output may be set to empty if PARAVIEW_GIT_DESCRIBE is not defined. 44 set(output
"${PARAVIEW_GIT_DESCRIBE}")
49 if(DEFINED tmp_VERSION)
50 if (NOT
"${tmp_VERSION}" STREQUAL
"${${var_prefix}_VERSION}")
52 "Version from git (${tmp_VERSION}) disagrees with hard coded version (${${var_prefix}_VERSION}). Either update the git tags or version.txt.")
53 if (NOT
"$ENV{CI}" STREQUAL
"")
55 "Please update your fork tags, using this command: `git fetch origin --tags && git push gitlab --tags`.")
58 foreach(suffix BRANCH
VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH
59 VERSION_PATCH_EXTRA VERSION_FULL VERSION_IS_RELEASE)
60 set(${var_prefix}_${suffix} ${tmp_${suffix}} PARENT_SCOPE)
64 "Could not use git to determine source version, using version ${${var_prefix}_VERSION_FULL}")
68 # Extracts components from a version string. See determine_version() for usage. 70 string(REGEX MATCH
"^v?(([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*))$" 71 version_matches
"${version_string}")
73 # note, we don't use CMAKE_MATCH_0 for `full` since it may or may not have 75 set(full ${CMAKE_MATCH_1})
76 set(major ${CMAKE_MATCH_2})
77 set(minor ${CMAKE_MATCH_3})
78 set(patch ${CMAKE_MATCH_4})
79 set(patch_extra ${CMAKE_MATCH_5})
83 set(source_dir
"${ParaView_SOURCE_DIR}")
86 COMMAND ${git_command}
89 --no-undefined # error
if these names don
't work 90 --refs=refs/tags/* # tags 91 --refs=refs/heads/* # branches 92 --refs=refs/pipelines/* # CI 94 WORKING_DIRECTORY ${source_dir} 95 RESULT_VARIABLE result 96 OUTPUT_VARIABLE output 98 OUTPUT_STRIP_TRAILING_WHITESPACE 99 ERROR_STRIP_TRAILING_WHITESPACE) 102 set(branch "${output}") 106 set(${var_prefix}_BRANCH "${branch}" PARENT_SCOPE) 107 set(${var_prefix}_VERSION "${major}.${minor}" PARENT_SCOPE) 108 set(${var_prefix}_VERSION_MAJOR ${major} PARENT_SCOPE) 109 set(${var_prefix}_VERSION_MINOR ${minor} PARENT_SCOPE) 110 set(${var_prefix}_VERSION_PATCH ${patch} PARENT_SCOPE) 111 set(${var_prefix}_VERSION_PATCH_EXTRA ${patch_extra} PARENT_SCOPE) 112 set(${var_prefix}_VERSION_FULL ${full} PARENT_SCOPE) 113 if("${major}.${minor}.${patch}" VERSION_EQUAL "${full}" AND 114 # Date-based patch versions are never releases. 115 patch LESS "20000101") 116 set(${var_prefix}_VERSION_IS_RELEASE TRUE PARENT_SCOPE) 118 set(${var_prefix}_VERSION_IS_RELEASE FALSE PARENT_SCOPE) function extract_version_components(source_dir, version_string, var_prefix)
function determine_version(source_dir, git_command, var_prefix)