DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Rename EXTRADEFINES to EXTRAFLAGS
In your custom board's scripts/Make.defs file, rename EXTRADEFINES to EXTRAFLAGS.
For example, these lines:
| Code Block | ||||
|---|---|---|---|---|
| ||||
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe ... CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe ... CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) |
would change as follows:
| Code Block | ||||
|---|---|---|---|---|
| ||||
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe ... CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe ... CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) |
See git commit # 459ad9937377a42785692098ff0d73baaa9551e6 in the main NuttX repository.
If you forget to do this, memory allocations on the heap probably won't work and your user tasks won't start.
To see why, tools/Config.mk assigns a value to KDEFINE such that the preprocessor symbol __KERNEL__ will be defined when certain source files are compiled. KDEFINE is passed to nested invocations of 'make' as EXTRAFLAGS. If your board's scripts/Make.defs still attempts to use EXTRADEFINES, the preprocessor symbol __KERNEL__ will not be defined in some of the places that it should be. Suppose you're building a FLAT build. In this case, include/nuttx/mm/mm.h will not define MM_KERNEL_USRHEAP_INIT like it should, which will cause nx_start.c not to call up_allocate_heap() at startup. Therefore, any attempt to allocate memory on the heap will fail.
Rename src/Makefile to src/Make.defs and Modify
This item pertains only to custom boards that are developed in-tree, meaning under the NuttX boards/ subdirectory. Out-of-tree boards are not affected.
If your custom board directory is in-tree and in a board family that uses a 'boards/ARCH/FAMILY/common' directory (such as boards/arm/stm32/common, boards/arm/cxd56xx/common, etc), then you'll need to make two minor changes to your custom board's src/Makefile:
(1) Rename it from src/Makefile to src/Make.defs, and
(2) Near the end of that file, replace this line, which usually appears at the end:
| Code Block | ||||
|---|---|---|---|---|
| ||||
include $(TOPDIR)/boards/Board.mk |
with these three lines:
| Code Block | ||||
|---|---|---|---|---|
| ||||
DEPPATH += --dep-path board VPATH += :board CFLAGS += $(shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) |
See git commit # 6ca46520df38854bf660f9be54957cceede39ded in the main NuttX repository.
If you forget to do this, 'make' will report an error, "no rule to make libboard.a," and the build will fail.
Rename WINTOOL to CONFIG_CYGWIN_WINTOOL
In your custom board's scripts/Make.defs file, rename any instances of WINTOOL to CONFIG_CYGWIN_WINTOOL.
For example, change this line:
| Code Block | ||||
|---|---|---|---|---|
| ||||
ifeq ($(WINTOOL),y) |
to this:
| Code Block | ||||
|---|---|---|---|---|
| ||||
ifeq ($(CONFIG_CYGWIN_WINTOOL),y) |
See git commit # bd656888f26c92e8832f0e76b395a5ece7704530 in the main NuttX repository.
Remove INCDIROPT
In your custom board's src/Make.defs file, remove INCDIROPT from CFLAGS.
For example, change this line:
| Code Block | ||||
|---|---|---|---|---|
| ||||
CFLAGS += $(shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) |
to this:
| Code Block | ||||
|---|---|---|---|---|
| ||||
CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) |
This option, which resolves to -w when CONFIG_CYGWIN_WINTOOL is configured, is now appended to INCDIR in tools/Config.mk.
See git commit # 5eae32577e5d5226e5d3027c169eeb369f83f77d in the main NuttX repository.
Remove Unnecessary Variables
...
See these git commits in the main NuttX repository:
9ec9431706fd0eb7c4c4410d84dafff68ff31366(DIRLINKandDIRUNLINK)8b42ee421a41214093c0238e479d73a1099b0e82(MKDEP)567962bd6263bf8809fb63c739f6ec668c69c416(ASMEXT,OBJEXT,LIBEXT,EXEEXT)
...
In your custom board's scripts/Make.defs file, it is recommended to change ${TOPDIR} to $(TOPDIR) for consistency (change curly braces to parenthesis).
See git commit # 7faf3c0254bb63af89f9eb59beefacb4cba26dd9 # 7faf3c0254bb63af89f9eb59beefacb4cba26dd9 in the main NuttX repository.
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
include $(TOPDIR)/Make.defs |
See git commit # 1a95cce1a3c3ed8b04d1d86b7bd744352cca45a2 # 1a95cce1a3c3ed8b04d1d86b7bd744352cca45a2 in the main NuttX repository.
...