diff --git a/Makefile b/Makefile index 50618747..b4ef4146 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,7 @@ CREATE_TEMPLATE_ARGS+=--user "src/main.{cpp,c,cc}" --user "include/main.{hpp,h,h CREATE_TEMPLATE_ARGS+=--target v5 CREATE_TEMPLATE_ARGS+=--output bin/monolith.bin --cold_output bin/cold.package.bin --hot_output bin/hot.package.bin --cold_addr 58720256 --hot_addr 125829120 -template:: patch_sdk_headers clean-template library +template: patch_sdk_headers clean-template library $(VV)mkdir -p $(TEMPLATE_DIR) @echo "Moving template files to $(TEMPLATE_DIR)" $Dif [ $(shell uname -s) == "Darwin" ]; then \ diff --git a/common.mk b/common.mk index a1e00c1c..d8c3486f 100644 --- a/common.mk +++ b/common.mk @@ -34,7 +34,16 @@ LIBRARIES+=$(wildcard $(FWDIR)/*.a) EXCLUDE_COLD_LIBRARIES+=$(FWDIR)/libc.a $(FWDIR)/libm.a COLD_LIBRARIES=$(filter-out $(EXCLUDE_COLD_LIBRARIES), $(LIBRARIES)) wlprefix=-Wl,$(subst $(SPACE),$(COMMA),$1) -LNK_FLAGS=--gc-sections --start-group $(strip $(LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld --no-warn-rwx-segments + +LVGL_LIB_FLAGS= +ifneq (,$(wildcard ./firmware/liblvgl.a)) + LVGL_LIB_FLAGS=--whole-archive ./firmware/liblvgl.a --no-whole-archive + LIBRARIES:=$(filter-out ./firmware/liblvgl.a, $(LIBRARIES)) +endif + +# Adding --whole-archive to liblvgl to ensure that all symbols are included +LNK_FLAGS=--gc-sections --start-group $(strip $(LVGL_LIB_FLAGS) $(LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld --no-warn-rwx-segments + ASMFLAGS=$(MFLAGS) $(WARNFLAGS) CFLAGS=$(MFLAGS) $(CPPFLAGS) $(WARNFLAGS) $(GCCFLAGS) --std=$(C_STANDARD) @@ -213,7 +222,7 @@ $(LIBAR): $(call GETALLOBJ,$(EXCLUDE_SRC_FROM_LIB)) $(EXTRA_LIB_DEPS) library: $(LIBAR) .PHONY: template -template:: clean-template $(LIBAR) +template: clean-template $(LIBAR) $Dpros c create-template . $(LIBNAME) $(VERSION) $(foreach file,$(TEMPLATE_FILES) $(LIBAR),--system "$(file)") --target v5 $(CREATE_TEMPLATE_FLAGS) endif