From 7ac4bd5286e39a7cb83be595a4d43593f4a9c081 Mon Sep 17 00:00:00 2001 From: Rocky14683 Date: Sat, 28 Dec 2024 01:48:26 +0800 Subject: [PATCH 1/4] fix liblvgl with monolith also delete make template overload(Thats just a small bug) --- Makefile | 2 +- common.mk | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) 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..2bf53211 100644 --- a/common.mk +++ b/common.mk @@ -34,7 +34,18 @@ 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 + +ifneq (,$(wildcard ./firmware/liblvgl.a)) + LVGL_LIB_FLAGS=--whole-archive ./firmware/liblvgl.a --no-whole-archive + FILTERED_LIBRARIES=$(filter-out ./firmware/liblvgl.a, $(LIBRARIES)) +else + LVGL_LIB_FLAGS= + FILTERED_LIBRARIES=$(LIBRARIES) +endif + +LNK_FLAGS=--gc-sections --start-group $(strip $(LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld +LNK_FLAGS_MONOLITH=--gc-sections --start-group $(strip $(LVGL_LIB_FLAGS) $(FILTERED_LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld + ASMFLAGS=$(MFLAGS) $(WARNFLAGS) CFLAGS=$(MFLAGS) $(CPPFLAGS) $(WARNFLAGS) $(GCCFLAGS) --std=$(C_STANDARD) @@ -213,7 +224,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 @@ -230,7 +241,7 @@ $(MONOLITH_BIN): $(MONOLITH_ELF) $(BINDIR) $(MONOLITH_ELF): $(ELF_DEPS) $(LIBRARIES) $(call _pros_ld_timestamp) - $(call test_output_2,Linking project with $(ARCHIVE_TEXT_LIST) ,$(LD) $(LDFLAGS) $(ELF_DEPS) $(LDTIMEOBJ) $(call wlprefix,-T$(FWDIR)/v5.ld $(LNK_FLAGS)) -o $@,$(OK_STRING)) + $(call test_output_2,Linking project with $(ARCHIVE_TEXT_LIST) ,$(LD) $(LDFLAGS) $(ELF_DEPS) $(LDTIMEOBJ) $(call wlprefix,-T$(FWDIR)/v5.ld $(LNK_FLAGS_MONOLITH)) -o $@,$(OK_STRING)) @echo Section sizes: -$(VV)$(SIZETOOL) $(SIZEFLAGS) $@ $(SIZES_SED) $(SIZES_NUMFMT) From cca265bf41e7e2b2706d6f0387ff11c264bfc69d Mon Sep 17 00:00:00 2001 From: Rocky14683 Date: Sat, 28 Dec 2024 01:57:02 +0800 Subject: [PATCH 2/4] add --no-warn-rwx-segments back --- common.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common.mk b/common.mk index 2bf53211..4f466094 100644 --- a/common.mk +++ b/common.mk @@ -43,8 +43,8 @@ else FILTERED_LIBRARIES=$(LIBRARIES) endif -LNK_FLAGS=--gc-sections --start-group $(strip $(LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld -LNK_FLAGS_MONOLITH=--gc-sections --start-group $(strip $(LVGL_LIB_FLAGS) $(FILTERED_LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld +LNK_FLAGS=--gc-sections --start-group $(strip $(LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld --no-warn-rwx-segments +LNK_FLAGS_MONOLITH=--gc-sections --start-group $(strip $(LVGL_LIB_FLAGS) $(FILTERED_LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld --no-warn-rwx-segments ASMFLAGS=$(MFLAGS) $(WARNFLAGS) From fa1c48f01b5291d87611a6cd71e406cf52af2f2c Mon Sep 17 00:00:00 2001 From: Rocky14683 Date: Sat, 28 Dec 2024 02:25:03 +0800 Subject: [PATCH 3/4] clean up --- common.mk | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/common.mk b/common.mk index 4f466094..75929a15 100644 --- a/common.mk +++ b/common.mk @@ -35,16 +35,13 @@ EXCLUDE_COLD_LIBRARIES+=$(FWDIR)/libc.a $(FWDIR)/libm.a COLD_LIBRARIES=$(filter-out $(EXCLUDE_COLD_LIBRARIES), $(LIBRARIES)) wlprefix=-Wl,$(subst $(SPACE),$(COMMA),$1) +LVGL_LIB_FLAGS= ifneq (,$(wildcard ./firmware/liblvgl.a)) LVGL_LIB_FLAGS=--whole-archive ./firmware/liblvgl.a --no-whole-archive - FILTERED_LIBRARIES=$(filter-out ./firmware/liblvgl.a, $(LIBRARIES)) -else - LVGL_LIB_FLAGS= - FILTERED_LIBRARIES=$(LIBRARIES) + LIBRARIES:=$(filter-out ./firmware/liblvgl.a, $(LIBRARIES)) endif -LNK_FLAGS=--gc-sections --start-group $(strip $(LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld --no-warn-rwx-segments -LNK_FLAGS_MONOLITH=--gc-sections --start-group $(strip $(LVGL_LIB_FLAGS) $(FILTERED_LIBRARIES)) -lgcc -lstdc++ --end-group -T$(FWDIR)/v5-common.ld --no-warn-rwx-segments +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) @@ -241,7 +238,7 @@ $(MONOLITH_BIN): $(MONOLITH_ELF) $(BINDIR) $(MONOLITH_ELF): $(ELF_DEPS) $(LIBRARIES) $(call _pros_ld_timestamp) - $(call test_output_2,Linking project with $(ARCHIVE_TEXT_LIST) ,$(LD) $(LDFLAGS) $(ELF_DEPS) $(LDTIMEOBJ) $(call wlprefix,-T$(FWDIR)/v5.ld $(LNK_FLAGS_MONOLITH)) -o $@,$(OK_STRING)) + $(call test_output_2,Linking project with $(ARCHIVE_TEXT_LIST) ,$(LD) $(LDFLAGS) $(ELF_DEPS) $(LDTIMEOBJ) $(call wlprefix,-T$(FWDIR)/v5.ld $(LNK_FLAGS)) -o $@,$(OK_STRING)) @echo Section sizes: -$(VV)$(SIZETOOL) $(SIZEFLAGS) $@ $(SIZES_SED) $(SIZES_NUMFMT) From 760774fc970af37417a97dc332b481f0df1f0d6a Mon Sep 17 00:00:00 2001 From: Rocky14683 Date: Sat, 28 Dec 2024 11:42:36 +0800 Subject: [PATCH 4/4] add comment --- common.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/common.mk b/common.mk index 75929a15..d8c3486f 100644 --- a/common.mk +++ b/common.mk @@ -41,6 +41,7 @@ ifneq (,$(wildcard ./firmware/liblvgl.a)) 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