TARGET = mlkem_test

CFLAGS += -O3 -g
CFLAGS += -I./mlkem_native

C_SRCS := ./dma.c ./main.c ./sw_mlkem_alloc.c

MLKEM_NATIVE_CFLAGS = \
	-DMLK_CONFIG_NO_RANDOMIZED_API \
	-DMLK_CONFIG_NO_SUPERCOP \
	-DMLK_CONFIG_NO_ASM \
	-DMLK_CONFIG_FILE='"sw_mlkem_config.h"'

MLKEM_NATIVE_OBJS = \
	obj/mlkem_native_512.o \
	obj/mlkem_native_768.o \
	obj/mlkem_native_1024.o

LINK_OBJS += $(MLKEM_NATIVE_OBJS)
CLEAN_OBJS += $(MLKEM_NATIVE_OBJS)

OBJDIR = obj
COMMON_DIR = ../../bsp
GCC_DIR=../../../toolchains/loongson-gnu-toolchain-8.3-x86_64-loongarch32r-linux-gnusf-v2.0
PICOLIBC_DIR=../../../toolchains/picolibc
LA32RSOC_WINDOWS_HOME ?= ../../..
include ../../bsp/common.mk

obj/mlkem_native_512.o: ./mlkem_native/mlkem_native.c
	mkdir -p obj
	$(LA32R_GCC) $(CFLAGS) $(INCLUDES) $(MLKEM_NATIVE_CFLAGS) \
		-DMLK_CONFIG_PARAMETER_SET=512 \
		-DMLK_CONFIG_NAMESPACE_PREFIX=swmlkem512 \
		-c -o $@ $<

obj/mlkem_native_768.o: ./mlkem_native/mlkem_native.c
	mkdir -p obj
	$(LA32R_GCC) $(CFLAGS) $(INCLUDES) $(MLKEM_NATIVE_CFLAGS) \
		-DMLK_CONFIG_PARAMETER_SET=768 \
		-DMLK_CONFIG_NAMESPACE_PREFIX=swmlkem768 \
		-c -o $@ $<

obj/mlkem_native_1024.o: ./mlkem_native/mlkem_native.c
	mkdir -p obj
	$(LA32R_GCC) $(CFLAGS) $(INCLUDES) $(MLKEM_NATIVE_CFLAGS) \
		-DMLK_CONFIG_PARAMETER_SET=1024 \
		-DMLK_CONFIG_NAMESPACE_PREFIX=swmlkem1024 \
		-c -o $@ $<
