1#!/bin/bash
2
3SOURCES=()
4MKSOURCES=""
5CURDIR=`pwd -P`
6
7# Fetch sources
8if [[ $# -ge 2 ]]; then
9    for src in ${@:2}
10    do
11        SOURCES+=($src)
12        MKSOURCES="$MKSOURCES $(basename $src)"
13    done
14else
15    if [ -n "$1" ]; then
16        while read src
17        do
18            SOURCES+=($src)
19            MKSOURCES="$MKSOURCES $(basename $src)"
20        done
21    fi
22fi
23
24if [ -z "$1" ] || [ -z "$SOURCES" ]; then
25    echo "Usage: androidbuild.sh com.yourcompany.yourapp < sources.list"
26    echo "Usage: androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c"
27    echo "To copy SDL source instead of symlinking: COPYSOURCE=1 androidbuild.sh ... "
28    exit 1
29fi
30
31SDLPATH="$( cd "$(dirname "$0")/.." ; pwd -P )"
32
33if [ -z "$ANDROID_HOME" ];then
34    echo "Please set the ANDROID_HOME directory to the path of the Android SDK"
35    exit 1
36fi
37
38if [ ! -d "$ANDROID_HOME/ndk-bundle" -a -z "$ANDROID_NDK_HOME" ]; then
39    echo "Please set the ANDROID_NDK_HOME directory to the path of the Android NDK"
40    exit 1
41fi
42
43APP="$1"
44APPARR=(${APP//./ })
45BUILDPATH="$SDLPATH/build/$APP"
46
47# Start Building
48
49rm -rf $BUILDPATH
50mkdir -p $BUILDPATH
51
52cp -r $SDLPATH/android-project/* $BUILDPATH
53
54# Copy SDL sources
55mkdir -p $BUILDPATH/app/jni/SDL
56if [ -z "$COPYSOURCE" ]; then
57    ln -s $SDLPATH/src $BUILDPATH/app/jni/SDL
58    ln -s $SDLPATH/include $BUILDPATH/app/jni/SDL
59else
60    cp -r $SDLPATH/src $BUILDPATH/app/jni/SDL
61    cp -r $SDLPATH/include $BUILDPATH/app/jni/SDL
62fi
63
64cp -r $SDLPATH/Android.mk $BUILDPATH/app/jni/SDL
65sed -i -e "s|YourSourceHere.c|$MKSOURCES|g" $BUILDPATH/app/jni/src/Android.mk
66sed -i -e "s|org\.libsdl\.app|$APP|g" $BUILDPATH/app/build.gradle
67sed -i -e "s|org\.libsdl\.app|$APP|g" $BUILDPATH/app/src/main/AndroidManifest.xml
68
69# Copy user sources
70for src in "${SOURCES[@]}"
71do
72    cp $src $BUILDPATH/app/jni/src
73done
74
75# Create an inherited Activity
76cd $BUILDPATH/app/src/main/java
77for folder in "${APPARR[@]}"
78do
79    mkdir -p $folder
80    cd $folder
81done
82
83ACTIVITY="${folder}Activity"
84sed -i -e "s|\"SDLActivity\"|\"$ACTIVITY\"|g" $BUILDPATH/app/src/main/AndroidManifest.xml
85
86# Fill in a default Activity
87cat >"$ACTIVITY.java" <<__EOF__
88package $APP;
89
90import org.libsdl.app.SDLActivity;
91
92public class $ACTIVITY extends SDLActivity
93{
94}
95__EOF__
96
97# Update project and build
98echo "To build and install to a device for testing, run the following:"
99echo "cd $BUILDPATH"
100echo "./gradlew installDebug"
101