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
133
134
135
136
137
138
139
140
141
|
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
.PHONY: all
all: command man
.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)
.PHONY: man
man: $(foreach C,$(CMDS),bin/$(C).1)
bin/%.1: xsum.texman
@mkdir -p bin
cat $< | sed -e 's/xsum/$*/g' -e 's/XSUM/$($*)/g' | texman > $@
.PHONY: install
install: install-command install-copyright 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-copyright
install-copyright: install-license
.PHONY: install-license
install-license:
install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
install -m644 -- LICENSE "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
.PHONY: install-man
install-man: install-keccak-man install-sha3-man install-rawshake-man install-shake-man
.PHONY: install-keccak-man
install-keccak-man: $(foreach C,$(KECCAK_CMDS),install-$(C)-man)
.PHONY: install-sha3-man
install-sha3-man: $(foreach C,$(SHA3_CMDS),install-$(C)-man)
.PHONY: install-rawshake-man
install-rawshake-man: $(foreach C,$(RAWSHAKE_CMDS),install-$(C)-man)
.PHONY: install-shake-man
install-shake-man: $(foreach C,$(SHAKE_CMDS),install-$(C)-man)
.PHONY: install-%sum-man
install-%sum-man: bin/%sum.1
install -dm755 -- "$(DESTDIR)$(MANDIR)/man1"
install -m644 -- $< "$(DESTDIR)$(MANDIR)/man1/$*sum.1"
.PHONY: uninstall
uninstall:
-rm -- $(foreach C,$(CMDS),"$(DESTDIR)$(BINDIR)/$(C)")
-rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
-rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
-rm -- $(foreach C,$(CMDS),"$(DESTDIR)$(MANDIR)/man1/$(C).1")
.PHONY: clean
clean:
-rm -r bin obj
|