1config BR2_PACKAGE_ANDROID_TOOLS
2	bool "android-tools"
3	# Technically, fastboot could build on noMMU systems. But
4	# since we need at least one of the three sub-options enabled,
5	# and adb/adbd can't be built on noMMU systems, and fastboot
6	# has some complicated dependencies, we simply make the whole
7	# package not available on noMMU platforms.
8	depends on BR2_USE_MMU
9	depends on BR2_TOOLCHAIN_HAS_THREADS
10	select BR2_PACKAGE_ANDROID_TOOLS_ADBD if \
11	      !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT && \
12	      !BR2_PACKAGE_ANDROID_TOOLS_ADB
13	help
14	  This package contains the fastboot and adb utilities, that
15	  can be used to interact with target devices using of these
16	  protocols.
17
18	  https://wiki.debian.org/AndroidTools#Original_android-tools_package
19
20if BR2_PACKAGE_ANDROID_TOOLS
21
22# We need kernel headers that support the __SANE_USERSPACE_TYPES__
23# mechanism for 64 bits architectures, so that u64 gets defined as
24# "unsigned long long" and not "unsigned long". We know that >= 3.16
25# is needed for MIPS64 (kernel commit
26# f4b3aa7cd9d32407670e67238c5ee752bb98f481) and >= 3.10 is needed for
27# PowerPC64 (kernel commit
28# 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0). Without this, the build
29# fails with a bad redefinition of u64 (the android-tools fastboot
30# code defines it as "unsigned long long").
31config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS
32	bool
33	default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 && (BR2_powerpc64 || BR2_powerpc64le)
34	default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 && (BR2_mips64 || BR2_mips64el)
35	default y if !BR2_powerpc64 && !BR2_powerpc64le && !BR2_mips64 && !BR2_mips64el
36
37config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT
38	bool "fastboot"
39	depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux
40	depends on !BR2_STATIC_LIBS # libselinux
41	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libselinux -> libsepol
42	depends on BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS
43	select BR2_PACKAGE_LIBSELINUX
44	select BR2_PACKAGE_ZLIB
45	help
46	  This option will build and install the fastboot utility for
47	  the target, which can be used to reflash other target devices
48	  implementing the fastboot protocol.
49
50comment "fastboot needs a toolchain w/ threads, dynamic library, gcc >= 5"
51	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
52		!BR2_TOOLCHAIN_GCC_AT_LEAST_5
53
54comment "fastboot needs headers >= 3.10 (PowerPC64), headers >= 3.16 (MIPS64)"
55	depends on !BR2_arc
56	depends on !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS
57
58config BR2_PACKAGE_ANDROID_TOOLS_ADB
59	bool "adb"
60	depends on BR2_USE_MMU # uses fork()
61	select BR2_PACKAGE_OPENSSL
62	select BR2_PACKAGE_ZLIB
63	help
64	  This option will build and install the adb utility for the
65	  target, which can be used to interact with other target
66	  devices implementing the ADB protocol.
67
68config BR2_PACKAGE_ANDROID_TOOLS_ADBD
69	bool "adbd"
70	depends on BR2_USE_MMU # uses fork()
71	select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
72	select BR2_PACKAGE_OPENSSL
73	select BR2_PACKAGE_ZLIB
74	help
75	  This option will build and install the adbd utility for the
76	  target, which can be used to interact with a host machine
77	  implementing the ADB protocol.
78
79endif
80
81comment "android-tools needs a toolchain w/ threads"
82	depends on BR2_USE_MMU
83	depends on !BR2_TOOLCHAIN_HAS_THREADS
84