@@ -19,14 +19,13 @@ FW_STAGING_DIR ?= $(BUILD_DIR)/fw_temp
19
19
FW_DIR ?= $(CURDIR ) /fw
20
20
# Extra parts to include in firmware
21
21
APP_EXTRA_FW_PARTS ?=
22
+ FFI_SYMBOLS ?=
22
23
23
24
ASAN ?= 1
24
25
UBSAN ?= 1
25
26
PROF ?= 0
26
27
27
- # Explicitly disable updater, it's not supported on POSIX build yet.
28
28
MGOS_ENABLE_DEBUG_UDP = 0
29
- MGOS_ENABLE_BITBANG = 0
30
29
MGOS_ENABLE_SYS_SERVICE = 0
31
30
32
31
MGOS_POSIX_FEATURES ?= -DMGOS_PROMPT_DISABLE_ECHO -DMGOS_MAX_NUM_UARTS=2 \
@@ -47,7 +46,7 @@ MGOS_SRCS = mgos_init.c \
47
46
frozen.c mgos_event.c mgos_gpio.c \
48
47
mgos_core_dump.c mgos_system.c mgos_system.cpp mgos_time.c \
49
48
mgos_timers.c mgos_timers.cpp \
50
- mgos_config_util.c mgos_json_utils.cpp mgos_sys_config.c \
49
+ mgos_config_util.c mgos_dlsym.c mgos_json_utils.cpp mgos_sys_config.c \
51
50
json_utils.c cs_rbuf.c mgos_uart.c \
52
51
mgos_utils.c mgos_utils.cpp cs_file.c cs_hex.c cs_crc32.c \
53
52
error_codes.cpp status.cpp
@@ -107,6 +106,9 @@ MGOS_CONFIG_C = $(GEN_DIR)/mgos_config.c
107
106
MGOS_RO_VARS_C = $(GEN_DIR ) /mgos_ro_vars.c
108
107
GENFILES_LIST = $(MGOS_CONFIG_C ) $(MGOS_RO_VARS_C ) $(BUILD_INFO_C ) $(MG_BUILD_INFO_C )
109
108
GENFILES_OBJS = $(patsubst % .c,$(BUILD_DIR ) /% .c.o,$(GENFILES_LIST ) )
109
+ SYMBOLS_DUMP = $(GEN_DIR ) /symbols_dump.txt
110
+ FFI_EXPORTS_C = $(GEN_DIR ) /ffi_exports.c
111
+ FFI_EXPORTS_O = $(patsubst % .c,$(BUILD_DIR ) /% .c.o,$(FFI_EXPORTS_C ) )
110
112
111
113
MGOS_CONF_SCHEMA += $(PLATFORM_VPATH ) /ubuntu_sys_config.yaml
112
114
@@ -115,7 +117,8 @@ PLATFORM_OBJS = $(patsubst %.c,$(BUILD_DIR)/%.c.o,$(filter %.c,$(PLATFORM_SRCS))
115
117
MGOS_OBJS = $(patsubst % .c,$(BUILD_DIR ) /% .c.o,$(filter % .c,$(MGOS_SRCS ) ) ) \
116
118
$(patsubst % .cpp,$(BUILD_DIR ) /% .cpp.o,$(filter % .cpp,$(MGOS_SRCS ) ) )
117
119
APP_OBJS = $(patsubst % .c,$(BUILD_DIR ) /% .c.o,$(filter % .c,$(APP_SOURCES ) ) ) \
118
- $(patsubst % .cpp,$(BUILD_DIR ) /% .cpp.o,$(filter % .cpp,$(APP_SOURCES ) ) )
120
+ $(patsubst % .cpp,$(BUILD_DIR ) /% .cpp.o,$(filter % .cpp,$(APP_SOURCES ) ) ) \
121
+ $(FFI_EXPORTS_O )
119
122
OBJS = $(MGOS_OBJS ) $(APP_OBJS ) $(PLATFORM_OBJS ) $(GENFILES_OBJS )
120
123
121
124
# Files
@@ -128,6 +131,7 @@ FW_PARTS += $(APP_EXTRA_FW_PARTS)
128
131
129
132
include $(MGOS_PATH ) /tools/mk/mgos_common.mk
130
133
include $(MGOS_PATH ) /tools/mk/mgos_build_info.mk
134
+ include $(MGOS_PATH ) /tools/mk/mgos_ffi_exports.mk
131
135
include $(MGOS_PATH ) /tools/mk/mgos_fw_meta.mk
132
136
include $(MGOS_PATH ) /tools/mk/mgos_config.mk
133
137
include $(MGOS_PATH ) /tools/mk/mgos_features.mk
@@ -155,6 +159,13 @@ $(FS_STAGING_DIR): $(FS_FILES)
155
159
echo " CP $( f) -> $( FS_STAGING_DIR) " ; \
156
160
cp $(f ) $(FS_STAGING_DIR ) ; )
157
161
162
+ $(FFI_EXPORTS_C ) : $(FS_FILES )
163
+ $(call gen_ffi_exports,$@ ,$(FFI_SYMBOLS ) ,$(filter % .js,$(FS_FILES ) ) )
164
+
165
+ # In ffi exports file we use fake signatures: void func(void), and it conflicts
166
+ # with the builtin functions like fopen, etc.
167
+ $(FFI_EXPORTS_O ) : CFLAGS += -fno-builtin
168
+
158
169
# Objects of all sorts
159
170
$(BUILD_DIR ) /% .c.o : % .c $(GENFILES_LIST )
160
171
$(vecho ) " CC $<"
0 commit comments