A build script for Linux has been added which simplifies the process of
creating an APK.

Any recent toolchain (released in 2018 or later) should work.  The steps
using build-tools have been hard coded to 26.0.1, but could be made
configurable, or update the script to point to installed version.

Tested with NDK r18b.

$ sudo apt-get install openjdk-8-jdk
$ export ANDROID_SDK=/path/to/Android/Sdk
$ export ANDROID_NDK=/path/to/Android/Sdk/ndk-bundle
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$ cd android
$ ./build.sh
$ adb install glmark2.apk

Building using the SDK and NDK
------------------------------

Note: These build steps require older SDK and NDK.  Later revisions have
removed the android and ant scripts.

To build and install glmark2 you need the Android SDK and NDK. The 'android',
'adb' and 'ndk-build' tools used below are included there.

To build glmark2 for Android we start by building the native part:

$ cd android
$ ndk-build

To continue building the package from the command line:

$ android update project -p . -s -t <target> (where target, e.g., android-10)
$ ant debug {or release}

To install to a device, you need to have set up an ADB connection
to the device. Then do:

$ adb install bin/Glmark2-debug.apk

Alternatively you can load the project (in the android/ directory) in Eclipse
using the ADT plugin and manage the build and install process from there.  Keep
in mind that when updating the native build (ndk-build etc) you need to refresh
the Eclipse project, otherwise it won't notice that something has changed.

Building using the Android build system
---------------------------------------

Copy the glmark2 source tree to somewhere the Android build system can access
it (eg external/glmark2) and build the GLMark2 module:

$ make GLMark2
