Skip to content

Commit a0c169a

Browse files
committed
ubuntu: Add FFI exports so mJS apps can be built
1 parent b1a1164 commit a0c169a

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

platforms/ubuntu/Makefile.build

+15-4
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ FW_STAGING_DIR ?= $(BUILD_DIR)/fw_temp
1919
FW_DIR ?= $(CURDIR)/fw
2020
# Extra parts to include in firmware
2121
APP_EXTRA_FW_PARTS ?=
22+
FFI_SYMBOLS ?=
2223

2324
ASAN ?= 1
2425
UBSAN ?= 1
2526
PROF ?= 0
2627

27-
# Explicitly disable updater, it's not supported on POSIX build yet.
2828
MGOS_ENABLE_DEBUG_UDP = 0
29-
MGOS_ENABLE_BITBANG = 0
3029
MGOS_ENABLE_SYS_SERVICE = 0
3130

3231
MGOS_POSIX_FEATURES ?= -DMGOS_PROMPT_DISABLE_ECHO -DMGOS_MAX_NUM_UARTS=2 \
@@ -47,7 +46,7 @@ MGOS_SRCS = mgos_init.c \
4746
frozen.c mgos_event.c mgos_gpio.c \
4847
mgos_core_dump.c mgos_system.c mgos_system.cpp mgos_time.c \
4948
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 \
5150
json_utils.c cs_rbuf.c mgos_uart.c \
5251
mgos_utils.c mgos_utils.cpp cs_file.c cs_hex.c cs_crc32.c \
5352
error_codes.cpp status.cpp
@@ -107,6 +106,9 @@ MGOS_CONFIG_C = $(GEN_DIR)/mgos_config.c
107106
MGOS_RO_VARS_C = $(GEN_DIR)/mgos_ro_vars.c
108107
GENFILES_LIST = $(MGOS_CONFIG_C) $(MGOS_RO_VARS_C) $(BUILD_INFO_C) $(MG_BUILD_INFO_C)
109108
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))
110112

111113
MGOS_CONF_SCHEMA += $(PLATFORM_VPATH)/ubuntu_sys_config.yaml
112114

@@ -115,7 +117,8 @@ PLATFORM_OBJS = $(patsubst %.c,$(BUILD_DIR)/%.c.o,$(filter %.c,$(PLATFORM_SRCS))
115117
MGOS_OBJS = $(patsubst %.c,$(BUILD_DIR)/%.c.o,$(filter %.c,$(MGOS_SRCS))) \
116118
$(patsubst %.cpp,$(BUILD_DIR)/%.cpp.o,$(filter %.cpp,$(MGOS_SRCS)))
117119
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)
119122
OBJS = $(MGOS_OBJS) $(APP_OBJS) $(PLATFORM_OBJS) $(GENFILES_OBJS)
120123

121124
# Files
@@ -128,6 +131,7 @@ FW_PARTS += $(APP_EXTRA_FW_PARTS)
128131

129132
include $(MGOS_PATH)/tools/mk/mgos_common.mk
130133
include $(MGOS_PATH)/tools/mk/mgos_build_info.mk
134+
include $(MGOS_PATH)/tools/mk/mgos_ffi_exports.mk
131135
include $(MGOS_PATH)/tools/mk/mgos_fw_meta.mk
132136
include $(MGOS_PATH)/tools/mk/mgos_config.mk
133137
include $(MGOS_PATH)/tools/mk/mgos_features.mk
@@ -155,6 +159,13 @@ $(FS_STAGING_DIR): $(FS_FILES)
155159
echo " CP $(f) -> $(FS_STAGING_DIR)"; \
156160
cp $(f) $(FS_STAGING_DIR);)
157161

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+
158169
# Objects of all sorts
159170
$(BUILD_DIR)/%.c.o : %.c $(GENFILES_LIST)
160171
$(vecho) "CC $<"

platforms/ubuntu/src/ubuntu_hal_system.c

+2
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ bool ubuntu_set_nsleep100(void) {
172172
return true;
173173
}
174174

175+
uint32_t mgos_bitbang_n100_cal = 0;
176+
175177
void mgos_ints_disable(void) {
176178
// LOG(LL_INFO, ("Not implemented"));
177179
return;

0 commit comments

Comments
 (0)