pkarashchenko commented on a change in pull request #5496:
URL: https://github.com/apache/incubator-nuttx/pull/5496#discussion_r806270884
##########
File path: boards/arm/samv7/common/scripts/flat.memory
##########
@@ -22,10 +22,6 @@ include $(TOPDIR)/.config
include $(TOPDIR)/tools/Config.mk
include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
-ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
- ARCHSCRIPT = -T "${shell cygpath -w
$(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)samv7.ld}"
-else
- ARCHSCRIPT = -T$(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)samv7.ld
-endif
+ARCHSCRIPT += $(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)samv7.ld
Review comment:
What about `boards/arm/samv7/common/scripts/protected.memory` and other
boards protected memory options?
##########
File path: tools/Config.mk
##########
@@ -548,3 +548,11 @@ else
ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)"
$(TOPDIR)$(DELIM)include$(DELIM)cxx}
endif
ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include}
+
+# Linker Scripts
+
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+ ARCHSCRIPT_CLI = $(addprefix -T,$(foreach SCRIPT,$(ARCHSCRIPT),${shell
cygpath -w $(SCRIPT)}))
+else
+ ARCHSCRIPT_CLI = $(addprefix -T,$(ARCHSCRIPT))
+endif
Review comment:
Is it possible just
```
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
LDFLAGS = $(addprefix -T,$(foreach SCRIPT,$(ARCHSCRIPT),${shell cygpath -w
$(SCRIPT)}))
else
LDFLAGS = $(addprefix -T,$(ARCHSCRIPT))
endif
```
And drop `ARCHSCRIPT_CLI`?
##########
File path: tools/Config.mk
##########
@@ -548,3 +548,11 @@ else
ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)"
$(TOPDIR)$(DELIM)include$(DELIM)cxx}
endif
ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include}
+
+# Linker Scripts
+
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+ ARCHSCRIPT_CLI = $(addprefix -T,$(foreach SCRIPT,$(ARCHSCRIPT),${shell
cygpath -w $(SCRIPT)}))
+else
+ ARCHSCRIPT_CLI = $(addprefix -T,$(ARCHSCRIPT))
+endif
Review comment:
Is it possible just
```
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
LDFLAGS += $(addprefix -T,$(foreach SCRIPT,$(ARCHSCRIPT),${shell cygpath
-w $(SCRIPT)}))
else
LDFLAGS += $(addprefix -T,$(ARCHSCRIPT))
endif
```
And drop `ARCHSCRIPT_CLI`?
##########
File path: arch/sim/src/Makefile
##########
@@ -294,8 +295,8 @@ ifeq ("$(shell $(CC) --version | grep clang)","")
$(Q) echo "__init_array_start = .; __init_array_end = .;
__fini_array_start = .; __fini_array_end = .;" >>nuttx.ld
endif
$(if $(CONFIG_HAVE_CXX),\
- $(Q) "$(CXX)" $(CCLINKFLAGS) $(LIBPATHS) $(ARCHSCRIPT) -o $(TOPDIR)/$@
$(HEADOBJ) nuttx.rel $(HOSTOBJS) $(STDLIBS),\
- $(Q) "$(CC)" $(CCLINKFLAGS) $(LIBPATHS) $(ARCHSCRIPT) -o $(TOPDIR)/$@
$(HEADOBJ) nuttx.rel $(HOSTOBJS) $(STDLIBS))
+ $(Q) "$(CXX)" $(CCLINKFLAGS) $(LIBPATHS) $(ARCHSCRIPT_CLI) -o
$(TOPDIR)/$@ $(HEADOBJ) nuttx.rel $(HOSTOBJS) $(STDLIBS),\
Review comment:
If we can use `LDFLAGS` in `tools/Config.mk` then we can `$(Q) "$(CXX)"
$(CCLINKFLAGS) $(LIBPATHS) $(LDFLAGS) -o $(TOPDIR)/$@ $(HEADOBJ) nuttx.rel
$(HOSTOBJS) $(STDLIBS),\` here
##########
File path: tools/Config.mk
##########
@@ -548,3 +548,17 @@ else
ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)"
$(TOPDIR)$(DELIM)include$(DELIM)cxx}
endif
ARCHXXINCLUDES += ${shell $(INCDIR) -s "$(CC)" $(TOPDIR)$(DELIM)include}
+
+# Linker Scripts
+
+# Note: This file has the potenital to be included multiple times. To prevent
duplicate linker scripts
+# from being added, guard the `LDFLAGS +=` with $(ARCHSCRIPT_ALREADY_ADDED)
+
+ifeq ($(ARCHSCRIPT_ALREADY_ADDED),)
+ ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+ LDFLAGS += $(addprefix -T,$(foreach SCRIPT,$(ARCHSCRIPT),${shell cygpath
-w $(SCRIPT)}))
+ else
+ LDFLAGS += $(addprefix -T,$(ARCHSCRIPT))
+ endif
+ ARCHSCRIPT_ALREADY_ADDED = y
+endif
Review comment:
Do we know the reason why linker scripts are added multiple times? Is
this consistent on both native Linux and Cygwin?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]