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