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