blob: 6d4cb2835fc2decd5c551c7d59648e04f60688ed (
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
|
# use "make VERBOSE=1" to have full commands printed out.
VERBOSE = 0
ifeq ($(VERBOSE),1)
Q =
else
Q = @
endif
test_dir = $(dir $(lastword $(MAKEFILE_LIST)))
root_dir = $(test_dir)/..
results_dir = $(root_dir)/results
src_dir = $(root_dir)/src
nist_flags = -std=c99 -Wall -Wextra -Wshadow -fsanitize=address,undefined -O2
CFLAGS += -I$(src_dir) -I$(variant_dir) $(nist_flags) -Werror
LDFLAGS += $(nist_flags)
.PHONY: test
$(results_dir):
@ mkdir -p $@
$(results_dir)/%.o: $(src_dir)/%.c
@ mkdir -p $(dir $@)
@ echo "CC $@"
$(Q) gcc -c $< $(CFLAGS) -o $@
$(results_dir)/test-%: $(results_dir)/test/test-%.o
@ echo "LD $@"
$(Q) gcc $^ $(LDFLAGS) -o $@
$(results_dir)/traces-%: $(results_dir)/test/traces-%.o
@ echo "LD $@"
$(Q) gcc $^ $(LDFLAGS) -o $@
$(results_dir)/$(src_dir)/cipher.o: $(src_dir)/cipher.h \
$(src_dir)/tweakey.h $(src_dir)/constants.h $(src_dir)/parameters.h \
$(variant_dir)/_parameters.h
$(results_dir)/$(src_dir)/constants.o: $(src_dir)/constants.h
$(results_dir)/$(src_dir)/lilliput-ae-i.o: $(src_dir)/lilliput-ae.h \
$(src_dir)/cipher.h $(src_dir)/parameters.h \
$(variant_dir)/_parameters.h
$(results_dir)/$(src_dir)/lilliput-ae-ii.o: $(src_dir)/lilliput-ae.h \
$(src_dir)/cipher.h $(src_dir)/parameters.h \
$(variant_dir)/_parameters.h
$(results_dir)/$(src_dir)/tweakey.o: $(src_dir)/tweakey.h \
$(src_dir)/constants.h $(src_dir)/parameters.h \
$(variant_dir)/_parameters.h
$(results_dir)/test-*.o: $(src_dir)/test-helpers.h \
$(src_dir)/parameters.h $(variant_dir)/_parameters.h
# TODO: should add order-only prerequisites to remove mkdirs inside recipes
# TODO: add valgrind, although it does not seem to play well with ASAN
# TODO: should use gcc -M... to generate .o -> .h dependencies
# TODO: move debug.h and test-helpers.h here
|