File: SetKexiVersionInfo.cmake

package info (click to toggle)
kexi 1%3A3.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 30,604 kB
  • sloc: cpp: 98,995; ansic: 4,556; sql: 955; sh: 628; python: 556; java: 107; makefile: 21
file content (113 lines) | stat: -rw-r--r-- 5,487 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Copyright (C) 2003-2019 Jarosław Staniek <staniek@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

# Define common versions of Kexi components used to generate KexiVersion.h
# update these version for every release:
set(PROJECT_STABLE_VERSION_MAJOR 3) # 3 for 3.x, 4 for 4.x, etc.
set(PROJECT_STABLE_VERSION_MINOR 2) # 0 for 3.0, 1 for 3.1, etc.
#set(KEXI_ALPHA 1) # uncomment only for x.y.0 Alpha
#set(KEXI_BETA 1) # uncomment and set stage version only for x.y.0 Beta N
#set(KEXI_RC 1) # uncomment and set stage version only for x.y.0 RC N
set(KEXI_STABLE 0) # uncomment and set release version only for Stable x.y.N
set(KEXI_YEAR 2019) # update every year

# -- do not edit below this line --

set(PROJECT_STABLE_VERSION_RELEASE 0) # default for unstable

# Set user-friendly stage name such as "Alpha" and PROJECT_VERSION_RELEASE
if(DEFINED KEXI_ALPHA)
    set(PROJECT_STAGE_STRING " Alpha")
    set(KEXI_STAGE 1) # always 1
    if(PROJECT_STABLE_VERSION_RELEASE EQUAL 0)
        math(EXPR PROJECT_VERSION_RELEASE "89 + ${KEXI_ALPHA}") # 90
    endif()
elseif(DEFINED KEXI_BETA)
    set(PROJECT_STAGE_STRING " Beta")
    set(KEXI_STAGE ${KEXI_BETA})
    if(PROJECT_STABLE_VERSION_RELEASE EQUAL 0)
        math(EXPR PROJECT_VERSION_RELEASE "90 + ${KEXI_BETA}") # >=91
    endif()
elseif(DEFINED KEXI_RC)
    set(PROJECT_STAGE_STRING " RC")
    set(KEXI_STAGE ${KEXI_RC})
    if(PROJECT_STABLE_VERSION_RELEASE EQUAL 0)
        math(EXPR PROJECT_VERSION_RELEASE "93 + ${KEXI_RC}") # >=94
    endif()
elseif(DEFINED KEXI_STABLE)
    set(PROJECT_STAGE_STRING "")
    set(KEXI_STAGE ${KEXI_STABLE})
    set(PROJECT_STABLE_VERSION_RELEASE ${KEXI_STABLE}) # rule for stable
    set(PROJECT_VERSION_RELEASE ${PROJECT_STABLE_VERSION_RELEASE})
else()
    message(FATAL_ERROR "One of KEXI_ALPHA/BETA/RC/STABLE must be defined.")
endif()
if(DEFINED KEXI_STABLE AND (DEFINED KEXI_ALPHA OR DEFINED KEXI_BETA OR DEFINED KEXI_RC))
    message(FATAL_ERROR "None of KEXI_ALPHA/BETA/RC can be defined when KEXI_STABLE is defined.")
endif()
if(NOT DEFINED KEXI_STABLE AND NOT DEFINED KEXI_ALPHA) # Beta 1, etc.
    set(PROJECT_STAGE_STRING "${PROJECT_STAGE_STRING} ${KEXI_STAGE}")
endif()

set(KEXI_CUSTOM_DISTRIBUTION_VERSION "" CACHE STRING
    "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.")

if(KEXI_CUSTOM_DISTRIBUTION_VERSION STREQUAL "")
    set(KEXI_DISTRIBUTION_VERSION "${PROJECT_STABLE_VERSION_MAJOR}.${PROJECT_STABLE_VERSION_MINOR}")
else()
    set(KEXI_DISTRIBUTION_VERSION "${KEXI_CUSTOM_DISTRIBUTION_VERSION}")
endif()

# Relative path name useful to construct co-installabile file names and paths
set(KEXI_BASE_PATH "kexi/${KEXI_DISTRIBUTION_VERSION}")

# PROJECT_VERSION_MAJOR is the same as PROJECT_STABLE_VERSION_MAJOR but for unstable x.0
# x is decreased by one, e.g. 3.0 Beta is 2.99.
if(NOT DEFINED KEXI_STABLE AND PROJECT_STABLE_VERSION_MINOR EQUAL 0)
    math(EXPR PROJECT_VERSION_MAJOR "${PROJECT_STABLE_VERSION_MAJOR} - 1")
else()
    math(EXPR PROJECT_VERSION_MAJOR ${PROJECT_STABLE_VERSION_MAJOR})
endif()

# PROJECT_VERSION_MINOR is equal to PROJECT_STABLE_VERSION_MINOR for stable releases,
# equal to 99 for x.0 unstable releases (e.g. it's 3.0 Beta has minor version 99),
# and equal to PROJECT_STABLE_VERSION_MINOR-1 for unstable releases other than x.0.
if(DEFINED KEXI_STABLE)
    set(PROJECT_VERSION_MINOR ${PROJECT_STABLE_VERSION_MINOR})
elseif(PROJECT_STABLE_VERSION_MINOR EQUAL 0)
    set(PROJECT_VERSION_MINOR 99)
else()
    math(EXPR PROJECT_VERSION_MINOR "${PROJECT_STABLE_VERSION_MINOR} - 1")
endif()

# PROJECT_VERSION_STRING is user-friendly name such as "3.2" or "3.2 Beta 1"
set(PROJECT_VERSION_STRING "${PROJECT_STABLE_VERSION_MAJOR}.${PROJECT_STABLE_VERSION_MINOR}")
if (${PROJECT_STABLE_VERSION_RELEASE} GREATER 0)
    set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}.${PROJECT_STABLE_VERSION_RELEASE}")
endif()
set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}${PROJECT_STAGE_STRING}")

set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_RELEASE})

if(DEFINED KEXI_STABLE AND "${KEXI_STABLE}" GREATER "0")
    message(STATUS "Kexi version \"${PROJECT_VERSION_STRING}\", distribution version \"${KEXI_DISTRIBUTION_VERSION}\"")
else()
    message(STATUS "Kexi version \"${PROJECT_VERSION_STRING}\" (${PROJECT_VERSION}), distribution version \"${KEXI_DISTRIBUTION_VERSION}\"")
endif()

# Define the generic version of the Kexi libraries here
# This makes it easy to advance it when the next Kexi release comes.
# 14 was the last GENERIC_PROJECT_LIB_VERSION_MAJOR of the previous Kexi series
# (2.x) so we're starting with 15 in 3.x series.
if(PROJECT_STABLE_VERSION_MAJOR EQUAL 3)
    math(EXPR GENERIC_PROJECT_LIB_VERSION_MAJOR "${PROJECT_STABLE_VERSION_MINOR} + 15")
else()
    # let's make sure we won't forget to update the "15"
    message(FATAL_ERROR "Reminder: please update offset == 15 used to compute GENERIC_PROJECT_LIB_VERSION_MAJOR to something bigger")
endif()
set(GENERIC_PROJECT_LIB_VERSION "${GENERIC_PROJECT_LIB_VERSION_MAJOR}.0.0")
set(GENERIC_PROJECT_LIB_SOVERSION "${GENERIC_PROJECT_LIB_VERSION_MAJOR}")

unset(PROJECT_STAGE_STRING)