From 78131ba97d406ca6f3a692a9edf775dd85264112 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Tue, 4 Apr 2023 17:22:57 +0200 Subject: [PATCH] NuttX: allow multiple LD-script files to support RISC-V targets. Signed-off-by: Pavel Pisa --- snippets/nuttx-compile.omk | 18 +++++++++++------- snippets/sysless.omk | 5 ++++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/snippets/nuttx-compile.omk b/snippets/nuttx-compile.omk index c858232..58d95e0 100644 --- a/snippets/nuttx-compile.omk +++ b/snippets/nuttx-compile.omk @@ -111,7 +111,7 @@ ifeq ($$(LDNAME),) LDNAME := $$(LDSCRIPT) endif -LD_SCRIPT ?= $$(NUTTX_EXPORT)/scripts/$$(LDNAME) +LD_SCRIPT ?= $$(LDNAME:%=$$(NUTTX_EXPORT)/scripts/%) ifneq ($$(filter-out clean distclean, $$(MAKECMDGOALS)),) ifeq ($(LDNAME),) @@ -123,8 +123,6 @@ $$(error LD_SCRIPT='$$(LD_SCRIPT)' does not exists, correct config.target) endif endif -LD_SCRIPT = $$(NUTTX_EXPORT)/scripts/$$(LDNAME) - ELF_FILE_LDSCRIPT?=$$(wildcard $$(NUTTX_EXPORT)/scripts/gnu-elf.ld) LOADLIBES += -L$$(LIB_DIR) @@ -274,7 +272,7 @@ else $(1)$(3:%=-%)_LD_SCRIPT = $$($(1)$(3:%=-%)_LD_SCRIPT_FN) endif -$(1)$(3:%=-%)_LDFLAGS = $$(CC_LD_OPTION)-T$$(LD_OPTION_SEP)$$($(1)$(3:%=-%)_LD_SCRIPT) +$(1)$(3:%=-%)_LDFLAGS = $$($(1)$(3:%=-%)_LD_SCRIPT:%=$$(CC_LD_OPTION)-T$$(LD_OPTION_SEP)%) $(2)/$(1)$(3:%=-%): $$($(1)_OBJS) $$($(1)_BUILTINTABLE:%.c=%$$(OBJ_EXT)) $$($(1)_BUILTINWRAPMAIN:%.c=%$$(OBJ_EXT)) $$($(1)_PROGBUILTIN_LDAT) $$($(1)$(3:%=-%)_LD_SCRIPT) $$($(1)_KMODBUILTIN_LIBS) @$(QUIET_CMD_ECHO) " LINK $$@" @@ -284,6 +282,7 @@ $(2)/$(1)$(3:%=-%): $$($(1)_OBJS) $$($(1)_BUILTINTABLE:%.c=%$$(OBJ_EXT)) $$($(1) $$(LD) \ ) \ $$(OMK_LDFLAGS) $$(LDFLAGS) $$($(1)$(3:%=-%)_LDFLAGS) $$(CC_LD_OPTION)-Map$$(LD_OPTION_SEP)$(1)$(3:%=-%).map \ + $$(HEAD_OBJ:%=$$(NUTTX_EXPORT)/startup/%) \ $$($(1)_OBJS) $$($(1)_MOREOBJS) $$($(1)_BUILTINTABLE:%.c=%$$(OBJ_EXT)) $$($(1)_BUILTINWRAPMAIN:%.c=%$$(OBJ_EXT)) \ $$($(1)_PROGBUILTIN_PBI) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) $$($(1)_KMODBUILTIN_LIBS) \ $$(shell for i in $$($(1)_PROGBUILTIN_LDAT); do cat $$$$i ; done) $$(NUTTXLIBES) \ @@ -298,8 +297,9 @@ define ELF_template $(2)/$(1).elf: $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " ELF $$@" - $(Q) $(LD_RAW) \ - -r -e main -T $(ELF_FILE_LDSCRIPT) \ + $(Q) $$(LD_RAW) \ + $$(filter -m%,$$(LDFLAGS:$$(CC_LD_OPTION)%=%)) \ + -r -e main -T $$(ELF_FILE_LDSCRIPT) \ -Map $(1).elf.map \ $$($(1)_OBJS) $$($(1)_MOREOBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \ -o $$@ @@ -318,6 +318,7 @@ $(1)_STACKSIZE ?= 2048 $(2)/$(1).pbi: $$($(1)_OBJS) @$(QUIET_CMD_ECHO) " PROGMOD $$@" $(Q) $(LD_RAW) \ + $$(filter -m%,$$(LDFLAGS:$$(CC_LD_OPTION)%=%)) \ -r -x --defsym=$(1)_main=main \ -Map $(1).pbi.map \ $$($(1)_OBJS) $$($(1)_MOREOBJS) \ @@ -382,7 +383,9 @@ SOLIB_SOURCES += $$($(1)_SOURCES) $(LIB_DIR)/lib$(1).so: $$($(1)_OBJSLO) @$(QUIET_CMD_ECHO) " LINK $$@" - $(Q) $(LD_RAW) --shared --soname=lib$(1).so -o $$@ $$^ + $(Q) $(LD_RAW) \ + $$(filter -m%,$$(LDFLAGS:$$(CC_LD_OPTION)%=%) \ + --shared --soname=lib$(1).so -o $$@ $$^ endef ifneq ($(bin_PROGRAMS),) @@ -405,6 +408,7 @@ $(2): $(2)$$(OBJ_EXT): $(2) @$(QUIET_CMD_ECHO) " ROMFS $$@" $(Q) $(LD_RAW) -r --accept-unknown-input-arch -b binary \ + $$(filter -m%,$$(LDFLAGS:$$(CC_LD_OPTION)%=%)) \ --defsym=$(2)_size=_binary_$(2)_size \ --defsym=$(2)_start=_binary_$(2)_start \ --defsym=$(2)_end=_binary_$(2)_end \ diff --git a/snippets/sysless.omk b/snippets/sysless.omk index 8edaff3..3a576df 100644 --- a/snippets/sysless.omk +++ b/snippets/sysless.omk @@ -262,7 +262,10 @@ include-pass-local: clean-local:: - $(Q)rm -f $(USER_OBJS_DIR)/*$(OBJ_EXT) $(USER_OBJS_DIR)/*.lo \ + $(Q)rm -f $(USER_OBJS_DIR)/*.o \ + $(if $(OBJEXT),$(USER_OBJS_DIR)/*$(OBJEXT)) \ + $(if $(OBJ_EXT),$(USER_OBJS_DIR)/*$(OBJ_EXT)) \ + $(USER_OBJS_DIR)/*.lo \ $(USER_OBJS_DIR)/*.d \ $(USER_OBJS_DIR)/*.map \ $(LOCAL_CONFIG_H:%=$(USER_OBJS_DIR)/%) -- 2.39.2