summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--src/common.mk58
-rw-r--r--test/common.mk56
-rw-r--r--test/i-128/Makefile14
-rw-r--r--test/i-192/Makefile11
-rw-r--r--test/i-256/Makefile11
-rw-r--r--test/ii-128/Makefile11
-rw-r--r--test/ii-192/Makefile11
-rw-r--r--test/ii-256/Makefile11
9 files changed, 60 insertions, 129 deletions
diff --git a/Makefile b/Makefile
index 8ee2ef6..1b9668a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
modes = i ii
keylengths = 128 192 256
-tests = $(foreach m,$(modes),$(foreach l,$(keylengths),test/$(m)-$(l)))
+variants = $(foreach m,$(modes),$(foreach l,$(keylengths),$(m)-$(l)))
.PHONY: clean nist test traces
@@ -14,9 +14,9 @@ clean::
test:
status=0; \
- for i in $(tests); \
+ for i in $(variants); \
do \
- make -C $$i $@ || status=1; \
+ make -C test/$$i test || status=1; \
done; \
exit $$status
diff --git a/src/common.mk b/src/common.mk
deleted file mode 100644
index 54ab986..0000000
--- a/src/common.mk
+++ /dev/null
@@ -1,58 +0,0 @@
-nist_flags = -std=c99 -Wall -Wextra -Wshadow -fsanitize=address,undefined -O2
-CFLAGS += -Isrc -I. $(nist_flags) -Werror
-LDFLAGS += $(nist_flags)
-
-# use "make VERBOSE=1" to have full commands printed out.
-VERBOSE = 0
-ifeq ($(VERBOSE),1)
-Q =
-else
-Q = @
-endif
-
-
-.PHONY: clean test $(tests)
-
-
-clean:
- -rm -r results
-
-results:
- @ mkdir -p $@
-
-results/%.o: %.c
- @ mkdir -p $(dir $@)
- @ echo "CC $@"
- $(Q) gcc -c $< $(CFLAGS) -o $@
-
-results/test-%: results/test/test-%.o
- @ echo "LD $@"
- $(Q) gcc $^ $(LDFLAGS) -o $@
-
-results/traces-%: results/test/traces-%.o
- @ echo "LD $@"
- $(Q) gcc $^ $(LDFLAGS) -o $@
-
-test: $(tests)
-
-$(tests): %: results/%
- @ echo "TEST $@"
- $(Q) ./results/$@
-
-traces: $(traces)
-traces-%: results/traces-%
- @ echo "TRACES $@"
- $(Q) ./results/$@
-
-
-results/src/cipher.o: src/cipher.h src/tweakey.h src/constants.h src/parameters.h _parameters.h
-results/src/constants.o: src/constants.h
-results/src/lilliput-ae-i.o: src/lilliput-ae.h src/cipher.h src/constants.h src/parameters.h _parameters.h
-results/src/tweakey.o: src/tweakey.h src/constants.h src/parameters.h _parameters.h
-results/test-*.o: src/test-helpers.h src/parameters.h _parameters.h
-results/traces-%.o: src/test-helpers.h src/parameters.h _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: auto-generate "tests" variable
diff --git a/test/common.mk b/test/common.mk
index 6d4cb28..6ec544d 100644
--- a/test/common.mk
+++ b/test/common.mk
@@ -7,10 +7,14 @@ Q = @
endif
+tests = $(basename $(wildcard test-*.c))
+
+
test_dir = $(dir $(lastword $(MAKEFILE_LIST)))
-root_dir = $(test_dir)/..
-results_dir = $(root_dir)/results
+root_dir = $(test_dir)..
+results_dir = $(root_dir)/results/$(mode)-$(keylen)
src_dir = $(root_dir)/src
+variant_dir = $(src_dir)/$(mode)-$(keylen)
nist_flags = -std=c99 -Wall -Wextra -Wshadow -fsanitize=address,undefined -O2
@@ -18,25 +22,49 @@ CFLAGS += -I$(src_dir) -I$(variant_dir) $(nist_flags) -Werror
LDFLAGS += $(nist_flags)
-.PHONY: test
+.PHONY: clean test $(tests)
+
+clean:
+ - rm -r $(results_dir)
-$(results_dir):
+$(results_dir) $(results_dir)/src $(results_dir)/test:
@ mkdir -p $@
-$(results_dir)/%.o: $(src_dir)/%.c
- @ mkdir -p $(dir $@)
- @ echo "CC $@"
- $(Q) gcc -c $< $(CFLAGS) -o $@
+test: $(tests)
+
+$(tests): test-%: $(results_dir)/test-%
+ @ echo "TEST $@"
+ $(Q) $<
+
$(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/%.o: $(src_dir)/%.c | $(results_dir)/src
+ @ echo "CC $@"
+ $(Q) gcc -c $< $(CFLAGS) -o $@
+
+$(results_dir)/test/%.o: %.c | $(results_dir)/test
+ @ echo "CC $@"
+ $(Q) gcc -c $< $(CFLAGS) -o $@
+
+# Program => additional objects dependencies
+
+$(results_dir)/test-tbc-decrypt $(results_dir)/test-tbc-encrypt: \
+$(results_dir)/src/cipher.o $(results_dir)/src/tweakey.o \
+$(results_dir)/src/constants.o
+
+$(results_dir)/test-ae-decrypt $(results_dir)/test-ae-encrypt $(results_dir)/test-ae-roundtrip: \
+$(results_dir)/src/lilliput-ae-$(mode).o $(results_dir)/src/cipher.o \
+$(results_dir)/src/tweakey.o $(results_dir)/src/constants.o
+
+$(results_dir)/test-tweakey: \
+$(results_dir)/src/tweakey.o $(results_dir)/src/constants.o
+
+# Object => headers dependencies
$(results_dir)/$(src_dir)/cipher.o: $(src_dir)/cipher.h \
$(src_dir)/tweakey.h $(src_dir)/constants.h $(src_dir)/parameters.h \
@@ -56,11 +84,11 @@ $(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
+$(results_dir)/test/test-tbc-encrypt.o $(results_dir)/test/test-tbc-encrypt.o: \
+$(src_dir)/cipher.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
diff --git a/test/i-128/Makefile b/test/i-128/Makefile
index 3eb0a50..0c47ef0 100644
--- a/test/i-128/Makefile
+++ b/test/i-128/Makefile
@@ -3,19 +3,5 @@ keylen = 128
include ../common.mk
-results/test-ae-decrypt: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
-results/test-ae-encrypt: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
-results/test-ae-roundtrip: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
-results/test-tbc-decrypt: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
-results/test-tbc-encrypt: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
-results/test-tweakey: results/src/tweakey.o results/src/constants.o | results
-
results/traces-ae-128-i: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
results/traces-tbc-128-i: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
-
-results/test-ae-decrypt.o: src/lilliput-ae.h
-results/test-ae-encrypt.o: src/lilliput-ae.h
-results/test-ae-roundtrip.o: src/lilliput-ae.h
-results/test-tbc-decrypt.o: src/cipher.h
-results/test-tbc-encrypt.o: src/cipher.h
-results/test-tweakey.o: src/tweakey.h
diff --git a/test/i-192/Makefile b/test/i-192/Makefile
index c01fde4..a1c2edf 100644
--- a/test/i-192/Makefile
+++ b/test/i-192/Makefile
@@ -1,12 +1,7 @@
-tests = test-ae-roundtrip
+mode = i
+keylen = 192
-traces = traces-ae-192-i traces-tbc-192-i
-
-include src/common.mk
-
-results/test-ae-roundtrip: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
+include ../common.mk
results/traces-ae-192-i: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
results/traces-tbc-192-i: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
-
-results/test-ae-roundtrip.o: src/lilliput-ae.h
diff --git a/test/i-256/Makefile b/test/i-256/Makefile
index 738ec7b..a07df90 100644
--- a/test/i-256/Makefile
+++ b/test/i-256/Makefile
@@ -1,12 +1,7 @@
-tests = test-ae-roundtrip
+mode = i
+keylen = 256
-traces = traces-ae-256-i traces-tbc-256-i
-
-include src/common.mk
-
-results/test-ae-roundtrip: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
+include ../common.mk
results/traces-ae-256-i: results/src/lilliput-ae-i.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
results/traces-tbc-256-i: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
-
-results/test-ae-roundtrip.o: src/lilliput-ae.h
diff --git a/test/ii-128/Makefile b/test/ii-128/Makefile
index 02496ce..0fc4b6c 100644
--- a/test/ii-128/Makefile
+++ b/test/ii-128/Makefile
@@ -1,12 +1,7 @@
-tests = test-ae-roundtrip
+mode = ii
+keylen = 128
-traces = traces-ae-128-ii traces-tbc-128-ii
-
-include src/common.mk
-
-results/test-ae-roundtrip: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
+include ../common.mk
results/traces-ae-128-ii: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
results/traces-tbc-128-ii: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
-
-results/test-ae-roundtrip.o: src/lilliput-ae.h
diff --git a/test/ii-192/Makefile b/test/ii-192/Makefile
index a421206..3c18f22 100644
--- a/test/ii-192/Makefile
+++ b/test/ii-192/Makefile
@@ -1,12 +1,7 @@
-tests = test-ae-roundtrip
+mode = ii
+keylen = 192
-traces = traces-ae-192-ii traces-tbc-192-ii
-
-include src/common.mk
-
-results/test-ae-roundtrip: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
+include ../common.mk
results/traces-ae-192-ii: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
results/traces-tbc-192-ii: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
-
-results/test-ae-roundtrip.o: src/lilliput-ae.h
diff --git a/test/ii-256/Makefile b/test/ii-256/Makefile
index 906e1f0..211ce25 100644
--- a/test/ii-256/Makefile
+++ b/test/ii-256/Makefile
@@ -1,12 +1,7 @@
-tests = test-ae-roundtrip
+mode = ii
+keylen = 256
-traces = traces-ae-256-ii traces-tbc-256-ii
-
-include src/common.mk
-
-results/test-ae-roundtrip: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results
+include ../common.mk
results/traces-ae-256-ii: results/src/lilliput-ae-ii.o results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
results/traces-tbc-256-ii: results/src/cipher.o results/src/tweakey.o results/src/constants.o | results/src
-
-results/test-ae-roundtrip.o: src/lilliput-ae.h