blob: 7d7259cbaf984028544c2854d7cef66954958efe (
plain)
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
|
#
# Copyright 2008-2022 the Pacemaker project contributors
#
# The version control history for this file may have further details.
#
# This source code is licensed under the GNU General Public License version 2
# or later (GPLv2+) WITHOUT ANY WARRANTY.
#
# Define variables related to release version and such
COMMIT ?= HEAD
# TAG defaults to DIST when in a source distribution instead of a git checkout,
# the tag name if COMMIT is tagged, and the full commit ID otherwise.
TAG ?= $(shell \
T=$$(git describe --tags --exact-match '$(COMMIT)' 2>/dev/null); \
[ -n "$${T}" ] && echo "$${T}" \
|| git log --pretty=format:%H -n 1 '$(COMMIT)' 2>/dev/null \
|| echo DIST)
# If DIRTY=anything is passed to make, generated versions will end in ".mod"
# as long as there are uncommitted changes and COMMIT is not changed from the
# default.
DIRTY_EXT = $(shell [ -n "$(DIRTY)" ] \
&& [ "$(COMMIT)" == "HEAD" ] \
&& ! git diff-index --quiet HEAD -- 2>/dev/null \
&& echo .mod)
# These can be used in case statements to avoid make interpreting parentheses
lparen = (
rparen = )
# This will be empty if not in a git checkout
CHECKOUT = $(shell git rev-parse --git-dir 2>/dev/null)
# VERSION is set by configure, but we allow some make targets to be run without
# running configure first, so set a reasonable default in that case.
VERSION ?= $(shell if [ -z "$(CHECKOUT)" ]; then \
echo 0.0.0; \
else \
git tag -l \
| sed -n -e 's/^\(Pacemaker-[0-9.]*\)$$/\1/p' \
| sort -Vr | head -n 1; \
fi)
# What the git tag would be for configured VERSION (such as "Pacemaker-2.1.5")
LAST_RELEASE ?= Pacemaker-$(VERSION)
# What the git tag would be for the release after the configured VERSION
# (LAST_RELEASE stripped of its -rc* suffix if present, or with minor-minor
# version bumped if not; this should be manually overriden when bumping
# the major or minor version)
NEXT_RELEASE ?= $(shell case "$(LAST_RELEASE)" in \
*-rc*$(rparen) \
echo $(LAST_RELEASE) | sed s:-rc.*:: ;; \
*$(rparen) \
echo $(LAST_RELEASE) | awk -F. \
'/[0-9]+\./{$$3+=1;OFS=".";print $$1,$$2,$$3}' \
;; \
esac)
# We have two make targets for creating distributions:
#
# - "make dist" is automake's native functionality, based on the various
# dist/nodist make variables; it always uses the current sources
#
# - "make export" is a custom target based on "git archive" and relevant
# entries from .gitattributes; it defaults to current sources but can use any
# git tag
#
# Both targets use the same name for the result, though they generate different
# contents.
#
# The directory is named pacemaker-<version> when in a source distribution
# instead of a git checkout, pacemaker-<version_part_of_tag> for tagged
# commits, and pacemaker-<short_commit> otherwise.
top_distdir = $(PACKAGE)-$(shell \
case $(TAG) in \
DIST$(rparen) \
[ -n "$(VERSION)" ] && echo "$(VERSION)" \
|| echo DIST;; \
Pacemaker-*$(rparen) \
echo '$(TAG)' | cut -c11-;; \
*$(rparen) \
git log --pretty=format:%h -n 1 '$(TAG)';; \
esac)$(DIRTY_EXT)
|