Hi! I've managed to get U-Boot sandbox_defconfig tools-only compiling nicely in Cygwin with a few minor modifications to the source tree I hope you'll consider for proper inclusion:
# Even with case insensitivity disabled, Cygwin does not handle execution of the file scripts/Kconfig and the directory scripts/kconfig correctly mv scripts/Kconfig scripts/Kconfig-scripts; sed -i 's;source "scripts/Kconfig";source "scripts/Kconfig-scripts";' Kconfig; # We can still be conservative with our standard without breaking the Cygwin compile completely (inline function issues) sed -i "s/HOSTCFLAGS\t+= -ansi/HOSTCFLAGS\t+= -std=gnu90/" Makefile; # Cygwin's compiler will create a .dll, not a .so sed -i 's/mv _libfdt.so/mv _libfdt.*/' tools/Makefile; My problems arise when I then attempt to do the same for any Android NDK stand-alone cross-compiler through Cygwin. I've managed to get most other things to compile with this setup as the stand-alone is the preferred/only method to ensure a proper sysroot etc. when using Makefiles. The issues and some workarounds for getting any further with U-Boot sandbox_defconfig tools-only I've come up with so far are as follows: 1) Despite exporting the usual PATH and CROSS_COMPILE environment tools-only insists on using HOSTCC and creates Cygwin builds, so: export CROSS_BUILD_TOOLS=y CC="${CROSS_COMPILE}gcc"; 2) The exports in #1 appear to have the desired effect and forces the CROSS_COMPILE toolchain to be used for the tool builds themselves, but produces further frustrations: HOSTCC tools/gen_eth_addr g:/cygwin/home/chris/x-tools/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: error: g:/cygwin/home/chris/x-tools/arm-linux-androideabi-4.9/bin/../sysroot/usr/lib/libc.a(atexit.o): multiple definition of 'atexit' g:/cygwin/home/chris/x-tools/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: g:/cygwin/home/chris/x-tools/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9/crtbegin_dynamic.o: previous definition here g:/cygwin/home/chris/x-tools/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot find -ldl /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/config/arm/lib1funcs.S:1337: error: undefined reference to 'raise' collect2.exe: error: ld returned 1 exit status make[1]: *** [scripts/Makefile.host:99: tools/gen_eth_addr] Error 1 make: *** [Makefile:1413: tools-only] Error 2 3) Attempting to resolve #2 by specifying --sysroot= with *any* value (ie. what should be working paths like "/home/Chris/x-tools/arm-linux-androideabi-4.9/sysroot", "G:/cygwin/home/Chris/x-tools/arm-linux-androideabi-4.9/sysroot" or just a single nonsense word like "fubar") breaks the compiler even further: HOSTCC tools/gen_eth_addr In file included from ././include/compiler.h:19:0, from ././include/libfdt_env.h:12, from <command-line>:0: g:\cygwin\home\chris\x-tools\arm-linux-androideabi-4.9\lib\gcc\arm-linux-androideabi\4.9\include\stdint.h:9:26: fatal error: stdint.h: No such file or directory # include_next <stdint.h> ^ compilation terminated. make[1]: *** [scripts/Makefile.host:99: tools/gen_eth_addr] Error 1 make: *** [Makefile:1413: tools-only] Error 2 I've attempted to throw -L and -I with various paths at it by adding them to the exported CC= override, both with -Wl, and without to no avail. Considering under Cygwin itself the tools build and the NDK stand-alone toolchains work perfectly for other things I feel like I'm close, so I'm wondering if there is anything I am missing or any fixes (e.g. to make CROSS_COMPILE work normally on Cygwin with tools-only, or, getting --sysroot to cooperate like it should) you could think of that might improve the situation. Thank you for any insight or guidance you can provide! Chris Renshaw _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot