summaryrefslogtreecommitdiff
path: root/scripts/build/libc/bionic.sh
blob: 0ffd4d8c108e602595a3883908376c629b25cdf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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

# Install Unified headers
bionic_headers()
{
    CT_DoStep INFO "Installing C library headers"
    CT_DoExecLog ALL cp -r "${CT_SRC_DIR}/android-ndk/sysroot/usr" "${CT_SYSROOT_DIR}"
}

bionic_main()
{
    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/platforms/android-${CT_ANDROID_API}/arch-${arch}/usr" "${CT_SYSROOT_DIR}"

    # NB: Modifying both CT_TARGET_CFLAGS and CT_ALL_TARGET_CFLAGS: the __ANDROID_API__
    # definition needs to be passed into GCC build, or the resulting libstdc++ gets
    # miscompiled (attempt to link against it results in unresolved symbols to stdout/...).
    # And since __ANDROID_API__ is a user config option, placing it with other user-supplied
    # options isn't completely out of character.
    # On the other hand, CT_ALL_TARGET_CFLAGS in non-multilib builds is already set and does
    # not get recalculated after GCC build, so setting CT_TARGET_CFLAGS is not reflected
    # on other libraries/apps, such as gdbserver.
    CT_EnvModify CT_TARGET_CFLAGS "${CT_TARGET_CFLAGS} -D__ANDROID_API__=${CT_ANDROID_API}"
    CT_EnvModify CT_ALL_TARGET_CFLAGS "${CT_ALL_TARGET_CFLAGS} -D__ANDROID_API__=${CT_ANDROID_API}"
}