1# Copyright (C) 2003-2019 Jarosław Staniek <staniek@kde.org> 2# 3# Redistribution and use is allowed according to the terms of the BSD license. 4# For details see the accompanying COPYING-CMAKE-SCRIPTS file. 5 6# Define common versions of Kexi components used to generate KexiVersion.h 7# update these version for every release: 8set(PROJECT_STABLE_VERSION_MAJOR 3) # 3 for 3.x, 4 for 4.x, etc. 9set(PROJECT_STABLE_VERSION_MINOR 2) # 0 for 3.0, 1 for 3.1, etc. 10#set(KEXI_ALPHA 1) # uncomment only for x.y.0 Alpha 11#set(KEXI_BETA 1) # uncomment and set stage version only for x.y.0 Beta N 12#set(KEXI_RC 1) # uncomment and set stage version only for x.y.0 RC N 13set(KEXI_STABLE 0) # uncomment and set release version only for Stable x.y.N 14set(KEXI_YEAR 2019) # update every year 15 16# -- do not edit below this line -- 17 18set(PROJECT_STABLE_VERSION_RELEASE 0) # default for unstable 19 20# Set user-friendly stage name such as "Alpha" and PROJECT_VERSION_RELEASE 21if(DEFINED KEXI_ALPHA) 22 set(PROJECT_STAGE_STRING " Alpha") 23 set(KEXI_STAGE 1) # always 1 24 if(PROJECT_STABLE_VERSION_RELEASE EQUAL 0) 25 math(EXPR PROJECT_VERSION_RELEASE "89 + ${KEXI_ALPHA}") # 90 26 endif() 27elseif(DEFINED KEXI_BETA) 28 set(PROJECT_STAGE_STRING " Beta") 29 set(KEXI_STAGE ${KEXI_BETA}) 30 if(PROJECT_STABLE_VERSION_RELEASE EQUAL 0) 31 math(EXPR PROJECT_VERSION_RELEASE "90 + ${KEXI_BETA}") # >=91 32 endif() 33elseif(DEFINED KEXI_RC) 34 set(PROJECT_STAGE_STRING " RC") 35 set(KEXI_STAGE ${KEXI_RC}) 36 if(PROJECT_STABLE_VERSION_RELEASE EQUAL 0) 37 math(EXPR PROJECT_VERSION_RELEASE "93 + ${KEXI_RC}") # >=94 38 endif() 39elseif(DEFINED KEXI_STABLE) 40 set(PROJECT_STAGE_STRING "") 41 set(KEXI_STAGE ${KEXI_STABLE}) 42 set(PROJECT_STABLE_VERSION_RELEASE ${KEXI_STABLE}) # rule for stable 43 set(PROJECT_VERSION_RELEASE ${PROJECT_STABLE_VERSION_RELEASE}) 44else() 45 message(FATAL_ERROR "One of KEXI_ALPHA/BETA/RC/STABLE must be defined.") 46endif() 47if(DEFINED KEXI_STABLE AND (DEFINED KEXI_ALPHA OR DEFINED KEXI_BETA OR DEFINED KEXI_RC)) 48 message(FATAL_ERROR "None of KEXI_ALPHA/BETA/RC can be defined when KEXI_STABLE is defined.") 49endif() 50if(NOT DEFINED KEXI_STABLE AND NOT DEFINED KEXI_ALPHA) # Beta 1, etc. 51 set(PROJECT_STAGE_STRING "${PROJECT_STAGE_STRING} ${KEXI_STAGE}") 52endif() 53 54set(KEXI_CUSTOM_DISTRIBUTION_VERSION "" CACHE STRING 55 "Custom name of Kexi version useful to construct co-installabile releases. Any nonempty directory name is accepted. If specified it will be used in KEXI_DISTRIBUTION_VERSION. If not specified, KEXI_DISTRIBUTION_VERSION will be set to PROJECT_STABLE_VERSION_MAJOR.PROJECT_STABLE_VERSION_MINOR.") 56 57if(KEXI_CUSTOM_DISTRIBUTION_VERSION STREQUAL "") 58 set(KEXI_DISTRIBUTION_VERSION "${PROJECT_STABLE_VERSION_MAJOR}.${PROJECT_STABLE_VERSION_MINOR}") 59else() 60 set(KEXI_DISTRIBUTION_VERSION "${KEXI_CUSTOM_DISTRIBUTION_VERSION}") 61endif() 62 63# Relative path name useful to construct co-installabile file names and paths 64set(KEXI_BASE_PATH "kexi/${KEXI_DISTRIBUTION_VERSION}") 65 66# PROJECT_VERSION_MAJOR is the same as PROJECT_STABLE_VERSION_MAJOR but for unstable x.0 67# x is decreased by one, e.g. 3.0 Beta is 2.99. 68if(NOT DEFINED KEXI_STABLE AND PROJECT_STABLE_VERSION_MINOR EQUAL 0) 69 math(EXPR PROJECT_VERSION_MAJOR "${PROJECT_STABLE_VERSION_MAJOR} - 1") 70else() 71 math(EXPR PROJECT_VERSION_MAJOR ${PROJECT_STABLE_VERSION_MAJOR}) 72endif() 73 74# PROJECT_VERSION_MINOR is equal to PROJECT_STABLE_VERSION_MINOR for stable releases, 75# equal to 99 for x.0 unstable releases (e.g. it's 3.0 Beta has minor version 99), 76# and equal to PROJECT_STABLE_VERSION_MINOR-1 for unstable releases other than x.0. 77if(DEFINED KEXI_STABLE) 78 set(PROJECT_VERSION_MINOR ${PROJECT_STABLE_VERSION_MINOR}) 79elseif(PROJECT_STABLE_VERSION_MINOR EQUAL 0) 80 set(PROJECT_VERSION_MINOR 99) 81else() 82 math(EXPR PROJECT_VERSION_MINOR "${PROJECT_STABLE_VERSION_MINOR} - 1") 83endif() 84 85# PROJECT_VERSION_STRING is user-friendly name such as "3.2" or "3.2 Beta 1" 86set(PROJECT_VERSION_STRING "${PROJECT_STABLE_VERSION_MAJOR}.${PROJECT_STABLE_VERSION_MINOR}") 87if (${PROJECT_STABLE_VERSION_RELEASE} GREATER 0) 88 set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}.${PROJECT_STABLE_VERSION_RELEASE}") 89endif() 90set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}${PROJECT_STAGE_STRING}") 91 92set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_RELEASE}) 93 94if(DEFINED KEXI_STABLE AND "${KEXI_STABLE}" GREATER "0") 95 message(STATUS "Kexi version \"${PROJECT_VERSION_STRING}\", distribution version \"${KEXI_DISTRIBUTION_VERSION}\"") 96else() 97 message(STATUS "Kexi version \"${PROJECT_VERSION_STRING}\" (${PROJECT_VERSION}), distribution version \"${KEXI_DISTRIBUTION_VERSION}\"") 98endif() 99 100# Define the generic version of the Kexi libraries here 101# This makes it easy to advance it when the next Kexi release comes. 102# 14 was the last GENERIC_PROJECT_LIB_VERSION_MAJOR of the previous Kexi series 103# (2.x) so we're starting with 15 in 3.x series. 104if(PROJECT_STABLE_VERSION_MAJOR EQUAL 3) 105 math(EXPR GENERIC_PROJECT_LIB_VERSION_MAJOR "${PROJECT_STABLE_VERSION_MINOR} + 15") 106else() 107 # let's make sure we won't forget to update the "15" 108 message(FATAL_ERROR "Reminder: please update offset == 15 used to compute GENERIC_PROJECT_LIB_VERSION_MAJOR to something bigger") 109endif() 110set(GENERIC_PROJECT_LIB_VERSION "${GENERIC_PROJECT_LIB_VERSION_MAJOR}.0.0") 111set(GENERIC_PROJECT_LIB_SOVERSION "${GENERIC_PROJECT_LIB_VERSION_MAJOR}") 112 113unset(PROJECT_STAGE_STRING) 114