Hi Petro, I forgot to mention that I need to enable BOARD_CUSTOM_LEDS, sorry about that. Now I was able to build without errors keeping src/Make.defs untouched.
Thanks everybody Daniel Pereira de Carvalho Em qui., 3 de mar. de 2022 às 09:20, Petro Karashchenko < petro.karashche...@gmail.com> escreveu: > Hello Abdelatif, > > I just tried to recreate the same scenario. To do this I did: > 1. Recreated folder structure as in Daniel's case > |-> apps > |-> my-folder > |-> my-boards > |-> custom-board > |-> nuttx > > 2. Copied nucleo-g431kb to custom-board: cd my-folder/my-boards && cp > -r ../../nuttx/boards/arm/stm32/nucleo-g431kb custom-board > > 3. *remove from defconfig:* > CONFIG_ARCH_BOARD="nucleo-g431kb" > CONFIG_ARCH_BOARD_NUCLEO_G431KB=y > > 4. *add on defconfig:* > CONFIG_ARCH_BOARD_CUSTOM=y > CONFIG_ARCH_BOARD_CUSTOM_DIR="../my-folder/my-boards/custom-board" > CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y > CONFIG_ARCH_BOARD_CUSTOM_NAME="custom-board" > > 5. I did not performed: "*Rename src/Make.defs to src/Makefile and > append the line include $(TOPDIR)/boards/Board.mk at the end of > file.*" > > 6. tools/configure.sh ../my-folder/my-boards/custom-board/configs/nsh > > 7. make -j8 > > Compilation failed, but not because of a common folder but because: > "board/stm32_userleds.c:60:14: error: 'BOARD_LED1' undeclared (first > use in this function); did you mean 'BOARD_LED2'?". So I had to "make > menuconfig" and select "BOARD_CUSTOM_LEDS" to pass compilation > successfully. > > "It could be that they have an old board where the common folder > structure didn't exist at the time and they don't want to change their > structure." -- I think this is a weak argument as we change config > option names sometimes as users are forced to adapt their code. The > only miss that I see here is that the > https://github.com/apache/incubator-nuttx/pull/5274 was not marked as > a "breaking change". > > Best regards, > Petro > > чт, 3 бер. 2022 р. о 11:57 Abdelatif Guettouche > <abdelatif.guettou...@gmail.com> пише: > > > > > If what you are writing is true, then compilation for any board that > > > does not have a "common" folder at board level should fail. > > > > No because in-tree this line: BOARD_COMMON_DIR = $(wildcard > > > $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)common) > > will result on an empty string. > > > > > We just need to copy source files from > > > NuttX board common to custom board location and add files to > > > compilation list > > > > The thing is that some people won't want to do that. They don't want > > to use the common folder. It could be that they have an old board > > where the common folder structure didn't exist at the time and they > > don't want to change their structure. > > > > > Or maybe I'm missing the exact use case. > > > > Daniel's use case is the following: Use a custom board copied from an > > in-tree board _without_ using the common directory even if one exists. > > > > On Thu, Mar 3, 2022 at 11:43 AM Petro Karashchenko > > <petro.karashche...@gmail.com> wrote: > > > > > > Hi, > > > > > > There is no problem with that. We just need to copy source files from > > > NuttX board common to custom board location and add files to > > > compilation list together with disabling of NuttX board common layer > > > (set CONFIG_BOARD_STM32_COMMON=n for example with STM32 case). > > > > > > Or maybe I'm missing the exact use case. If yes, then please describe > > > it more clearly and I will try to go through it to see if that can be > > > achieved with the current code tree or not. > > > > > > Best regards, > > > Petro > > > > > > чт, 3 бер. 2022 р. о 11:37 Abdelatif Guettouche > > > <abdelatif.guettou...@gmail.com> пише: > > > > > > > > > I think with NuttX 10.2.0 you do not need to perform the next > steps any more. > > > > > > > > These are necessary when someone is using a custom board without a > > > > common folder copied from a board in-tree that contains a common > > > > folder. > > > > > > > > On Thu, Mar 3, 2022 at 11:31 AM Abdelatif Guettouche > > > > <abdelatif.guettou...@gmail.com> wrote: > > > > > > > > > > > "Which is forcing a common directory when there isn't one. " -- > This > > > > > > statement is not true as we have > > > > > > > https://github.com/apache/incubator-nuttx/blob/b953296de73ac75bb380a609f9f30e9fe34e7622/tools/Unix.mk#L272-L277 > > > > > > that depends on if "BOARD_COMMON_DIR" exists or not. > > > > > > > > > > Unix.mk includes $(TOPDIR)/Make.defs which in its turn includes > > > > > tools/Config.mk so reaching that Make rule, BOARD_COMMON_DIR will > have > > > > > a value, whether there is a common directory or not. > > > > > > > > > > On Thu, Mar 3, 2022 at 11:09 AM Petro Karashchenko > > > > > <petro.karashche...@gmail.com> wrote: > > > > > > > > > > > > Hello Abdelatif, > > > > > > > > > > > > "Which is forcing a common directory when there isn't one. " -- > This > > > > > > statement is not true as we have > > > > > > > https://github.com/apache/incubator-nuttx/blob/b953296de73ac75bb380a609f9f30e9fe34e7622/tools/Unix.mk#L272-L277 > > > > > > that depends on if "BOARD_COMMON_DIR" exists or not. > > > > > > > > > > > > Getting back to original question: > > > > > > > > > > > > > To build my apps I just need to create a symbolic link called > external > > > > > > > inside apps folder. To create a new custom board I start > copying a similar > > > > > > > board (e.g nucleo-g431kb) to my-boards folder and make the > following changes > > > > > > > > > > > > > > *remove from defconfig:* > > > > > > > CONFIG_ARCH_BOARD="nucleo-g431kb" > > > > > > > CONFIG_ARCH_BOARD_NUCLEO_G431KB=y > > > > > > > > > > > > > > *add on defconfig:* > > > > > > > CONFIG_ARCH_BOARD_CUSTOM=y > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR="../my-folder/my-boards/custom-board" > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_NAME="custom-board" > > > > > > > > > > > > > > *Rename src/Make.defs to src/Makefile and append the line * > > > > > > > include $(TOPDIR)/boards/Board.mk at the end of file. > > > > > > > > > > > > > > This works well for me up to Nuttx version 10.2.0 but now when > I try to > > > > > > > make I got the errors > > > > > > > > > > > > I think with NuttX 10.2.0 you do not need to perform the next > steps any more. > > > > > > > > > > > > *Rename src/Make.defs to src/Makefile and append the line * > > > > > > include $(TOPDIR)/boards/Board.mk at the end of file. > > > > > > > > > > > > I will get back to errors met by Jukka to see what caused the > problem > > > > > > in his case. > > > > > > > > > > > > Best regards, > > > > > > Petro > > > > > > > > > > > > чт, 3 бер. 2022 р. о 10:12 Abdelatif Guettouche > > > > > > <abdelatif.guettou...@gmail.com> пише: > > > > > > > > > > > > > > > It seems like Daniel is hitting the same issue > > > > > > > > > > > > > > Daniel is actually not using the common folder from the STM32 > > > > > > > directory. This is why he had to do that renaming. > > > > > > > The issue is this: > > > > > > > > https://github.com/apache/incubator-nuttx/blob/master/tools/Config.mk#L154-L156 > > > > > > > Which is forcing a common directory when there isn't one. This > should > > > > > > > not be done as people have requested before to be able to use > boards > > > > > > > without a common directory even if in-tree we use the common > > > > > > > directory. > > > > > > > Daniel, you can just remove those lines to confirm that it > builds fine > > > > > > > (I tried and it does, at least you don't have that error > anymore, > > > > > > > there are some trivial compile errors though in the board). > > > > > > > For a final solution I think we can either remove them > completely or > > > > > > > just add an else statement. I didn't have time to think about > it. > > > > > > > > > > > > > > On Thu, Mar 3, 2022 at 9:34 AM Jukka Laitinen < > jukka.laiti...@iki.fi> wrote: > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > Maybe I was jumping in to conclusion and the issue is not > the same as > > > > > > > > what I had. I was building PX4, which uses CMake build > system, so I am > > > > > > > > not having any Makefile or Make.defs in my own board > directory. Also the > > > > > > > > platform is not stm or arm, but risc-v. > > > > > > > > > > > > > > > > Anyhow, this is the error which I started getting in my > build scripts: > > > > > > > > > > > > > > > > " > > > > > > > > > > > > > > > > ninja: error: > > > > > > > > > '../../platforms/nuttx/NuttX/nuttx/arch/risc-v/include/board', needed by > > > > > > > > 'NuttX/nuttx_copy.stamp', missing and no known rule to make > it > > > > > > > > make: *** [Makefile:225: ssrc_icicle_default] Error 1 > > > > > > > > " > > > > > > > > > > > > > > > > My configs are: > > > > > > > > > > > > > > > > CONFIG_ARCH="risc-v" > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM=y > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR="../nuttx-config" > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" > > > > > > > > > > > > > > > > One version, where it fails is available publicly in > > > > > > > > > > > > > > > > https://github.com/tiiuae/px4-firmware/ (nuttx is included > as a submodule) > > > > > > > > > > > > > > > > Building "make ssrc_icicle_default". The board files are in > > > > > > > > boards/ssrc/icicle/nuttx-config and NuttX cloned in > > > > > > > > platforms/nuttx/Nuttx/nuttx. > > > > > > > > > > > > > > > > I didn't yet start looking into it in detail, what goes > wrong, just > > > > > > > > bisected the nuttx and reverted the commit which broke it > for me. I need > > > > > > > > to look back later to see how to change the off-tree board > config to get > > > > > > > > it back online. > > > > > > > > > > > > > > > > Just noticed that the error is somewhat similar, although > coming from > > > > > > > > different build env. But in my case it is likely that I need > to adapt > > > > > > > > the cmake build scripts according to the changes in nuttx. > > > > > > > > > > > > > > > > -Jukka > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 3.3.2022 9.37, Petro Karashchenko wrote: > > > > > > > > > Hello Jukka, > > > > > > > > > > > > > > > > > > So you experience the same problem as Daniel and reverting > the commit helps? > > > > > > > > > > > > > > > > > > Before f77956a227f1db6ecb44eda3814e7b02aa2187a6 there was > no way to > > > > > > > > > reuse common code from "nuttx/board/...". I'm using a > custom board > > > > > > > > > based on SAME70 and after > > > > > > > > > https://github.com/apache/incubator-nuttx/pull/4981 I > found my code > > > > > > > > > tree broken. Now the folder structure for > "boards/arm/samv7" is the > > > > > > > > > same as in "boards/arm/stm32". Here is what I did to get > it back > > > > > > > > > running: > > > > > > > > > 1. Synced "custom-board/scripts/Make.defs" with > > > > > > > > > "boards/arm/samv7/same70-xplained/scripts/Make.defs" > > > > > > > > > 2. Renamed "custom-board/src/Makefile" to > "custom-board/src/Make.defs" > > > > > > > > > and synced with > "boards/arm/samv7/same70-xplained/src/Make.defs" > > > > > > > > > 3. Removed files in my code tree that have exactly the same > > > > > > > > > implementation as files from "boards/arm/samv7/common" > > > > > > > > > > > > > > > > > > It seems like Daniel is hitting the same issue, so I > expect that > > > > > > > > > renaming Makefile to Make.defs plus setting > "BOARD_STM32_COMMON=n" > > > > > > > > > should fix the issue without any additional file clean-up. > > > > > > > > > Please give me feedback if that helps. > > > > > > > > > > > > > > > > > > Best regards, > > > > > > > > > Petro > > > > > > > > > > > > > > > > > > чт, 3 бер. 2022 р. о 07:40 Jukka Laitinen < > jukka.laiti...@iki.fi> пише: > > > > > > > > >> HI, > > > > > > > > >> > > > > > > > > >> Not sure what is the correct way to fix this, but I > reverted: > > > > > > > > >> > > > > > > > > >> " > > > > > > > > >> > > > > > > > > >> commit f77956a227f1db6ecb44eda3814e7b02aa2187a6 > > > > > > > > >> Author: Petro Karashchenko <petro.karashche...@gmail.com> > > > > > > > > >> Date: Wed Jan 19 11:16:11 2022 +0200 > > > > > > > > >> > > > > > > > > >> tools: add option to reuse boards common files for > custom boards > > > > > > > > >> > > > > > > > > >> Signed-off-by: Petro Karashchenko < > petro.karashche...@gmail.com> > > > > > > > > >> " > > > > > > > > >> > > > > > > > > >> Petro, what is the proper way to configure this? > > > > > > > > >> > > > > > > > > >> Thanks, > > > > > > > > >> > > > > > > > > >> Jukka > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> On 3.3.2022 0.06, Daniel Pereira Carvalho wrote: > > > > > > > > >> > > > > > > > > >>> Hi guys, > > > > > > > > >>> > > > > > > > > >>> I am having problems building custom boards outside of > the Nuttx folder > > > > > > > > >>> tree. Usually I use the following folder structure. > > > > > > > > >>> > > > > > > > > >>> |-> apps > > > > > > > > >>> |-> my-folder > > > > > > > > >>> |-> my-apps > > > > > > > > >>> |-> custom-app > > > > > > > > >>> |-> my-boards > > > > > > > > >>> |-> custom-board > > > > > > > > >>> |-> nuttx > > > > > > > > >>> > > > > > > > > >>> To build my apps I just need to create a symbolic link > called external > > > > > > > > >>> inside apps folder. To create a new custom board I start > copying a similar > > > > > > > > >>> board (e.g nucleo-g431kb) to my-boards folder and make > the following changes > > > > > > > > >>> > > > > > > > > >>> *remove from defconfig:* > > > > > > > > >>> CONFIG_ARCH_BOARD="nucleo-g431kb" > > > > > > > > >>> CONFIG_ARCH_BOARD_NUCLEO_G431KB=y > > > > > > > > >>> > > > > > > > > >>> *add on defconfig:* > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM=y > > > > > > > > >>> > CONFIG_ARCH_BOARD_CUSTOM_DIR="../my-folder/my-boards/custom-board" > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM_NAME="custom-board" > > > > > > > > >>> > > > > > > > > >>> *Rename src/Make.defs to src/Makefile and append the > line * > > > > > > > > >>> include $(TOPDIR)/boards/Board.mk at the end of file. > > > > > > > > >>> > > > > > > > > >>> This works well for me up to Nuttx version 10.2.0 but > now when I try to > > > > > > > > >>> make I got the errors > > > > > > > > >>> > > > > > > > > >>> make[1]: Entering directory > '/home/daniel/nuttx-workspace/nuttx/tools' > > > > > > > > >>> make[1]: Leaving directory > '/home/daniel/nuttx-workspace/nuttx/tools' > > > > > > > > >>> make[1]: Entering directory > '/home/daniel/nuttx-workspace/nuttx/tools' > > > > > > > > >>> make[1]: Leaving directory > '/home/daniel/nuttx-workspace/nuttx/tools' > > > > > > > > >>> Create version.h > > > > > > > > >>> make[1]: Entering directory > '/home/daniel/nuttx-workspace/nuttx/boards' > > > > > > > > >>> make[2]: Entering directory > > > > > > > > >>> > '/home/daniel/nuttx-workspace/nuttx/boards/arm/stm32/common' > > > > > > > > >>> Makefile:23: board/Make.defs: No such file or directory > > > > > > > > >>> make[2]: *** No rule to make target 'board/Make.defs'. > Stop. > > > > > > > > >>> make[2]: Leaving directory > > > > > > > > >>> > '/home/daniel/nuttx-workspace/nuttx/boards/arm/stm32/common' > > > > > > > > >>> make[1]: *** [Makefile:79: context] Error 2 > > > > > > > > >>> make[1]: Leaving directory > '/home/daniel/nuttx-workspace/nuttx/boards' > > > > > > > > >>> make: *** [tools/Unix.mk:425: boards/.context] Error 2 > > > > > > > > >>> > > > > > > > > >>> Does anyone know how to fix this problem? > > > > > > > > >>> > > > > > > > > >>> Thanks > > > > > > > > >>> > > > > > > > > >>> Daniel Pereira de Carvalho > > > > > > > > >>> >