-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
50 lines (40 loc) · 1.34 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
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
ifeq ($(TARGET),x86_64)
CC = x86_64-linux-gnu-gcc
CXX = x86_64-linux-gnu-g++
else ifeq ($(TARGET),aarch64)
CC = aarch64-linux-gnu-gcc
CXX = aarch64-linux-gnu-g++
else ifeq ($(TARGET),)
# If target is unspecified, use gcc and its default target.
CC = gcc
CXX = g++
else
$(error "bad TARGET $(TARGET)")
endif
TARGET_SUFFIX = $(foreach x,$(TARGET),.$(x))
BUILD_DIR = build$(TARGET_SUFFIX)
TRUSTED_BOOT_BIN = trusted_boot$(TARGET_SUFFIX)
SRC = $(wildcard $(ROOT_DIR)/*.c)
OBJ = $(SRC:$(ROOT_DIR)/%.c=$(BUILD_DIR)/%.o)
CFLAGS = -I$(ROOT_DIR)
CN_FLAGS=-I$(ROOT_DIR) -I$(ROOT_DIR)/../../include --include=$(ROOT_DIR)/../../include/wars.h --magic-comment-char-dollar
CN=cn verify $(CN_FLAGS)
$(TRUSTED_BOOT_BIN): $(OBJ)
@mkdir -pv $(dir $@)
$(CC) $(CFLAGS) -o $@ $^
$(BUILD_DIR)/%.o: $(ROOT_DIR)/%.c
@mkdir -pv $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
.PHONY: cn_proof clean
clean:
rm -rf build/ build.*/
rm -f $(TRUSTED_BOOT_BIN)
.PHONY: cn_proof_trusted_boot cn_proof_firmware cn_proof_firmware_with_attest
cn_proof: cn_proof_trusted_boot cn_proof_firmware cn_proof_firmware_with_attest
cn_proof_trusted_boot: $(ROOT_DIR)/trusted_boot.c
$(CN) --skip=parse_hex_str $<
cn_proof_firmware: $(ROOT_DIR)/firmware.c
$(CN) $<
cn_proof_firmware_with_attest: $(ROOT_DIR)/firmware.c
$(CN) -DWITH_ATTEST $<