xref: /aosp_15_r20/external/oboe/build_all_android.sh (revision 05767d913155b055644481607e6fa1e35e2fe72c)
1*05767d91SRobert Wu# Copyright 2017 The Android Open Source Project
2*05767d91SRobert Wu#
3*05767d91SRobert Wu# Licensed under the Apache License, Version 2.0 (the "License");
4*05767d91SRobert Wu# you may not use this file except in compliance with the License.
5*05767d91SRobert Wu# You may obtain a copy of the License at
6*05767d91SRobert Wu#
7*05767d91SRobert Wu#      http://www.apache.org/licenses/LICENSE-2.0
8*05767d91SRobert Wu#
9*05767d91SRobert Wu# Unless required by applicable law or agreed to in writing, software
10*05767d91SRobert Wu# distributed under the License is distributed on an "AS IS" BASIS,
11*05767d91SRobert Wu# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*05767d91SRobert Wu# See the License for the specific language governing permissions and
13*05767d91SRobert Wu# limitations under the License.
14*05767d91SRobert Wu
15*05767d91SRobert Wu# Script to build Oboe for multiple Android ABIs and prepare them for distribution
16*05767d91SRobert Wu# via Prefab (github.com/google/prefab)
17*05767d91SRobert Wu#
18*05767d91SRobert Wu# Ensure that ANDROID_NDK environment variable is set to your Android NDK location
19*05767d91SRobert Wu# e.g. /Library/Android/sdk/ndk-bundle
20*05767d91SRobert Wu
21*05767d91SRobert Wu#!/bin/bash
22*05767d91SRobert Wu
23*05767d91SRobert Wuif [ -z "$ANDROID_NDK" ]; then
24*05767d91SRobert Wu  echo "Please set ANDROID_NDK to the Android NDK folder"
25*05767d91SRobert Wu  exit 1
26*05767d91SRobert Wufi
27*05767d91SRobert Wu
28*05767d91SRobert Wu# Directories, paths and filenames
29*05767d91SRobert WuBUILD_DIR=build
30*05767d91SRobert Wu
31*05767d91SRobert WuCMAKE_ARGS="-S. \
32*05767d91SRobert Wu  -DBUILD_SHARED_LIBS=true \
33*05767d91SRobert Wu  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
34*05767d91SRobert Wu  -DANDROID_TOOLCHAIN=clang \
35*05767d91SRobert Wu  -DANDROID_STL=c++_shared \
36*05767d91SRobert Wu  -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
37*05767d91SRobert Wu  -DCMAKE_INSTALL_PREFIX=."
38*05767d91SRobert Wu
39*05767d91SRobert Wufunction build_oboe {
40*05767d91SRobert Wu
41*05767d91SRobert Wu  ABI=$1
42*05767d91SRobert Wu  MINIMUM_API_LEVEL=$2
43*05767d91SRobert Wu  ABI_BUILD_DIR=build/${ABI}
44*05767d91SRobert Wu  STAGING_DIR=staging
45*05767d91SRobert Wu
46*05767d91SRobert Wu  echo "Building Oboe for ${ABI}"
47*05767d91SRobert Wu
48*05767d91SRobert Wu  mkdir -p ${ABI_BUILD_DIR} ${ABI_BUILD_DIR}/${STAGING_DIR}
49*05767d91SRobert Wu
50*05767d91SRobert Wu  cmake -B${ABI_BUILD_DIR} \
51*05767d91SRobert Wu        -DANDROID_ABI=${ABI} \
52*05767d91SRobert Wu        -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${STAGING_DIR}/lib/${ABI} \
53*05767d91SRobert Wu        -DANDROID_PLATFORM=android-${MINIMUM_API_LEVEL}\
54*05767d91SRobert Wu        ${CMAKE_ARGS}
55*05767d91SRobert Wu
56*05767d91SRobert Wu  pushd ${ABI_BUILD_DIR}
57*05767d91SRobert Wu  make -j5
58*05767d91SRobert Wu  popd
59*05767d91SRobert Wu}
60*05767d91SRobert Wu
61*05767d91SRobert Wubuild_oboe armeabi-v7a 16
62*05767d91SRobert Wubuild_oboe arm64-v8a 21
63*05767d91SRobert Wubuild_oboe x86 16
64*05767d91SRobert Wubuild_oboe x86_64 21
65*05767d91SRobert Wu
66*05767d91SRobert Wu# Currently unsupported ABIs
67*05767d91SRobert Wu# build_oboe armeabi 16 - This was deprecated in Android 16 and removed in 17
68*05767d91SRobert Wu# build_oboe mips 21 - This was deprecated in Android 16 and removed in 17
69*05767d91SRobert Wu# build_oboe mips64
70