Skip to content

Commit f0d363e

Browse files
willieyzmkannwischer
authored andcommitted
Add alloc test support for Windows MSVC
mlkem-native already runs tests on Windows via Mingw-w64, but the MSVC/nmake build has no alloc test coverage. This commit adds the compile and link rules to Makefile.Microsoft_nmake to enable alloc tests against the portable C backend under MSVC. Signed-off-by: willieyz <willie.zhao@chelpis.com>
1 parent b1321d7 commit f0d363e

1 file changed

Lines changed: 71 additions & 1 deletion

File tree

Makefile.Microsoft_nmake

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
CFLAGS = /nologo /O2 /Imlkem /Imlkem/src /Imlkem/src/fips202 /Imlkem/src/fips202/native /Imlkem/src/sys /Imlkem/src/native
44

5+
ALLOC_CFLAGS = \
6+
$(CFLAGS) \
7+
/D MLK_CONFIG_FILE="\"../test/configs/test_alloc_config.h\""
8+
59
OBJ_FILES = .\mlkem\*.obj \
610
.\mlkem\fips202\*.obj
711

@@ -17,6 +21,13 @@ OBJ_FILES_768 = $(MLKEM768_BUILD_DIR)\mlkem\*.obj \
1721
OBJ_FILES_1024 = $(MLKEM1024_BUILD_DIR)\mlkem\*.obj \
1822
$(MLKEM1024_BUILD_DIR)\mlkem\fips202\*.obj
1923

