I should add that I also tried Marc's original answer (multiple lines to Make.defs) with the same result.
On Wed, Aug 12, 2020 at 6:38 PM Matt DeWall <mdew...@gmail.com> wrote: > Xiang and Marc, thank you very much for your quick responses. > > That did get me further, I'm getting an error around "at_quick_exit" now. > Based on my googles it's regarding std11 or std17 options not being > defined. > > I did try adding -std=c++11 to the Make.defs but it didn't have any > effect. I'm using the libcxx I cloned from > https://bitbucket.org/acassis/libcxx (per the docs) if that makes any > difference. > > Error: > make[1]: Entering directory '/nuttx/nuttx/libs/libxx' > CXX: libxx_cxa_atexit.cxx > In file included from libxx.hxx:62, > from libxx_cxa_atexit.cxx:44: > /nuttx/nuttx/include/libcxx/cstdlib:155:9: error: '::at_quick_exit' has > not been declared > 155 | using ::at_quick_exit; > | ^~~~~~~~~~~~~ > /nuttx/nuttx/include/libcxx/cstdlib:156:9: error: '::quick_exit' has not > been declared > 156 | using ::quick_exit; > | ^~~~~~~~~~ > make[1]: *** [Makefile:80: libxx_cxa_atexit.o] Error 1 > make[1]: Leaving directory '/nuttx/nuttx/libs/libxx' > make: *** [tools/LibTargets.mk:203: libs/libxx/libxx.a] Error 2 > > Thanks! > > Matt > > > On Wed, Aug 12, 2020 at 12:22 AM Xiang Xiao <xiaoxiang781...@gmail.com> > wrote: > >> Yes, include setting is done in the recently: >> commit d32e9c38dfb0659a7f3c0cf586ba1584cd7eb3d6 >> Author: Xiang Xiao <xiaoxi...@xiaomi.com> >> Date: Sat Jul 11 18:37:40 2020 +0800 >> >> boards: Move the C/C++ search path to the common place >> >> so all boards support uClibc++/libc++ automatically >> >> Signed-off-by: Xiang Xiao <xiaoxi...@xiaomi.com> >> Change-Id: Ibe6fafbec57f7acb26ea6188a3e9923ea82295c5 >> which is part of the work to make libc++/uCLibc++ available to all boards. >> >> > -----Original Message----- >> > From: Marc Rosen <ma...@zeitcontrol.de> >> > Sent: Wednesday, August 12, 2020 2:46 PM >> > To: dev@nuttx.apache.org >> > Subject: Re: cpp cxx help - No thread API >> > >> > I should look more through before starting to say stuff. >> > >> > So most of the stuff I mentioned is moot because it was moved to a >> different place that I was not aware of. >> > >> > So Matt as Xiang mentioned the ARCHCXXFLAGS line should be enough. >> Importend is the define of __NuttX__ because it enables the >> > necessary options for libcpp to compile. >> > >> > regards >> > >> > Marc Rosen >> > >> > ZeitControl Cardsystems GmbH >> > Siedlerweg 39 >> > D-32429 Minden >> > Tel. ++49 (0)571 50 52 222 >> > Fax. ++49 (0)571 50 52 299 >> > E-Mail ma...@zeitcontrol.de >> > >> > Am 12.08.2020 um 08:32 schrieb Marc Rosen: >> > > Hi, >> > > >> > > i did a curiosity check on this. >> > > No Make.defs for STM32 boards on master from some what yesterday >> > > evening (my localtime) has any include definitions for c++. >> > > >> > > So to help Matt. the following is from my current config add this to >> > > your Make.defs in your /nuttx/nuttx folder: >> > > >> > > ARCHINCLUDESXX += ${shell $(INCDIR) -s "$(CC)" >> > > $(TOPDIR)$(DELIM)include} ARCHINCLUDESXX += ${shell $(INCDIR) -s >> "$(CC)" >> > > $(TOPDIR)$(DELIM)include$(DELIM)cxx} >> > > ARCHINCLUDESXX += ${shell $(INCDIR) -s "$(CC)" >> > > $(TOPDIR)$(DELIM)include$(DELIM)libcxx} >> > > >> > > ifeq ($(CONFIG_LIBCXX),y) >> > > ARCHCXXFLAGS += -std=c++17 -D__NuttX__ -D_LIBCPP_BUILD_STATIC >> > > >> > > ifneq ($(CONFIG_CXX_EXCEPTION),y) >> > > ARCHCXXFLAGS += -D_LIBCPP_NO_EXCEPTIONS >> > > endif >> > > >> > > ifeq ($(CONFIG_LIBCXX_BUILD_LIBRARY),y) >> > > ARCHCXXFLAGS += -D_LIBCPP_BUILDING_LIBARAY >> > > endif >> > > >> > > endif >> > > >> > > regards >> > > >> > > Marc Rosen >> > > >> > > ZeitControl Cardsystems GmbH >> > > Siedlerweg 39 >> > > D-32429 Minden >> > > Tel. ++49 (0)571 50 52 222 >> > > Fax. ++49 (0)571 50 52 299 >> > > E-Mail ma...@zeitcontrol.de >> > > >> > > Am 12.08.2020 um 08:07 schrieb Xiang Xiao: >> > >> Do you have this in your boards/Make.defs: >> > >> ARCHCXXFLAGS += -D__NuttX__ -nostdinc++ Since there are many complex >> > >> setting to make C++ library work on NuttX, but this setting spread >> in different Make.defs, I plan to enhance the experience in the >> > next couple weeks(actually, all is done in our internal development >> branch): >> > >> 1.Centralize the setting to arch/Toolchain.defs, so all boards will >> support libc++/uClibc++ automatically. >> > >> 2.Upgrade to the latest uClibc++(already upstream) and libc++ without >> > >> the special NuttX hack 3.Modify Makefile to automatically download >> > >> the package from the official release(uClibc++ already upstream) >> > >> 4.Enable all deconfig related to uClibc++/libc++ in the daily build >> > >> system >> > >> >> > >>> -----Original Message----- >> > >>> From: Matt DeWall <mdew...@gmail.com> >> > >>> Sent: Wednesday, August 12, 2020 10:53 AM >> > >>> To: dev@nuttx.apache.org >> > >>> Subject: cpp cxx help - No thread API >> > >>> >> > >>> Hi devs! I'm getting started on NuttX and love the project. >> Looking to port my cpp project to NuttX. >> > >>> >> > >>> I'm having trouble compiling the CPP version of the hello world >> > >>> using the existing documentation. I'm able to build nuttx just >> fine and flash my device using the C version of Hello World. >> > >>> >> > >>> The error during CXX building is "No thread API" >> > >>> >> > >>> >> > >>> *Background:* >> > >>> >> > >>> I'm following the (latest?) directions here: >> > >>> >> > >>> https://github.com/apache/incubator-nuttx/ >> > >>> >> > >>> I made my own docker image based on this Dockerfile which I >> understand nuttx is using for some part of ci/cid/testing: >> > >>> >> > >>> >> https://github.com/apache/incubator-nuttx-testing/blob/master/docker >> > >>> /linux/Dockerfile >> > >>> >> > >>> Running the following commands: >> > >>> >> > >>> git clone https://github.com/apache/incubator-nuttx.git nuttx git >> > >>> clone https://github.com/apache/incubator-nuttx-apps.git apps >> > >>> >> > >>> Then I configure for my own board (stm32f103rbt6) ./configure.sh >> > >>> nucleo-f103rb/nsh >> > >>> >> > >>> After "make menuconfig" and configuring the C hello world app, I'm >> able to build and flash my board and run "hello" just fine. >> > >>> >> > >>> This leads me to believe my toolchain is good to go. >> > >>> >> > >>> >> > >>> *Installing libcxx:* >> > >>> >> > >>> So moving on the c++ docs found here: >> > >>> >> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139 >> > >>> 629545 >> > >>> but they may be outdated? >> > >>> >> > >>> Running: >> > >>> >> > >>> git clone https://bitbucket.org/acassis/libcxx >> > >>> cd libcxx >> > >>> ./install /nuttx/nuttx >> > >>> >> > >>> "Installing LLVM/libcxx in the NuttX source treeInstallation >> succeeded" >> > >>> >> > >>> I skipped the other two lines in that guide because they seem to >> clone a different and older nuttx clone from Alan's repo. >> > >>> >> > >>> >> > >>> *Trying to implement c++:* >> > >>> >> > >>> Going over to make menuconfig and enabling the following options >> > >>> (and whatever comes with them) >> > >>> >> > >>> Libary Routines->Have C++ Compiler >> > >>> >> > >>> Libary Routines->Build LLVM libc++ >> > >>> >> > >>> Applications->Hello World C++ example >> > >>> >> > >>> When I go to build I get a "No thread API"... >> > >>> >> > >>> make[2]: Entering directory '/nuttx/apps/examples/helloxx'In file >> > >>> included from /nuttx/nuttx/include/libcxx/cstdio:99,from >> > >>> ./helloxx_main.cxx:42:/nuttx/nuttx/include/libcxx/__config:845:4: >> error: >> > >>> #error "No thread API"845 | # error "No thread API" >> > >>> >> > >>> I've only seen a 3 year old post where some person was using their >> own toolchain, so I'm not clear on how to proceed. >> > >>> >> > >>> I think I need to include some extra things in my Make.defs but I'm >> > >>> usually working at a higher layer, I'm a medium-level linux person >> and have next to zero experience developing c/c++ apps on >> > linux, but I"ve written plenty of apps on Windows. >> > >>> >> > >>> Really appreciate any help or insight you can provide, thanks! >> > >>> >> > >>> Matt >> > > >> > >> >> >>