-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathMakefile
93 lines (77 loc) · 2.08 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# (SPDX-License-Identifier: CC-BY-4.0)
.PHONY: build run clean
.DEFAULT_GOAL := all
# Append cross-prefix for cross compilation
# Remove or ignore for native builds
CC ?= gcc
# When called from the root Makefile, CROSS_PREFIX has already been added here
ifeq (,$(findstring $(CROSS_PREFIX),$(CC)))
CC := $(CROSS_PREFIX)$(CC)
endif
# Part A:
#
# mlkem-native source and header files
#
# If you are not concerned about minimizing for a specific backend,
# you can just include _all_ source files into your build.
MLK_SOURCE=$(wildcard \
mlkem_native/**/*.c \
mlkem_native/**/**/*.c \
mlkem_native/**/**/**/*.c \
mlkem_native/**/**/**/**/*.c)
# Part B:
#
# Random number generator
#
# !!! WARNING !!!
#
# The randombytes() implementation used here is for TESTING ONLY.
# You MUST NOT use this implementation outside of testing.
#
# !!! WARNING !!!
RNG_SOURCE=$(wildcard test_only_rng/*.c)
# Part C:
#
# Your application source code
APP_SOURCE=$(wildcard *.c)
ALL_SOURCE=$(MLK_SOURCE) $(RNG_SOURCE) $(APP_SOURCE)
BUILD_DIR=build
BIN=test_binary
CFLAGS := \
-Wall \
-Wextra \
-Werror \
-Wmissing-prototypes \
-Wshadow \
-Werror \
-Wpointer-arith \
-Wredundant-decls \
-Wno-long-long \
-Wno-unknown-pragmas \
-Wno-unused-command-line-argument \
-fomit-frame-pointer \
-std=c99 \
-pedantic \
-MMD \
-O3 \
$(CFLAGS)
CFLAGS += -DMLK_CONFIG_NAMESPACE_PREFIX=mlkem
BINARY_NAME_FULL_512=$(BUILD_DIR)/$(BIN)512
BINARY_NAME_FULL_768=$(BUILD_DIR)/$(BIN)768
BINARY_NAME_FULL_1024=$(BUILD_DIR)/$(BIN)1024
BINARIES_FULL=$(BINARY_NAME_FULL_512) $(BINARY_NAME_FULL_768) $(BINARY_NAME_FULL_1024)
$(BINARY_NAME_FULL_512): CFLAGS += -DMLK_CONFIG_PARAMETER_SET=512
$(BINARY_NAME_FULL_768): CFLAGS += -DMLK_CONFIG_PARAMETER_SET=768
$(BINARY_NAME_FULL_1024): CFLAGS += -DMLK_CONFIG_PARAMETER_SET=1024
$(BINARIES_FULL): $(ALL_SOURCE)
echo "$@"
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $^ -o $@
all: build
build: $(BINARIES_FULL)
run: $(BINARIES_FULL)
$(EXEC_WRAPPER) ./$(BINARY_NAME_FULL_512)
$(EXEC_WRAPPER) ./$(BINARY_NAME_FULL_768)
$(EXEC_WRAPPER) ./$(BINARY_NAME_FULL_1024)
clean:
rm -rf $(BUILD_DIR)