blob: a80ec76ffdf4e1e63455d912fd972a4a8c8b4ea4 [file] [log] [blame]
#!/bin/bash
# Gamesdk build driver script
# Usage:
# ./build.sh
# Builds the gamesdk with Swappy, Tuning Fork and Oboe (no samples)
# ./build.sh samples
# Builds the gamesdk with Swappy and the Swappy samples
# ./build.sh full
# Builds the gamesdk with Swappy, Tuning Fork, Oboe and all samples
set -e # Exit on error
# Set up the environment
export ANDROID_HOME=$(pwd)/../prebuilts/sdk
export ANDROID_NDK_HOME=$(pwd)/../prebuilts/ndk/r23
export BUILDBOT_SCRIPT=true
export BUILDBOT_CMAKE=$(pwd)/../prebuilts/cmake/linux-x86
export PATH="$PATH:$(pwd)/../prebuilts/ninja/linux-x86/"
cp -Rf samples/sdk_licenses ../prebuilts/sdk/licenses
# Use the distribution path given to the script by the build bot in DIST_DIR. Otherwise,
# build in the default location.
if [[ -z $DIST_DIR ]]
then
dist_dir=$(pwd)/../dist
else
dist_dir=$DIST_DIR
fi
if [ "$(uname)" == "Darwin" ]; then
: # Do nothing but skip the next condition so we don't get a bash warning on macos
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
# Do only for GNU/Linux platform
export JAVA_HOME=$(pwd)/../prebuilts/jdk/jdk11/linux-x86
fi
## Build the Game SDK distribution zip and the zips for Maven AARs
if [[ $1 == "full" ]]
then
package_name=fullsdk
./gradlew packageZip -Plibraries=swappy,tuningfork,game_activity,game_text_input,paddleboat,memory_advice -PincludeSampleSources -PincludeSampleArtifacts -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=swappy -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=tuningfork -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=game_activity -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=game_text_input -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=paddleboat -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=memory_advice -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew jetpadJson -Plibraries=swappy,tuningfork,game_activity,game_text_input,paddleboat,memory_advice -PdistPath="$dist_dir" -PpackageName=$package_name
elif [[ $1 == "samples" ]]
then
package_name=gamesdk
./gradlew packageZip -Plibraries=swappy -PincludeSampleSources -PincludeSampleArtifacts -PdistPath="$dist_dir"
./gradlew packageMavenZip -Plibraries=swappy -PdistPath="$dist_dir"
elif [[ $1 == "maven-only" ]]
then
# Only the Maven artifacts for Jetpack
package_name=gamesdk-maven
./gradlew packageMavenZip -Plibraries=swappy -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=tuningfork -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=game_activity -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=game_text_input -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=paddleboat -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=memory_advice -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew jetpadJson -Plibraries=swappy,tuningfork,game_activity,game_text_input,paddleboat,memory_advice -PdistPath="$dist_dir" -PpackageName=$package_name
else
# The default is to build the express zip
package_name=gamesdk-express
./gradlew packageZip -Plibraries=swappy,tuningfork,game_activity,game_text_input,paddleboat,memory_advice -PincludeSampleSources -PincludeSampleArtifacts -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=swappy -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=tuningfork -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=game_activity -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=game_text_input -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=paddleboat -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew packageMavenZip -Plibraries=memory_advice -PdistPath="$dist_dir" -PpackageName=$package_name
./gradlew jetpadJson -Plibraries=swappy,tuningfork,game_activity,game_text_input,paddleboat,memory_advice -PdistPath="$dist_dir" -PpackageName=$package_name
fi
if [[ $1 != "maven-only" ]]
then
mkdir -p "$dist_dir/$package_name/apks/samples"
mkdir -p "$dist_dir/$package_name/apks/test"
# Add the tuningfork samples and apks into the Game SDK distribution zip
pushd ./samples/tuningfork/insightsdemo/
./gradlew ":app:assembleDebug"
popd
pushd ./samples/tuningfork/experimentsdemo/
./gradlew ":app:assembleDebug"
popd
# Add the swappy samples
pushd samples/bouncyball
./gradlew ":app:assembleDebug"
popd
pushd third_party/cube
./gradlew ":app:assembleDebug"
popd
# Add the memory_advice samples
pushd samples/memory_advice/hogger/
./gradlew ":app:assembleDebug"
popd
# Add the game controller samples
pushd samples/game_controller/
mkdir -p ./third-party
pushd third-party
if [ ! -d "imgui" ] ; then
git clone https://github.com/ocornut/imgui -b v1.89
fi
popd
popd
pushd samples/game_controller/gameactivity
./gradlew ":app:assembleDebug"
popd
pushd samples/game_controller/nativeactivity
./gradlew ":app:assembleDebug"
popd
pushd samples/agdktunnel/third-party/glm
if [ ! -d "glm" ] ; then
git clone https://github.com/g-truc/glm.git
fi
popd
pushd samples/agdktunnel/
./gradlew ":app:assembleDebug"
popd
# Add the game text input samples
pushd samples/game_text_input/game_text_input_testbed
./gradlew ":app:assembleDebug"
popd
cp samples/tuningfork/insightsdemo/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/insightsdemo.apk"
cp samples/tuningfork/experimentsdemo/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/experimentsdemo.apk"
cp samples/game_controller/nativeactivity/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/game_controller_nativeactivity.apk"
cp samples/game_controller/gameactivity/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/game_controller_gameactivity.apk"
cp samples/bouncyball/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/bouncyball.apk"
cp third_party/cube/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/cube.apk"
cp samples/memory_advice/hogger/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/hogger.apk"
cp samples/agdktunnel/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/agdktunnel.apk"
cp samples/game_text_input/game_text_input_testbed/app/build/outputs/apk/debug/app-debug.apk \
"$dist_dir/$package_name/apks/samples/game_text_input.apk"
pushd $dist_dir/$package_name
if [[ -z "$(ls -1 agdk-libraries-*.zip 2>/dev/null | grep agdk)" ]] ; then
echo 'Could not find the zip "agdk-libraries-*.zip".'
exit
fi
zip -ur agdk-libraries-*.zip "apks/samples/insightsdemo.apk"
zip -ur agdk-libraries-*.zip "apks/samples/experimentsdemo.apk"
zip -ur agdk-libraries-*.zip "apks/samples/game_controller_nativeactivity.apk"
zip -ur agdk-libraries-*.zip "apks/samples/game_controller_gameactivity.apk"
zip -ur agdk-libraries-*.zip "apks/samples/bouncyball.apk"
zip -ur agdk-libraries-*.zip "apks/samples/cube.apk"
zip -ur agdk-libraries-*.zip "apks/samples/hogger.apk"
zip -ur agdk-libraries-*.zip "apks/samples/agdktunnel.apk"
zip -ur agdk-libraries-*.zip "apks/samples/game_text_input.apk"
popd
fi
# Calculate hash of the zip file
pushd "$dist_dir/$package_name"
for ZIPNAME in agdk-libraries-*
do
if [[ -e $ZIPNAME ]]
then
sha256sum $ZIPNAME > $ZIPNAME.sha256
fi
break
done
popd
pushd "$dist_dir/$package_name"
# Remove intermediate files that would be very costly to store
rm -rf libs prefab
# Remove other files that we don't care about and are polluting the output
rm -rf external third_party src include samples aar
popd