-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (62 loc) · 2.06 KB
/
Makefile
File metadata and controls
79 lines (62 loc) · 2.06 KB
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
# Copyright (C) 2024 Mattéo Rossillol‑‑Laruelle <beatussum@protonmail.com>
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <https://www.gnu.org/licenses/>.
VERSION = $(shell date "+%Y%m%d")
DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= $(DESTDIR)/$(PREFIX)/bin
ICONSDIR ?= $(DESTDIR)/$(PREFIX)/share/icons/hicolor/scalable/apps
METAINFODIR ?= $(DESTDIR)/$(PREFIX)/share/metainfo
BUILDDIR ?= build
APPSTREAMCLICMD ?= appstreamcli
CHMODCMD ?= chmod +x
INSTALLEXECCMD ?= install -D -m0755
INSTALLFILECMD ?= install -D -m0644
INSTALLMKDIRCMD ?= install -d
RMDIRCMD ?= rm -fr
SEDCMD ?= sed
SHELLCHECKCMD ?= shellcheck
SHELLSPECCMD ?= shellspec
.PHONY: all
all: $(BUILDDIR)/join
$(BUILDDIR):
$(INSTALLMKDIRCMD) $@
$(BUILDDIR)/join: src/join.in $(BUILDDIR)
$(SEDCMD) "s/@VERSION@/$(VERSION)/g" $< > $@
$(CHMODCMD) $@
.PHONY: check
check: $(BUILDDIR)/join
$(APPSTREAMCLICMD) \
validate \
share/metainfo/io.github.beatussum.join.metainfo.xml
$(SHELLCHECKCMD) $(BUILDDIR)/join
$(SHELLSPECCMD) --syntax-check
.PHONY: clean
clean:
$(RMDIRCMD) $(BUILDDIR)
.PHONY: coverage
coverage: $(BUILDDIR)/join
$(SHELLSPECCMD) --kcov
.PHONY: test
test: $(BUILDDIR)/join
$(SHELLSPECCMD)
.PHONY: install
install: $(BUILDDIR)/join
$(INSTALLEXECCMD) $(BUILDDIR)/join $(BINDIR)/join
$(INSTALLFILECMD) \
share/icons/hicolor/scalable/apps/io.github.beatussum.join.svg \
$(ICONSDIR)/io.github.beatussum.join.svg
$(INSTALLFILECMD) \
share/metainfo/io.github.beatussum.join.metainfo.xml \
$(METAINFODIR)/io.github.beatussum.join.metainfo.xml