summaryrefslogtreecommitdiff
path: root/Mk/buildinfo.mk
blob: a312c9d6cfc4d8c385fca404d6772b146f3fd320 (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
# in: PKGNAME
# in: FEATURES (optional)
# in: BUILD_INFO (optional)
# in: OPENSSL (optional)
# in: OPENSSL_FOUND (optional)

ifndef PKGNAME
$(error PKGNAME not defined)
endif

ifndef OPENSSL
ifdef OPENSSL_FOUND
OPENSSL=$(OPENSSL_FOUND)/bin/openssl
else
OPENSSL=	openssl
endif
endif

BASENAME?=	basename
CUT?=		cut
DIFF?=		diff
GIT?=		git
GREP?=		grep
SED?=		sed
TR?=		tr
WC?=		wc

GITDIR:=	$(wildcard .git)
VERSION_FILE:=	$(wildcard VERSION)
HASHES_FILE:=	$(wildcard HASHES)
NEWS_FILE:=	$(firstword $(wildcard NEWS*))

ifdef GITDIR
BUILD_VERSION:=	$(shell $(GIT) describe --tags --dirty --always)
BUILD_INFO+=	V:GIT
else
ifdef VERSION_FILE
BUILD_VERSION:=	$(shell $(CAT) VERSION)
BUILD_INFO+=	V:FILE
else
BUILD_VERSION:=	$(shell $(BASENAME) $(PWD)|\
			$(GREP) $(PKGNAME)-|\
			$(SED) 's/.*$(PKGNAME)-\(.*\)/\1/g')
BUILD_INFO+=	V:DIR
endif
ifdef HASHES_FILE
BUILD_INFO+=	HDIFF:$(shell $(OPENSSL) dgst -sha1 -r *.[hc]|\
		sort -k 2 >HASHES~;\
		$(DIFF) -u HASHES HASHES~|\
		$(GREP) '^-[^-]'|$(WC) -l|$(TR) -d ' ';\
		rm HASHES~)
endif
ifdef NEWS_FILE
NEWS_SHA:=	$(shell $(OPENSSL) dgst -sha1 -r $(NEWS_FILE) |\
			$(CUT) -c -7)
BUILD_INFO+=	N:$(NEWS_SHA)
endif
endif # GITDIR

BUILD_DATE:=	$(shell date +%Y-%m-%d)
BUILD_CPPFLAGS+=-D"BUILD_PKGNAME=\"$(PKGNAME)\"" \
		-D"BUILD_VERSION=\"$(BUILD_VERSION)\"" \
		-D"BUILD_DATE=\"$(BUILD_DATE)\"" \
		-D"BUILD_INFO=\"$(BUILD_INFO)\"" \
		-D"BUILD_FEATURES=\"$(FEATURES)\""

# out: NEWS_FILE
# out: NEWS_SHA
# out: VERSION_FILE
# out: GITDIR
# out: BUILD_VERSION
# out: BUILD_DATE
# out: BUILD_INFO
# out: BUILD_CPPFLAGS