code: Fix MODIFY and GENERATE command behavior

These problems were discovered by users.
This commit is contained in:
Michael Fabian 'Xaymar' Dirks
2022-07-05 22:22:58 +02:00
parent 2f60608e3c
commit e5b1376772
+49 -48
View File
@@ -112,21 +112,21 @@ function(version)
# {2} = Minor # {2} = Minor
set(${OUT_VAR}_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE) set(${OUT_VAR}_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
# {3} = Patch # {3} = Patch
if(CMAKE_MATCH_3) if((DEFINED CMAKE_MATCH_3) AND (NOT "${CMAKE_MATCH_3}" STREQUAL ""))
string(SUBSTRING "${CMAKE_MATCH_3}" 1 -1 _TMP) string(SUBSTRING "${CMAKE_MATCH_3}" 1 -1 _TMP)
set(${OUT_VAR}_PATCH "${_TMP}" PARENT_SCOPE) set(${OUT_VAR}_PATCH "${_TMP}" PARENT_SCOPE)
else() else()
set(${OUT_VAR}_PATCH "" PARENT_SCOPE) set(${OUT_VAR}_PATCH "" PARENT_SCOPE)
endif() endif()
# {4} = Tweak # {4} = Tweak
if(CMAKE_MATCH_4) if((DEFINED CMAKE_MATCH_4) AND (NOT "${CMAKE_MATCH_4}" STREQUAL ""))
string(SUBSTRING "${CMAKE_MATCH_4}" 1 -1 _TMP) string(SUBSTRING "${CMAKE_MATCH_4}" 1 -1 _TMP)
set(${OUT_VAR}_TWEAK "${_TMP}" PARENT_SCOPE) set(${OUT_VAR}_TWEAK "${_TMP}" PARENT_SCOPE)
else() else()
set(${OUT_VAR}_TWEAK "" PARENT_SCOPE) set(${OUT_VAR}_TWEAK "" PARENT_SCOPE)
endif() endif()
# {5} = PreRelease # {5} = PreRelease
if(CMAKE_MATCH_5) if((DEFINED CMAKE_MATCH_5) AND (NOT "${CMAKE_MATCH_5}" STREQUAL ""))
string(REPLACE "." ";" CMAKE_MATCH_5 "${CMAKE_MATCH_5}") # Handle dot separation as list. string(REPLACE "." ";" CMAKE_MATCH_5 "${CMAKE_MATCH_5}") # Handle dot separation as list.
string(SUBSTRING "${CMAKE_MATCH_5}" 0 1 _TMP) string(SUBSTRING "${CMAKE_MATCH_5}" 0 1 _TMP)
if(_TMP STREQUAL "-") if(_TMP STREQUAL "-")
@@ -139,7 +139,7 @@ function(version)
set(${OUT_VAR}_PRERELEASE "" PARENT_SCOPE) set(${OUT_VAR}_PRERELEASE "" PARENT_SCOPE)
endif() endif()
# {6} = Build # {6} = Build
if(CMAKE_MATCH_6) if((DEFINED CMAKE_MATCH_6) AND (NOT "${CMAKE_MATCH_6}" STREQUAL ""))
string(REPLACE "." ";" CMAKE_MATCH_6 "${CMAKE_MATCH_6}") # Handle dot separation as list. string(REPLACE "." ";" CMAKE_MATCH_6 "${CMAKE_MATCH_6}") # Handle dot separation as list.
string(SUBSTRING "${CMAKE_MATCH_6}" 1 -1 CMAKE_MATCH_6) string(SUBSTRING "${CMAKE_MATCH_6}" 1 -1 CMAKE_MATCH_6)
set(${OUT_VAR}_BUILD "${CMAKE_MATCH_6}" PARENT_SCOPE) set(${OUT_VAR}_BUILD "${CMAKE_MATCH_6}" PARENT_SCOPE)
@@ -165,9 +165,9 @@ function(version)
) )
# Do we have the major component, and is it valid? # Do we have the major component, and is it valid?
if(_32070faa_MAJOR) if(NOT "${_32070faa_MAJOR}" STREQUAL "")
string(STRIP "${_32070faa_MAJOR}" _32070faa_MAJOR) string(STRIP "${_32070faa_MAJOR}" _32070faa_MAJOR)
if(_32070faa_MAJOR STREQUAL "") if("${_32070faa_MAJOR}" STREQUAL "")
set(_32070faa_MAJOR 0) set(_32070faa_MAJOR 0)
elseif(NOT (_32070faa_MAJOR MATCHES [[^[0-9]+$]])) elseif(NOT (_32070faa_MAJOR MATCHES [[^[0-9]+$]]))
set(${OUT_VAR}_ERROR "MAJOR component must be a numeric identifier, but is: '${_32070faa_MAJOR}'" PARENT_SCOPE) set(${OUT_VAR}_ERROR "MAJOR component must be a numeric identifier, but is: '${_32070faa_MAJOR}'" PARENT_SCOPE)
@@ -179,9 +179,9 @@ function(version)
set(_feeb1eff "${_feeb1eff}${_32070faa_MAJOR}") set(_feeb1eff "${_feeb1eff}${_32070faa_MAJOR}")
# Do we have the minor component, and is it valid? # Do we have the minor component, and is it valid?
if(_32070faa_MINOR) if(NOT "${_32070faa_MINOR}" STREQUAL "")
string(STRIP "${_32070faa_MINOR}" _32070faa_MINOR) string(STRIP "${_32070faa_MINOR}" _32070faa_MINOR)
if(_32070faa_MINOR STREQUAL "") if("${_32070faa_MINOR}" STREQUAL "")
set(_32070faa_MINOR 0) set(_32070faa_MINOR 0)
elseif(NOT (_32070faa_MINOR MATCHES [[^[0-9]+$]])) elseif(NOT (_32070faa_MINOR MATCHES [[^[0-9]+$]]))
set(${OUT_VAR}_ERROR "MINOR component must be a numeric identifier, but is: '${_32070faa_MINOR}'" PARENT_SCOPE) set(${OUT_VAR}_ERROR "MINOR component must be a numeric identifier, but is: '${_32070faa_MINOR}'" PARENT_SCOPE)
@@ -193,10 +193,10 @@ function(version)
set(_feeb1eff "${_feeb1eff}.${_32070faa_MINOR}") set(_feeb1eff "${_feeb1eff}.${_32070faa_MINOR}")
# Do we have the patch component, and is it valid? # Do we have the patch component, and is it valid?
if(_32070faa_PATCH) if(NOT "${_32070faa_PATCH}" STREQUAL "")
string(STRIP "${_32070faa_PATCH}" _32070faa_PATCH) string(STRIP "${_32070faa_PATCH}" _32070faa_PATCH)
if(_32070faa_PATCH STREQUAL "") if("${_32070faa_PATCH}" STREQUAL "")
unset(_32070faa_PATCH) set(_32070faa_PATCH "")
elseif(_32070faa_PATCH MATCHES [[^[0-9]+$]]) elseif(_32070faa_PATCH MATCHES [[^[0-9]+$]])
set(_feeb1eff "${_feeb1eff}.${_32070faa_PATCH}") set(_feeb1eff "${_feeb1eff}.${_32070faa_PATCH}")
else() else()
@@ -206,12 +206,13 @@ function(version)
endif() endif()
# Do we have the tweak component, and is it valid? # Do we have the tweak component, and is it valid?
if(_32070faa_TWEAK) if(NOT "${_32070faa_TWEAK}" STREQUAL "")
string(STRIP "${_32070faa_TWEAK}" _32070faa_TWEAK) string(STRIP "${_32070faa_TWEAK}" _32070faa_TWEAK)
if(_32070faa_TWEAK STREQUAL "") if("${_32070faa_TWEAK}" STREQUAL "")
unset(_32070faa_TWEAK) set(_32070faa_TWEAK "")
elseif(_32070faa_TWEAK MATCHES [[^[0-9]+$]]) elseif(_32070faa_TWEAK MATCHES [[^[0-9]+$]])
if(NOT _32070faa_PATCH) if("${_32070faa_PATCH}" STREQUAL "")
# Patch did not exist, so it is zero.
set(_feeb1eff "${_feeb1eff}.0") set(_feeb1eff "${_feeb1eff}.0")
endif() endif()
set(_feeb1eff "${_feeb1eff}.${_32070faa_TWEAK}") set(_feeb1eff "${_feeb1eff}.${_32070faa_TWEAK}")
@@ -222,13 +223,13 @@ function(version)
endif() endif()
# Do we have the pre-release component, and is it valid? # Do we have the pre-release component, and is it valid?
if(_32070faa_PRERELEASE) if(NOT "${_32070faa_PRERELEASE}" STREQUAL "")
string(STRIP "${_32070faa_PRERELEASE}" _32070faa_PRERELEASE) string(STRIP "${_32070faa_PRERELEASE}" _32070faa_PRERELEASE)
list(JOIN _32070faa_PRERELEASE "." _32070faa_PRERELEASE) list(JOIN _32070faa_PRERELEASE "." _32070faa_PRERELEASE)
if(_32070faa_PRERELEASE STREQUAL "") if("${_32070faa_PRERELEASE}" STREQUAL "")
unset(_32070faa_PRERELEASE) set(_32070faa_PRERELEASE "")
elseif(_32070faa_PRERELEASE MATCHES [[^[a-zA-Z0-9]+[a-zA-Z0-9\-\.]*$]]) elseif(_32070faa_PRERELEASE MATCHES [[^[a-zA-Z0-9]+[a-zA-Z0-9\-\.]*$]])
if(_32070faa_COMPRESS AND (_32070faa_PRERELEASE MATCHES [[[a-zA-Z]+[a-zA-Z0-9\-\.]*$]])) if(_32070faa_COMPRESS AND (_32070faa_PRERELEASE MATCHES [[^[a-zA-Z]+[a-zA-Z0-9\-\.]*$]]))
set(_feeb1eff "${_feeb1eff}${_32070faa_PRERELEASE}") set(_feeb1eff "${_feeb1eff}${_32070faa_PRERELEASE}")
else() else()
set(_feeb1eff "${_feeb1eff}-${_32070faa_PRERELEASE}") set(_feeb1eff "${_feeb1eff}-${_32070faa_PRERELEASE}")
@@ -240,10 +241,10 @@ function(version)
endif() endif()
# Do we have the build component, and is it valid? # Do we have the build component, and is it valid?
if(_32070faa_BUILD) if(NOT "${_32070faa_BUILD}" STREQUAL "")
string(STRIP "${_32070faa_BUILD}" _32070faa_PRERELEASE) string(STRIP "${_32070faa_BUILD}" _32070faa_BUILD)
list(JOIN _32070faa_BUILD "." _32070faa_BUILD) list(JOIN _32070faa_BUILD "." _32070faa_BUILD)
if(_32070faa_BUILD STREQUAL "") if("${_32070faa_BUILD}" STREQUAL "")
unset(_32070faa_BUILD) unset(_32070faa_BUILD)
elseif(_32070faa_BUILD MATCHES [[^[a-zA-Z0-9]+[a-zA-Z0-9\-\.]*$]]) elseif(_32070faa_BUILD MATCHES [[^[a-zA-Z0-9]+[a-zA-Z0-9\-\.]*$]])
set(_feeb1eff "${_feeb1eff}+${_32070faa_BUILD}") set(_feeb1eff "${_feeb1eff}+${_32070faa_BUILD}")
@@ -274,14 +275,14 @@ function(version)
# Helpers # Helpers
macro(modify_version_number) macro(modify_version_number)
if(${ARGV1}) if(NOT ("${${ARGV1}}" STREQUAL ""))
if(${ARGV1} MATCHES "^(\\+|\\-)([0-9]+)$") if("${${ARGV1}}" MATCHES "^(\\+|\\-)([0-9]+)$")
if(${ARGV0}) if("${${ARGV0}}" STREQUAL "")
math(EXPR ${ARGV0} "${${ARGV0}} ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}")
else()
math(EXPR ${ARGV0} "0 ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}") math(EXPR ${ARGV0} "0 ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}")
else()
math(EXPR ${ARGV0} "${${ARGV0}} ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}")
endif() endif()
else() else()
set(${ARGV0} "${${ARGV1}}") set(${ARGV0} "${${ARGV1}}")
endif() endif()
endif() endif()
@@ -309,31 +310,31 @@ function(version)
modify_version_number(_df8abcce_TWEAK _fe7bcddd_TWEAK) modify_version_number(_df8abcce_TWEAK _fe7bcddd_TWEAK)
# Replace other components if defined. # Replace other components if defined.
if(_fe7bcddd_PRERELEASE) if(NOT "${_fe7bcddd_PRERELEASE}" STREQUAL "")
set(_df8abcce_PRERELEASE "${_fe7bcddd_PRERELEASE}") set(_df8abcce_PRERELEASE "${_fe7bcddd_PRERELEASE}")
endif() endif()
if(_fe7bcddd_BUILD) if(NOT "${_fe7bcddd_BUILD}" STREQUAL "")
set(_df8abcce_BUILD "${_fe7bcddd_BUILD}") set(_df8abcce_BUILD "${_fe7bcddd_BUILD}")
endif() endif()
# Generate a new version. # Generate a new version.
set(_fe7bcddd_GEN "") set(_fe7bcddd_GEN "")
if(_df8abcce_MAJOR AND (NOT _df8abcce_MAJOR STREQUAL "")) if(NOT "${_df8abcce_MAJOR}" STREQUAL "")
set(_fe7bcddd_GEN "${_fe7bcddd_GEN} MAJOR \"${_df8abcce_MAJOR}\"") set(_fe7bcddd_GEN "${_fe7bcddd_GEN} MAJOR \"${_df8abcce_MAJOR}\"")
endif() endif()
if(_df8abcce_MINOR AND (NOT _df8abcce_MINOR STREQUAL "")) if(NOT "${_df8abcce_MINOR}" STREQUAL "")
set(_fe7bcddd_GEN "${_fe7bcddd_GEN} MINOR \"${_df8abcce_MINOR}\"") set(_fe7bcddd_GEN "${_fe7bcddd_GEN} MINOR \"${_df8abcce_MINOR}\"")
endif() endif()
if(_df8abcce_PATCH AND (NOT _df8abcce_PATCH STREQUAL "")) if(NOT "${_df8abcce_PATCH}" STREQUAL "")
set(_fe7bcddd_GEN "${_fe7bcddd_GEN} PATCH \"${_df8abcce_PATCH}\"") set(_fe7bcddd_GEN "${_fe7bcddd_GEN} PATCH \"${_df8abcce_PATCH}\"")
endif() endif()
if(_df8abcce_TWEAK AND (NOT _df8abcce_TWEAK STREQUAL "")) if(NOT "${_df8abcce_TWEAK}" STREQUAL "")
set(_fe7bcddd_GEN "${_fe7bcddd_GEN} TWEAK \"${_df8abcce_TWEAK}\"") set(_fe7bcddd_GEN "${_fe7bcddd_GEN} TWEAK \"${_df8abcce_TWEAK}\"")
endif() endif()
if(_df8abcce_PRERELEASE AND (NOT _df8abcce_PRERELEASE STREQUAL "")) if(NOT "${_df8abcce_PRERELEASE}" STREQUAL "")
set(_fe7bcddd_GEN "${_fe7bcddd_GEN} PRERELEASE \"${_df8abcce_PRERELEASE}\"") set(_fe7bcddd_GEN "${_fe7bcddd_GEN} PRERELEASE \"${_df8abcce_PRERELEASE}\"")
endif() endif()
if(_df8abcce_BUILD AND (NOT _df8abcce_BUILD STREQUAL "")) if(NOT "${_df8abcce_BUILD}" STREQUAL "")
set(_fe7bcddd_GEN "${_fe7bcddd_GEN} BUILD \"${_df8abcce_BUILD}\"") set(_fe7bcddd_GEN "${_fe7bcddd_GEN} BUILD \"${_df8abcce_BUILD}\"")
endif() endif()
if(_fe7bcddd_COMPRESS) if(_fe7bcddd_COMPRESS)
@@ -403,11 +404,11 @@ function(version)
elseif(_00fdeadb_PATCH LESS _ca75feel_PATCH) elseif(_00fdeadb_PATCH LESS _ca75feel_PATCH)
set(${OUT_VAR} "<PATCH" PARENT_SCOPE) set(${OUT_VAR} "<PATCH" PARENT_SCOPE)
return() return()
elseif((_00fdeadb_PATCH STREQUAL "") OR (_ca75feel_PATCH STREQUAL "")) elseif(("${_00fdeadb_PATCH}" STREQUAL "") OR ("${_ca75feel_PATCH}" STREQUAL ""))
if(_00fdeadb_PATCH) if(NOT "${_00fdeadb_PATCH}" STREQUAL "")
set(${OUT_VAR} "+PATCH" PARENT_SCOPE) set(${OUT_VAR} "+PATCH" PARENT_SCOPE)
return() return()
elseif(_ca75feel_PATCH) elseif(NOT "${_ca75feel_PATCH}" STREQUAL "")
set(${OUT_VAR} "-PATCH" PARENT_SCOPE) set(${OUT_VAR} "-PATCH" PARENT_SCOPE)
return() return()
endif() endif()
@@ -420,22 +421,22 @@ function(version)
elseif(_00fdeadb_TWEAK LESS _ca75feel_TWEAK) elseif(_00fdeadb_TWEAK LESS _ca75feel_TWEAK)
set(${OUT_VAR} "<TWEAK" PARENT_SCOPE) set(${OUT_VAR} "<TWEAK" PARENT_SCOPE)
return() return()
elseif((_00fdeadb_TWEAK STREQUAL "") OR (_ca75feel_TWEAK STREQUAL "")) elseif(("${_00fdeadb_TWEAK}" STREQUAL "") OR ("${_ca75feel_TWEAK}" STREQUAL ""))
if(_00fdeadb_TWEAK) if(NOT "${_00fdeadb_TWEAK}" STREQUAL "")
set(${OUT_VAR} "+TWEAK" PARENT_SCOPE) set(${OUT_VAR} "+TWEAK" PARENT_SCOPE)
return() return()
elseif(_ca75feel_TWEAK) elseif(NOT "${_ca75feel_TWEAK}" STREQUAL "")
set(${OUT_VAR} "-TWEAK" PARENT_SCOPE) set(${OUT_VAR} "-TWEAK" PARENT_SCOPE)
return() return()
endif() endif()
endif() endif()
# Pre-Release # Pre-Release
if((_00fdeadb_PRERELEASE STREQUAL "") OR (_ca75feel_PRERELEASE STREQUAL "")) if(("${_00fdeadb_PRERELEASE}" STREQUAL "") OR ("${_ca75feel_PRERELEASE}" STREQUAL ""))
if(_00fdeadb_PRERELEASE) if(NOT "${_00fdeadb_PRERELEASE}" STREQUAL "")
set(${OUT_VAR} "+PRERELEASE" PARENT_SCOPE) set(${OUT_VAR} "+PRERELEASE" PARENT_SCOPE)
return() return()
elseif(_ca75feel_PRERELEASE) elseif(NOT "${_ca75feel_PRERELEASE}" STREQUAL "")
set(${OUT_VAR} "-PRERELEASE" PARENT_SCOPE) set(${OUT_VAR} "-PRERELEASE" PARENT_SCOPE)
return() return()
endif() endif()
@@ -445,11 +446,11 @@ function(version)
endif() endif()
# Build # Build
if((_00fdeadb_BUILD STREQUAL "") OR (_ca75feel_BUILD STREQUAL "")) if(("${_00fdeadb_BUILD}" STREQUAL "") OR ("${_ca75feel_BUILD}" STREQUAL ""))
if(_00fdeadb_BUILD) if(NOT "${_00fdeadb_BUILD}" STREQUAL "")
set(${OUT_VAR} "+BUILD" PARENT_SCOPE) set(${OUT_VAR} "+BUILD" PARENT_SCOPE)
return() return()
elseif(_ca75feel_BUILD) elseif(NOT "${_ca75feel_BUILD}" STREQUAL "")
set(${OUT_VAR} "-BUILD" PARENT_SCOPE) set(${OUT_VAR} "-BUILD" PARENT_SCOPE)
return() return()
endif() endif()