diff options
Diffstat (limited to 'test/common.mk')
| -rw-r--r-- | test/common.mk | 56 |
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 |
