
6 Jun
2014
6 Jun
'14
12:42 p.m.
Hi.
I've finally found time to look deeper into this problem. Let me outline the situation:
- The problems with Cygwin build arise in code built for the "host" architecture i.e. stuff in "tools" sub-directory.
- Along the years, there were several commits targeting the problems. All were related to include search paths/their order: a. e1a3f6b (July 2004): U-Boot include paths for "tools" build were changed to "-idirafter", i.e. host headers were given higher priority than headers in U-Boot tree. b. 883e392 (Jan 2008): The above patch caused "asm/types.h" shipped with Cygwin to be included. Turned out Cygwin does not define __u64, so this patch tried to workaround it by adding the "-ansi" flag. This flag dropped some include search paths effectively returning the use of "asm/types.h" from U-Boot tree.
So, with Sandbox configuration, host-tools include arch/sandbox/include/asm/types.h With beagle bone configuration, they include arch/arm/include/asm/type.h
How amazing!
c. 669dfc2 (March 2013): Yet another header was included from the host paths and caused problems: "libfdt_env.h". This time it was worked around by adding the following flag to override it: "-include $(SRCTREE)/include/libfdt_env.h"
Seems people are only adding new features with ridiculous workarounds, without refactrong the code, without thinking what the proper implementing is. Sadly.
Best Regards Masahiro Yamada