summaryrefslogtreecommitdiff
path: root/test/common.mk
diff options
context:
space:
mode:
Diffstat (limited to 'test/common.mk')
-rw-r--r--test/common.mk56
1 files changed, 42 insertions, 14 deletions
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