-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathMakefile
More file actions
129 lines (96 loc) · 2.99 KB
/
Makefile
File metadata and controls
129 lines (96 loc) · 2.99 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
## Makefile for wolfHSM test-refactor prototype
## Mirrors test/Makefile conventions with minimal sources
## Project name
BIN = wh_test_refactor
## Important directories
PROJECT_DIR ?= .
CONFIG_DIR ?= $(PROJECT_DIR)/../test/config
WOLFSSL_DIR ?= ../../wolfssl
WOLFHSM_DIR ?= ../
WOLFHSM_PORT_DIR ?= $(WOLFHSM_DIR)/port/posix
TEST_DIR ?= $(WOLFHSM_DIR)/test
BUILD_DIR ?= $(PROJECT_DIR)/Build
# Includes
INC = -I$(PROJECT_DIR) \
-I$(CONFIG_DIR) \
-I$(TEST_DIR) \
-I$(WOLFSSL_DIR) \
-I$(WOLFHSM_DIR) \
-I$(WOLFHSM_PORT_DIR)
# POSIX requires C source be defined before any header
DEF += -D_POSIX_C_SOURCE=200809L
# Library configuration defines for user-supplied settings
DEF += -DWOLFSSL_USER_SETTINGS -DWOLFHSM_CFG
# Enable POSIX test features and server
DEF += -DWOLFHSM_CFG_TEST_POSIX
DEF += -DWOLFHSM_CFG_ENABLE_CLIENT
DEF += -DWOLFHSM_CFG_ENABLE_SERVER
# C standard
CSTD ?= -std=c90
# Compiler flags
CFLAGS_EXTRA = -Werror -Wall -Wextra
CFLAGS_EXTRA += -ffunction-sections -fdata-sections
CFLAGS_EXTRA += -MMD -MP
ARCHFLAGS ?=
CFLAGS ?= $(ARCHFLAGS) $(CSTD) $(CFLAGS_EXTRA)
LDFLAGS ?= $(ARCHFLAGS)
# Dead-strip unused sections
OS_NAME := $(shell uname -s | tr A-Z a-z)
ifeq ($(OS_NAME),darwin)
LDFLAGS += -Wl,-dead_strip
else
LDFLAGS += -Wl,--gc-sections
endif
## Optional flags (same as test/Makefile)
ifeq ($(DEBUG),1)
DBGFLAGS = -ggdb -g3
CFLAGS += $(DBGFLAGS)
LDFLAGS += $(DBGFLAGS)
DEF += -DWOLFHSM_CFG_DEBUG
endif
ifeq ($(DEBUG_VERBOSE),1)
DBGFLAGS = -ggdb -g3
CFLAGS += $(DBGFLAGS)
LDFLAGS += $(DBGFLAGS)
DEF += -DWOLFHSM_CFG_DEBUG -DWOLFHSM_CFG_DEBUG_VERBOSE
endif
ifeq ($(ASAN),1)
CFLAGS += -fsanitize=address
LDFLAGS += -fsanitize=address
endif
## Source files
# wolfCrypt
SRC_C += $(wildcard $(WOLFSSL_DIR)/wolfcrypt/src/*.c)
# wolfSSL TLS (needed by cert manager APIs)
SRC_C += $(wildcard $(WOLFSSL_DIR)/src/*.c)
# wolfHSM library
SRC_C += $(wildcard $(WOLFHSM_DIR)/src/*.c)
# POSIX port (timestamps, flash file, etc.)
SRC_C += $(wildcard $(WOLFHSM_PORT_DIR)/*.c)
# Test-refactor sources (runner, tests, main)
SRC_C += $(wildcard $(PROJECT_DIR)/*.c)
## Build rules
FILENAMES_C = $(notdir $(SRC_C))
OBJS_C = $(addprefix $(BUILD_DIR)/, $(FILENAMES_C:.c=.o))
vpath %.c $(dir $(SRC_C))
.PHONY: build_app clean run
build_app: $(BUILD_DIR) $(BUILD_DIR)/$(BIN).elf
@echo Build complete.
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
# Workaround: pre-existing warnings in upstream files that
# -Werror promotes to errors.
$(BUILD_DIR)/internal.o: CFLAGS += -Wno-error=implicit-function-declaration
$(BUILD_DIR)/wh_client_crypto.o: CFLAGS += -Wno-error=sign-compare
$(BUILD_DIR)/%.o: %.c
@echo "Compiling: $(notdir $<)"
$(CC) $(CFLAGS) $(DEF) $(INC) -c -o $@ $<
-include $(OBJS_C:.o=.d)
$(BUILD_DIR)/$(BIN).elf: $(OBJS_C)
@echo "Linking: $(notdir $@)"
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
clean:
@echo "Cleaning build files"
@rm -rf $(BUILD_DIR)
run: build_app
$(BUILD_DIR)/$(BIN).elf