SIZES = 512 768 1024
FRAMES = encaps_key decaps_key ciphertext encaps decaps keygen keygen_from_seed
SONAME = libfips203.$(SO_EXT)
OS := $(shell uname)
CXXFLAGS += -DLINUX
ifeq ($(OS), Darwin)
SO_EXT = dylib
else
SO_EXT = so
endif
all: check
ifneq ($(AS_INSTALLED),true)
SO_LOCATIONS = $(foreach w,.. ../..,$(foreach x,release debug,$w/target/$x $w/target/*/$x))
SO_LOCATION = $(dir $(firstword $(foreach d,$(SO_LOCATIONS),$(wildcard $d/libfips203.$(SO_EXT)))))
COMPILE_FLAGS = -Wl,-rpath,$(SO_LOCATION) -L $(SO_LOCATION) -I..
RUN_PREFIX = LD_LIBRARY_PATH=$(SO_LOCATION)
ADDITIONAL_RUN_DEPENDS = $(SO_LOCATION)$(SONAME)
endif
BASELINES=$(foreach sz, $(SIZES), baseline-$(sz))
CHECKS=$(foreach sz, $(SIZES), runtest-$(sz))
check: $(CHECKS)
runtest-%: baseline-% $(ADDITIONAL_RUN_DEPENDS)
$(RUN_PREFIX) ./$<
baseline-%: baseline.c ../fips203.h
$(CC) -o $@ -g -D MLKEM_size=$* $(foreach v, $(FRAMES),-D MLKEM_$(v)=ml_kem_$*_$(v)) -Werror -Wall -pedantic $< -Wall $(COMPILE_FLAGS) -lfips203
clean:
rm -f $(BASELINES) $(ADDITIONAL_RUN_DEPENDS)
.PHONY: clean check all