keysmith/android/android-export.in.sh

135 lines
2.9 KiB
Bash

#!/bin/sh
#
# SPDX-License-Identifier: BSD-2-Clause
# SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com>
#
set -e
cat << INTRO
Running android-export.sh wrapper script: $0
Build info
== target:
- api : @CMAKE_ANDROID_API@
- arch : @CMAKE_ANDROID_ARCH@
- abi : @CMAKE_ANDROID_ARCH_ABI@
- stl : @CMAKE_ANDROID_STL_TYPE@
== build host:
- host: @CMAKE_HOST_SYSTEM_NAME@
- arch: @CMAKE_HOST_SYSTEM_PROCESSOR@
== ndk:
- path : @CMAKE_ANDROID_NDK@
INTRO
tool_prefix ()
{
local binutils="$1"
# see: https://developer.android.com/ndk/guides/other_build_systems
case "@CMAKE_ANDROID_ARCH@" in
arm)
if [ -n "$binutils" ]
then
echo -n "arm-linux-androideabi"
else
echo -n "armv7a-linux-androideabi"
fi
;;
arm64)
echo -n "aarch64-linux-android"
;;
x86)
echo -n "i686-linux-android"
;;
x86-64|x86_64) # not sure which will be passed, accept both
echo -n "x86_64-linux-android"
;;
*)
echo "Unable to continue: unknown/undefined/unsupported Android architecture: '@CMAKE_ANDROID_ARCH@'" >&2
exit 254
;;
esac
}
clang_toolname_prefix ()
{
echo -n "$(tool_prefix)@CMAKE_ANDROID_API@"
}
toolchain_host ()
{
echo -n "@CMAKE_HOST_SYSTEM_NAME@-@CMAKE_HOST_SYSTEM_PROCESSOR@" | tr [:upper:] [:lower:]
}
toolchain_path ()
{
echo -n "@CMAKE_ANDROID_NDK@/toolchains/llvm/prebuilt/$(toolchain_host)"
}
get_stl ()
{
case "@CMAKE_ANDROID_STL_TYPE@" in
c++_shared)
echo -n "libc++"
;;
*)
echo "Unable to continue: unknown/undefined/unsupported STL: '@CMAKE_ANDROID_STL_TYPE@'" >&2
exit 254
;;
esac
}
get_cxx_flags ()
{
case "$CXXFLAGS" in
*"--stl"*)
echo -n "$CXXFLAGS"
;;
*)
echo -n "$CXXFLAGS --stl=$(get_stl)"
;;
esac
}
# see: https://developer.android.com/ndk/guides/other_build_systems
BINUTILS_PREFIX="$(tool_prefix "true")"
CLANG_PREFIX="$(clang_toolname_prefix)"
TOOLCHAIN_BINDIR="$(toolchain_path)/bin"
CXXFLAGS="$(get_cxx_flags)"
AR="$TOOLCHAIN_BINDIR/$BINUTILS_PREFIX-ar"
AS="$TOOLCHAIN_BINDIR/$BINUTILS_PREFIX-as"
CC="$TOOLCHAIN_BINDIR/$CLANG_PREFIX-clang"
LD="$TOOLCHAIN_BINDIR/$BINUTILS_PREFIX-ld"
CXX="$TOOLCHAIN_BINDIR/$CLANG_PREFIX-clang++"
STRIP="$TOOLCHAIN_BINDIR/$BINUTILS_PREFIX-strip"
RANLIB="$TOOLCHAIN_BINDIR/$BINUTILS_PREFIX-ranlib"
if [ ! -d "$TOOLCHAIN_BINDIR" ]
then
echo "Unable to continue: tools directory not found: $TOOLCHAIN_BINDIR" >&2
echo "Android NDK root directory is supposed to be: @CMAKE_ANDROID_NDK@" >&2
exit 1
fi
set -x
export PATH="$TOOLCHAIN_BINDIR:$PATH" \
CXXFLAGS="$CXXFLAGS" \
AR="$AR" \
AS="$AS" \
CC="$CC" \
LD="$LD" \
CXX="$CXX" \
STRIP="$STRIP" \
RANLIB="$RANLIB"
$@