Preliminary bionic/Android support

Mostly from Crystax NDK
This commit is contained in:
hyc 2017-04-26 01:25:33 +01:00 committed by Alexey Neyman
parent ef762bfe8e
commit 8762c7698c
5 changed files with 17798 additions and 0 deletions

183
config/libc/bionic.in Normal file
View File

@ -0,0 +1,183 @@
# bionic options
## depends on ! WINDOWS && ! BARE_METAL
## depends on ARCH_arm || ARCH_mips || ARCH_x86
##
## select LIBC_SUPPORT_THREADS_POSIX
##
## help Bionic is the Android C library. It is prebuilt.
config THREADS
default "posix"
config LIBC_BIONIC_CUSTOM
bool
prompt "Custom bionic"
help
The chosen bionic-libc version shall be not downloaded. Instead use
a custom location to get the source.
if LIBC_BIONIC_CUSTOM
config LIBC_BIONIC_CUSTOM_LOCATION
string
prompt "Full path to custom bionic source"
help
Enter the path to the directory or tarball of your source for bionic.
If the path is a zip archive, it should extract to: <name>-<version>/
where the name is android-ndk, and the version is set
below in the custom version string.
config LIBC_BIONIC_CUSTOM_VERSION
string
prompt "Custom BIONIC version"
help
Enter the version number for your custom bionic.
config LIBC_VERSION
string
default LIBC_BIONIC_CUSTOM_VERSION
endif # LIBC_BIONIC_CUSTOM
if ! LIBC_BIONIC_CUSTOM
choice
bool
prompt "bionic version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config LIBC_BIONIC_V_15beta1
bool
prompt "15beta1"
config LIBC_BIONIC_V_14b
bool
prompt "14b"
config LIBC_BIONIC_V_13b
bool
prompt "13b (OBSOLETE)"
depends on OBSOLETE
config LIBC_BIONIC_V_12b
bool
prompt "12b (OBSOLETE)"
depends on OBSOLETE
config LIBC_BIONIC_V_11c
bool
prompt "11c (OBSOLETE)"
depends on OBSOLETE
config LIBC_BIONIC_V_10e
bool
prompt "10e (OBSOLETE)"
depends on OBSOLETE
endchoice
config LIBC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "r15-beta1" if LIBC_BIONIC_V_15beta1
default "r14b" if LIBC_BIONIC_V_14b
default "r13b" if LIBC_BIONIC_V_13b
default "r12b" if LIBC_BIONIC_V_12b
default "r11c" if LIBC_BIONIC_V_11c
default "r10e" if LIBC_BIONIC_V_10e
endif # ! LIBC_BIONIC_CUSTOM
choice
bool
prompt "Android API level"
help
The minimum for 64 bit support is 21.
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config ANDROID_API_24
bool
prompt "24"
config ANDROID_API_23
bool
prompt "23"
config ANDROID_API_22
bool
prompt "22"
config ANDROID_API_21
bool
prompt "21"
config ANDROID_API_19
bool
prompt "19"
depends on ARCH_32
config ANDROID_API_18
bool
prompt "18"
depends on ARCH_32
config ANDROID_API_17
bool
prompt "17"
depends on ARCH_32
config ANDROID_API_16
bool
prompt "16"
depends on ARCH_32
config ANDROID_API_15
bool
prompt "15"
depends on ARCH_32
config ANDROID_API_14
bool
prompt "14"
depends on ARCH_32
config ANDROID_API_13
bool
prompt "13"
depends on ARCH_32
config ANDROID_API_12
bool
prompt "12"
depends on ARCH_32
config ANDROID_API_9
bool
prompt "9"
depends on ARCH_32
endchoice
config ANDROID_API
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "24" if ANDROID_API_24
default "23" if ANDROID_API_23
default "22" if ANDROID_API_22
default "21" if ANDROID_API_21
default "19" if ANDROID_API_19
default "18" if ANDROID_API_18
default "17" if ANDROID_API_17
default "16" if ANDROID_API_16
default "15" if ANDROID_API_15
default "14" if ANDROID_API_14
default "13" if ANDROID_API_13
default "12" if ANDROID_API_12
default "9" if ANDROID_API_9

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,7 @@ CT_DoArchTupleValues() {
*glibc,y) CT_TARGET_SYS=gnueabi;;
uClibc,y) CT_TARGET_SYS=uclibc${CT_LIBC_UCLIBC_USE_GNU_SUFFIX:+gnu}eabi;;
musl,y) CT_TARGET_SYS=musleabi;;
bionic,y) CT_TARGET_SYS=android;;
*,y) CT_TARGET_SYS=eabi;;
esac

View File

@ -0,0 +1,43 @@
# This file adds functions to extract the bionic C library from the Android NDK
# Copyright 2017 Howard Chu
# Licensed under the GPL v2. See COPYING in the root of this package
do_libc_get() {
if [ "${CT_LIBC_BIONIC_CUSTOM}" = "y" ]; then
CT_GetCustom "bionic" "${CT_LIBC_BIONIC_CUSTOM_VERSION}" \
"${CT_LIBC_BIONIC_CUSTOM_LOCATION}"
else # ! custom location
CT_GetFile "android-ndk-${CT_LIBC_VERSION}-linux-x86_64.zip" https://dl.google.com/android/repository
fi # ! custom location
}
do_libc_extract() {
CT_Extract "android-ndk-${CT_LIBC_VERSION}-linux-x86_64"
CT_Pushd "${CT_SRC_DIR}/android-ndk-${CT_LIBC_VERSION}/"
CT_Patch nochdir bionic "${CT_LIBC_VERSION}"
CT_Popd
}
# Install Unified headers
do_libc_start_files() {
CT_DoStep INFO "Installing C library headers"
CT_DoExecLog ALL cp -r "${CT_SRC_DIR}/android-ndk-${CT_LIBC_VERSION}/sysroot/usr" "${CT_SYSROOT_DIR}"
}
do_libc() {
local arch="${CT_ARCH}"
if [ "${CT_ARCH_64}" = "y" ]; then
if [ "${CT_ARCH}" = "x86" ]; then
arch="${arch}_"
fi
arch="${arch}64"
fi
CT_DoStep INFO "Installing C library binaries"
CT_DoExecLog ALL cp -r "${CT_SRC_DIR}/android-ndk-${CT_LIBC_VERSION}/platforms/android-${CT_ANDROID_API}/arch-${arch}/usr" "${CT_SYSROOT_DIR}"
CT_EnvModify CT_TARGET_CFLAGS "${CT_TARGET_CFLAGS} -D__ANDROID_API__=${CT_ANDROID_API}"
}
do_libc_post_cc() {
:
}

View File

@ -1368,6 +1368,7 @@ CT_DoBuildTargetTuple() {
*glibc) CT_TARGET_SYS=gnu;;
uClibc) CT_TARGET_SYS=uclibc;;
musl) CT_TARGET_SYS=musl;;
bionic) CT_TARGET_SYS=android;;
avr-libc)
# avr-libc only seems to work with the non-canonical "avr" target.
CT_TARGET_SKIP_CONFIG_SUB=y