On 8/30/2020 10:28 AM, Gregory Nutt wrote:
Has anyone built NuttX under Cygwin recently. I haven't and just did
so today for the first time in a long time. It does not build. I get
this error:
$ tools/configure.sh -c nucleo-l476rg:nsh
$ make -j V=1
Results in:
arm-none-eabi-ld --entry=__start -nostartfiles -nodefaultlibs -g
-T
"D:\Spuda\Documents\projects\nuttx\master\nuttx_fork\boards\arm\stm32l4\nucleo-l476rg\scripts\l476rg.ld"
-L"D:\Spuda\Documents\projects\nuttx\master\nuttx_fork\staging"
-L"D:\Spuda\Documents\projects\nuttx\master\nuttx_fork\arch\arm\src\board"
-L "c:/ ./ (x86)/ ./ ./ embedded/
2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/thumb/v7e-m/nofp/"
-L "c:/ ./ (x86)/ ./ ./ embedded/
2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/"
\
-o
"D:\Spuda\Documents\projects\nuttx\master\nuttx_fork\nuttx.exe" \
--start-group -lsched -ldrivers -lboards -lc -lmm -larch
-lxx -lapps -lfs -lbinfmt -lboard -lgcc -lm --end-group
C:\Program Files (x86)\GNU Tools ARM Embedded\9
2019-q4-major\bin\arm-none-eabi-ld.exe: cannot find -lgcc
C:\Program Files (x86)\GNU Tools ARM Embedded\9
2019-q4-major\bin\arm-none-eabi-ld.exe: cannot find -lm
make[1]: *** [Makefile:172: nuttx.exe] Error 1
Trying again with a different configuration, no -j and no V=1 gives me
the same error:
$ make distclean
$ tools/configure.sh -c stm32f4discovery:nsh
...
LD: nuttx
C:\Program Files (x86)\GNU Tools ARM Embedded\9
2019-q4-major\bin\arm-none-eabi-ld.exe: cannot find -lgcc
C:\Program Files (x86)\GNU Tools ARM Embedded\9
2019-q4-major\bin\arm-none-eabi-ld.exe: cannot find -lm
make[1]: *** [Makefile:172: nuttx.exe] Error 1
My suspicion would be this commit:
commit 4910d43ab0fc360dbddb1f8a31db2a3ee383b46d
Author: Xiang Xiao <xiaoxi...@xiaomi.com>
Date: Wed Jul 15 20:51:26 2020 +0800
build: Move the toolchain library setting to the common place
so all boards support C++ automatically
However, there are compilation problems with the previous version too
(f5311de6b42466ab5c6ef299dab0ecc417131bbe) but of a completely
different nature.
Is anyone else using Cygwin? Are you able to get a clean build?
Yes, I think that 4910d43ab0fc360dbddb1f8a31db2a3ee383b46d is the
culprit. It adds logic like the following to all Toolchain.defs files:
+
+# Add the builtin library
+
+EXTRA_LIBS += -lgcc
+EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libgcc.a}}"
+
+ifneq ($(CONFIG_LIBM),y)
+ EXTRA_LIBS += -lm
+ EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libm.a}}"
+endif
+
+ifeq ($(CONFIG_CXX_LIBSUPCXX),y)
+ EXTRA_LIBS += -lsupc++
+ EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS)
--print-file-name=libsupc++.a}}"
+endif
But look what happens under Cygwin:
$ arm-none-eabi-gcc --print-file-name=libgcc.a
c:/program files (x86)/gnu tools arm embedded/9
2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/libgcc.a
$ dir `arm-none-eabi-gcc --print-file-name=libgcc.a`
dir: cannot access 'c:/program': No such file or directory
dir: cannot access 'files': No such file or directory
dir: cannot access '(x86)/gnu': No such file or directory
dir: cannot access 'arm': No such file or directory
dir: cannot access 'embedded/9': No such file or directory
dir: cannot access
'2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/libgcc.a'$'\r': No
such file or directory
...
Broken!