aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: 5590bd0aafa2040d2c0407ef1d3a3dfc31793415 (plain) (blame)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
.NONPOSIX:

PREFIX = /usr/local
BINDIR = $(PREFIX)/bin
DATADIR = $(PREFIX)/share
DOCDIR = $(DATADIR)/doc
MANDIR = $(DATADIR)/man
INFODIR = $(DATADIR)/info
LICENSEDIR = $(DATADIR)/licenses

PKGNAME = sha3sum

WARN = -Wall -Wextra -pedantic -Wdouble-promotion -Wformat=2 -Winit-self -Wmissing-include-dirs  \
       -Wtrampolines -Wfloat-equal -Wshadow -Wmissing-prototypes -Wmissing-declarations          \
       -Wredundant-decls -Wnested-externs -Winline -Wno-variadic-macros -Wswitch-default         \
       -Wpadded -Wsync-nand -Wunsafe-loop-optimizations -Wcast-align -Wstrict-overflow           \
       -Wdeclaration-after-statement -Wundef -Wbad-function-cast -Wcast-qual -Wlogical-op        \
       -Wstrict-prototypes -Wold-style-definition -Wpacked -Wvector-operation-performance        \
       -Wunsuffixed-float-constants -Wsuggest-attribute=const -Wsuggest-attribute=noreturn       \
       -Wsuggest-attribute=pure -Wsuggest-attribute=format -Wnormalized=nfkc

LDOPTIMISE =
COPTIMISE = -O3

FLAGS = $(WARN) -std=gnu99


KECCAK_CMDS = keccak-224sum keccak-256sum keccak-384sum keccak-512sum keccaksum
SHA3_CMDS = sha3-224sum sha3-256sum sha3-384sum sha3-512sum
RAWSHAKE_CMDS = rawshake256sum rawshake512sum
SHAKE_CMDS = shake256sum shake512sum

CMDS = $(KECCAK_CMDS) $(SHA3_CMDS) $(RAWSHAKE_CMDS) $(SHAKE_CMDS)

keccak-224sum = Keccak-224
keccak-256sum = Keccak-256
keccak-384sum = Keccak-384
keccak-512sum = Keccak-512
keccaksum = Keccak[]
sha3-224sum = SHA3-224
sha3-256sum = SHA3-256
sha3-384sum = SHA3-384
sha3-512sum = SHA3-512
rawshake256sum = RawSHAKE256
rawshake512sum = RawSHAKE512
shake256sum = SHAKE256
shake512sum = SHAKE512


MAN1 =\
	keccaksum.1\
	keccak-224sum.1\
	keccak-256sum.1\
	keccak-384sum.1\
	keccak-512sum.1\
	sha3-224sum.1\
	sha3-256sum.1\
	sha3-384sum.1\
	sha3-512sum.1\
	rawshake256sum.1\
	rawshake512sum.1\
	shake256sum.1\
	shake512sum.1



.PHONY: all
all: command $(MAN1)


.PHONY: command
command: $(foreach C,$(CMDS),bin/$(C))

bin/%: obj/%.o obj/common.o
	@mkdir -p bin
	$(CC) $(FLAGS) $(LDOPTIMISE) -o $@ $^ $(LDFLAGS) -lkeccak -largparser

obj/%.o: src/%.c src/*.h
	@mkdir -p obj
	$(CC) $(FLAGS) $(COPTIMISE) -c -o $@ $< $(CFLAGS) $(CPPFLAGS)


%.1: xsum.1
	u=$$(printf '%s\n' $* | tr a-z A-Z); sed -e 's/xsum/$*/g' -e 's/XSUM/'"$$u"'/g' -e 's/Xsum/$($*)/g' < xsum.1 > $@


.PHONY: install
install: install-command install-license install-man

.PHONY: install-command
install-command: install-keccak install-sha3 install-rawshake install-shake

.PHONY: install-keccak
install-keccak: $(foreach C,$(KECCAK_CMDS),install-$(C))

.PHONY: install-sha3
install-sha3: $(foreach C,$(SHA3_CMDS),install-$(C))

.PHONY: install-rawshake
install-rawshake: $(foreach C,$(RAWSHAKE_CMDS),install-$(C))

.PHONY: install-shake
install-shake: $(foreach C,$(SHAKE_CMDS),install-$(C))

.PHONY: install-%sum
install-%sum: bin/%sum
	install -dm755 -- "$(DESTDIR)$(BINDIR)"
	install -m755 -- $< "$(DESTDIR)$(BINDIR)/$*sum"

.PHONY: install-license
install-license:
	install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
	install -m644 -- LICENSE "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"

.PHONY: install-man
install-man: $(MAN1)
	mkdir -p -- "$(DESTDIR)$(MANDIR)/man1"
	cp -- $(MAN1) "$(DESTDIR)$(MANDIR)/man1/"



.PHONY: uninstall
uninstall:
	-rm -- $(foreach C,$(CMDS),"$(DESTDIR)$(BINDIR)/$(C)")
	-rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
	-rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
	-cd -- "$(DESTDIR)$(MANDIR)/man1" && rm -- $(MAN1)


.PHONY: clean
clean:
	-rm -r -- bin obj $(MAN1)