@@ -18,13 +18,11 @@ BIN_DIR = build/bin
18
18
GEN_DIR = $(BUILD_DIR ) /gen
19
19
FW_STAGING_DIR ?= $(BUILD_DIR ) /fw_temp
20
20
FW_DIR ?= $(CURDIR ) /fw
21
- VERBOSE ?= 0
22
- SSL ?= None
23
- DEBUG ?= 0
24
- CC_WRAPPER ?=
25
21
# Extra parts to include in firmware
26
22
APP_EXTRA_FW_PARTS ?=
27
23
24
+ ASAN ?= 0
25
+
28
26
# Explicitly disable updater, it's not supported on POSIX build yet.
29
27
MGOS_ENABLE_DEBUG_UDP = 0
30
28
MGOS_ENABLE_BITBANG = 0
@@ -37,6 +35,7 @@ MGOS_POSIX_FEATURES ?= -DMGOS_PROMPT_DISABLE_ECHO -DMGOS_MAX_NUM_UARTS=2 \
37
35
MONGOOSE_FEATURES = \
38
36
-DMG_USE_READ_WRITE -DMG_ENABLE_THREADS -DMG_ENABLE_THREADS \
39
37
-DMG_ENABLE_HTTP_STREAMING_MULTIPART -DMG_DISABLE_DAV \
38
+ -DMG_ENABLE_DIRECTORY_LISTING \
40
39
-DMG_MODULE_LINES
41
40
42
41
@@ -51,18 +50,25 @@ MGOS_SRCS = $(notdir $(wildcard *.c)) mgos_init.c \
51
50
52
51
PLATFORM_SRCS = $(wildcard $(PLATFORM_VPATH ) /* .c)
53
52
54
- CFLAGS ?= -std=gnu99 -fno-inline -W -Wall -Wundef -Werror -g -Wno-unused-function \
55
- -Wno-missing-field-initializers \
56
- -D_DEFAULT_SOURCE \
57
- $(MGOS_FEATURES ) $(MGOS_POSIX_FEATURES ) \
58
- $(MONGOOSE_FEATURES ) \
59
- -DMGOS_APP=\"$(APP ) \" -DFW_ARCHITECTURE=$(APP_PLATFORM ) \
60
- $(APP_CFLAGS )
53
+ C_CXX_FLAGS = -ggdb -MD -Wall -Wextra -Werror -pipe \
54
+ -ffunction-sections -fdata-sections \
55
+ -DMGOS_APP=\"$(APP ) \" \
56
+ -DFW_ARCHITECTURE=$(APP_PLATFORM ) \
57
+ $(MGOS_FEATURES ) $(MGOS_POSIX_FEATURES ) \
58
+ $(MONGOOSE_FEATURES )
59
+ ifeq "$(ASAN ) " "1"
60
+ C_CXX_FLAGS += -fsanitize=address -fno-omit-frame-pointer
61
+ LDFLAGS += -fsanitize=address
62
+ else
63
+ LDFLAGS += -static
64
+ endif
65
+
66
+ CFLAGS = -std=gnu99 $(C_CXX_FLAGS ) $(APP_CFLAGS )
67
+ CXXFLAGS = -std=gnu++11 -fno-exceptions $(C_CXX_FLAGS ) $(APP_CXXFLAGS )
61
68
62
69
INCDIRS = $(addprefix -I,$(INCLUDES ) )
63
70
AR ?= ar
64
- LINKER ?= gcc
65
- LDFLAGS ?= -static
71
+ LDFLAGS ?=
66
72
APP_BIN_LIBS ?=
67
73
LIBS ?= pthread cap
68
74
LDLIBS = $(addprefix -l,$(LIBS ) )
@@ -130,9 +136,9 @@ $(FS_STAGING_DIR): $(FS_FILES)
130
136
# Objects of all sorts
131
137
-include $(wildcard $(BUILD_DIR ) /* .d)
132
138
$(OBJS ) : $(BUILD_DIR ) /% .o : % .c $(GENFILES_LIST )
133
- $(Q ) mkdir -p $( shell dirname $( OBJS ) )
134
- $(vecho ) " CC $< -> $@ "
135
- $(Q ) $(CC_WRAPPER ) $( CC ) -MD $( INCDIRS ) $(CFLAGS ) -c $< -o $@
139
+ $(vecho ) " CC $< "
140
+ $(Q ) mkdir -p $( dir $@ )
141
+ $(Q ) $(CC ) $( CFLAGS ) $(INCDIRS ) -c $< -o $@
136
142
137
143
# lib.a, used during lib release build
138
144
$(BUILD_DIR ) /$(BUILD_LIB_NAME ) : $(BUILD_DIR ) $(GENFILES_LIST ) $(APP_OBJS )
@@ -142,7 +148,9 @@ $(BUILD_DIR)/$(BUILD_LIB_NAME): $(BUILD_DIR) $(GENFILES_LIST) $(APP_OBJS)
142
148
# Application target.
143
149
$(APP_BIN ) : $(BIN_DIR ) $(OBJS )
144
150
$(vecho ) " LD $@ "
145
- $(Q ) $(CC_WRAPPER ) $(LINKER ) -Wl,--start-group $(OBJS ) $(APP_BIN_LIBS ) $(LDLIBS ) -Wl,--end-group $(LDFLAGS ) -o $(BIN_DIR ) /$(APP )
151
+ $(Q ) $(CC ) -Wl,--gc-sections -Wl,-Map=$@ .map \
152
+ -Wl,--start-group $(OBJS ) $(APP_BIN_LIBS ) $(LDLIBS ) -Wl,--end-group \
153
+ $(LDFLAGS ) -o $(BIN_DIR ) /$(APP )
146
154
147
155
$(APP_ELF ) : $(APP_BIN )
148
156
$(Q ) cp -v $(APP_BIN ) $@
0 commit comments