android-tools: disable on some architecture with old kernel headers
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 26 Aug 2016 21:54:40 +0000 (23:54 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Sun, 28 Aug 2016 21:38:35 +0000 (23:38 +0200)
commita2e178d6b45dfc5b8d1d50fcbbfc0bec5ebf1ae2
treebb5e5bd709d154471d0c2193917888a46f8ea9f3
parent471b1b0ef6e41a5c769e8efb3af073277042c3d6
android-tools: disable on some architecture with old kernel headers

The android-tools code is somewhat ugly, and defines its own u64 typedef
becore including kernel headers. Unfortunately, there are specific cases
where that doesn't work properly.

The android-tools code defines u64 as "unsigned long long", which is now
correct in the kernel. However, it used to be a time where u64 was
defined as "unsigned long" on a few 64 bits architecture (at least
PowerPC64 and MIPS64). The kernel headers have introduced a
__SANE_USERSPACE_TYPES__ macro that userspace can define in order to get
the "sane" definition, i.e "unsigned long long" for u64.

Unfortunately, this __SANE_USERSPACE_TYPES__ mechanism only appeared in
3.10 on PowerPC64, and in 3.16 on MIPS64.

Since android-tools is not using the autotools, and there's no easy way
to test types with the C pre-processor, we simply add some more
Config.in dependencies. They are a bit convoluted, but that's what the
dependency really is.

In our autobuilders, this issue was only showing up with an old MIPS64
toolchain that uses 3.9 kernel headers.

Also, since the problem is limited to the "fastboot" tool, the
dependency is only added for fastboot. Both adb and adbd build fine with
this toolchain.

Fixes:

  http://autobuild.buildroot.net/results/ce45c995bd6abda6487ae3a11b4f45a7b9b3f8eb/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/android-tools/Config.in