24+
OBJ_FILES_512_ALLOC = $(MLKEM512_BUILD_DIR)\alloc\mlkem\*.obj \
25+
$(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202\*.obj
26+
OBJ_FILES_768_ALLOC = $(MLKEM768_BUILD_DIR)\alloc\mlkem\*.obj \
27+
$(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202\*.obj
28+
OBJ_FILES_1024_ALLOC = $(MLKEM1024_BUILD_DIR)\alloc\mlkem\*.obj \
29+
$(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202\*.obj
30+
2031
# NOTE: We currently only build code for non-opt code, as we haven't yet made the assembly compatible on Windows
2132
!IFNDEF OPT
2233
OPT = 0
@@ -65,6 +76,45 @@ OPT = 0
6576
@if NOT EXIST $(MLKEM1024_BUILD_DIR)\test mkdir $(MLKEM1024_BUILD_DIR)\test
6677
$(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\test\ $<
6778

79+
# compilation for mlkem512 alloc test
80+
{mlkem\src}.c{$(MLKEM512_BUILD_DIR)\alloc\mlkem}.obj::
81+
@if NOT EXIST $(MLKEM512_BUILD_DIR)\alloc\mlkem mkdir $(MLKEM512_BUILD_DIR)\alloc\mlkem
82+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\alloc\mlkem\ $<
83+
84+
{mlkem\src\fips202}.c{$(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202}.obj::
85+
@if NOT EXIST $(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202 mkdir $(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202
86+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\alloc\mlkem\fips202\ $<
87+
88+
{test\src}.c{$(MLKEM512_BUILD_DIR)\test\alloc}.obj::
89+
@if NOT EXIST $(MLKEM512_BUILD_DIR)\test\alloc mkdir $(MLKEM512_BUILD_DIR)\test\alloc
90+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /c /Fo$(MLKEM512_BUILD_DIR)\test\alloc\ $<
91+
92+
# compilation for mlkem768 alloc test
93+
{mlkem\src}.c{$(MLKEM768_BUILD_DIR)\alloc\mlkem}.obj::
94+
@if NOT EXIST $(MLKEM768_BUILD_DIR)\alloc\mlkem mkdir $(MLKEM768_BUILD_DIR)\alloc\mlkem
95+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\alloc\mlkem\ $<
96+
97+
{mlkem\src\fips202}.c{$(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202}.obj::
98+
@if NOT EXIST $(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202 mkdir $(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202
99+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\alloc\mlkem\fips202\ $<
100+
101+
{test\src}.c{$(MLKEM768_BUILD_DIR)\test\alloc}.obj::
102+
@if NOT EXIST $(MLKEM768_BUILD_DIR)\test\alloc mkdir $(MLKEM768_BUILD_DIR)\test\alloc
103+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /c /Fo$(MLKEM768_BUILD_DIR)\test\alloc\ $<
104+
105+
# compilation for mlkem1024 alloc test
106+
{mlkem\src}.c{$(MLKEM1024_BUILD_DIR)\alloc\mlkem}.obj::
107+
@if NOT EXIST $(MLKEM1024_BUILD_DIR)\alloc\mlkem mkdir $(MLKEM1024_BUILD_DIR)\alloc\mlkem
108+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\alloc\mlkem\ $<
109+
110+
{mlkem\src\fips202}.c{$(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202}.obj::
111+
@if NOT EXIST $(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202 mkdir $(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202
112+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\alloc\mlkem\fips202\ $<
113+
114+
{test\src}.c{$(MLKEM1024_BUILD_DIR)\test\alloc}.obj::
115+
@if NOT EXIST $(MLKEM1024_BUILD_DIR)\test\alloc mkdir $(MLKEM1024_BUILD_DIR)\test\alloc
116+
$(CC) $(ALLOC_CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /c /Fo$(MLKEM1024_BUILD_DIR)\test\alloc\ $<
117+
68118
# compilation of acvp test for mlkem512
69119
{test\acvp}.c{$(MLKEM512_BUILD_DIR)\test\acvp}.obj::
70120
@if NOT EXIST $(MLKEM512_BUILD_DIR)\test\acvp mkdir $(MLKEM512_BUILD_DIR)\test\acvp
@@ -140,6 +190,21 @@ test_rng_fail1024: $(OBJ_FILES_1024) $(MLKEM1024_BUILD_DIR)\test\test_rng_fail.o
140190
@if NOT EXIST $(MLKEM1024_BUILD_DIR)\bin mkdir $(MLKEM1024_BUILD_DIR)\bin
141191
$(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /Fe$(MLKEM1024_BUILD_DIR)\bin\test_rng_fail1024 $** /link
142192

193+
# compile alloc test for mlkem512
194+
test_alloc512: $(OBJ_FILES_512_ALLOC) $(MLKEM512_BUILD_DIR)\test\alloc\test_alloc.obj $(BUILD_DIR)\randombytes\notrandombytes.obj
195+
@if NOT EXIST $(MLKEM512_BUILD_DIR)\bin mkdir $(MLKEM512_BUILD_DIR)\bin
196+
$(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=512 /Fe$(MLKEM512_BUILD_DIR)\bin\test_alloc512 $** /link
197+
198+
# compile alloc test for mlkem768
199+
test_alloc768: $(OBJ_FILES_768_ALLOC) $(MLKEM768_BUILD_DIR)\test\alloc\test_alloc.obj $(BUILD_DIR)\randombytes\notrandombytes.obj
200+
@if NOT EXIST $(MLKEM768_BUILD_DIR)\bin mkdir $(MLKEM768_BUILD_DIR)\bin
201+
$(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=768 /Fe$(MLKEM768_BUILD_DIR)\bin\test_alloc768 $** /link
202+
203+
# compile alloc test for mlkem1024
204+
test_alloc1024: $(OBJ_FILES_1024_ALLOC) $(MLKEM1024_BUILD_DIR)\test\alloc\test_alloc.obj $(BUILD_DIR)\randombytes\notrandombytes.obj
205+
@if NOT EXIST $(MLKEM1024_BUILD_DIR)\bin mkdir $(MLKEM1024_BUILD_DIR)\bin
206+
$(CC) $(CFLAGS) /D MLK_CONFIG_PARAMETER_SET=1024 /Fe$(MLKEM1024_BUILD_DIR)\bin\test_alloc1024 $** /link
207+
143208
acvp: acvp_mlkem512 acvp_mlkem768 acvp_mlkem1024
144209

145210
gen_KAT: gen_KAT512 gen_KAT768 gen_KAT1024
@@ -162,7 +227,12 @@ run_rng_fail: test_rng_fail512 test_rng_fail768 test_rng_fail1024
162227
$(MLKEM768_BUILD_DIR)\bin\test_rng_fail768.exe
163228
$(MLKEM1024_BUILD_DIR)\bin\test_rng_fail1024.exe
164229

165-
test: run_func run_rng_fail run_acvp run_kat
230+
run_alloc: test_alloc512 test_alloc768 test_alloc1024
231+
$(MLKEM512_BUILD_DIR)\bin\test_alloc512.exe
232+
$(MLKEM768_BUILD_DIR)\bin\test_alloc768.exe
233+
$(MLKEM1024_BUILD_DIR)\bin\test_alloc1024.exe
234+
235+
test: run_func run_rng_fail run_alloc run_acvp run_kat
166236
@echo Everything checks fine!
167237

168238
quickcheck: test

0 commit comments

Comments
 (0)