Maelstrom: Added Android build system

https://github.com/libsdl-org/Maelstrom/commit/6f6df9568d3ba7cff4da76fad165f19207596f64

From 6f6df9568d3ba7cff4da76fad165f19207596f64 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 5 Nov 2012 01:00:36 -0800
Subject: [PATCH] Added Android build system

---
 android-project/AndroidManifest.xml           |  26 +
 android-project/ant.properties                |  17 +
 android-project/assets                        |   1 +
 android-project/build.xml                     |  92 +++
 android-project/jni/Android.mk                |   1 +
 android-project/jni/Application.mk            |   4 +
 android-project/jni/SDL                       |   1 +
 android-project/jni/SDL_image                 |   1 +
 android-project/jni/SDL_net                   |   1 +
 android-project/jni/SDL_ttf                   |   1 +
 android-project/jni/jpeg                      |   1 +
 android-project/jni/png                       |   1 +
 android-project/jni/src/Android.mk            |  79 ++
 android-project/local.properties              |  10 +
 android-project/proguard-project.txt          |  20 +
 android-project/project.properties            |  14 +
 .../res/drawable-hdpi/ic_launcher.png         | Bin 0 -> 12034 bytes
 .../res/drawable-ldpi/ic_launcher.png         | Bin 0 -> 2364 bytes
 .../res/drawable-mdpi/ic_launcher.png         | Bin 0 -> 3823 bytes
 .../res/drawable-xhdpi/ic_launcher.png        | Bin 0 -> 12957 bytes
 android-project/res/layout/main.xml           |  13 +
 android-project/res/values/strings.xml        |   3 +
 .../com/ambrosiasw/maelstrom/Maelstrom.java   |  18 +
 .../src/org/libsdl/app/SDLActivity.java       | 765 ++++++++++++++++++
 24 files changed, 1069 insertions(+)
 create mode 100644 android-project/AndroidManifest.xml
 create mode 100644 android-project/ant.properties
 create mode 120000 android-project/assets
 create mode 100644 android-project/build.xml
 create mode 100644 android-project/jni/Android.mk
 create mode 100644 android-project/jni/Application.mk
 create mode 120000 android-project/jni/SDL
 create mode 120000 android-project/jni/SDL_image
 create mode 120000 android-project/jni/SDL_net
 create mode 120000 android-project/jni/SDL_ttf
 create mode 120000 android-project/jni/jpeg
 create mode 120000 android-project/jni/png
 create mode 100644 android-project/jni/src/Android.mk
 create mode 100644 android-project/local.properties
 create mode 100644 android-project/proguard-project.txt
 create mode 100644 android-project/project.properties
 create mode 100644 android-project/res/drawable-hdpi/ic_launcher.png
 create mode 100644 android-project/res/drawable-ldpi/ic_launcher.png
 create mode 100644 android-project/res/drawable-mdpi/ic_launcher.png
 create mode 100644 android-project/res/drawable-xhdpi/ic_launcher.png
 create mode 100644 android-project/res/layout/main.xml
 create mode 100644 android-project/res/values/strings.xml
 create mode 100644 android-project/src/com/ambrosiasw/maelstrom/Maelstrom.java
 create mode 100644 android-project/src/org/libsdl/app/SDLActivity.java

diff --git a/android-project/AndroidManifest.xml b/android-project/AndroidManifest.xml
new file mode 100644
index 00000000..10997175
--- /dev/null
+++ b/android-project/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+      package="com.ambrosiasw.maelstrom"
+      android:versionCode="1"
+      android:versionName="1.0"
+      android:installLocation="auto">
+
+    <application android:label="@string/app_name"
+                 android:icon="@drawable/ic_launcher"
+	         android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+                 android:debuggable="true">
+        <activity android:name="Maelstrom"
+                  android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <!-- Android 2.1 -->
+    <uses-sdk android:minSdkVersion="10" /> 
+
+    <!-- OpenGL ES 2.0 -->
+    <uses-feature android:glEsVersion="0x00020000" /> 
+</manifest> 
diff --git a/android-project/ant.properties b/android-project/ant.properties
new file mode 100644
index 00000000..b0971e89
--- /dev/null
+++ b/android-project/ant.properties
@@ -0,0 +1,17 @@
+# This file is used to override default values used by the Ant build system.
+#
+# This file must be checked into Version Control Systems, as it is
+# integral to the build system of your project.
+
+# This file is only used by the Ant script.
+
+# You can use this to override default values such as
+#  'source.dir' for the location of your java source folder and
+#  'out.dir' for the location of your output folder.
+
+# You can also use it define how the release builds are signed by declaring
+# the following properties:
+#  'key.store' for the location of your keystore and
+#  'key.alias' for the name of the key to use.
+# The password will be asked during the build when you use the 'release' target.
+
diff --git a/android-project/assets b/android-project/assets
new file mode 120000
index 00000000..60797973
--- /dev/null
+++ b/android-project/assets
@@ -0,0 +1 @@
+../Data
\ No newline at end of file
diff --git a/android-project/build.xml b/android-project/build.xml
new file mode 100644
index 00000000..e99a96e0
--- /dev/null
+++ b/android-project/build.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="Maelstrom" default="help">
+
+    <!-- The local.properties file is created and updated by the 'android' tool.
+         It contains the path to the SDK. It should *NOT* be checked into
+         Version Control Systems. -->
+    <property file="local.properties" />
+
+    <!-- The ant.properties file can be created by you. It is only edited by the
+         'android' tool to add properties to it.
+         This is the place to change some Ant specific build properties.
+         Here are some properties you may want to change/update:
+
+         source.dir
+             The name of the source directory. Default is 'src'.
+         out.dir
+             The name of the output directory. Default is 'bin'.
+
+         For other overridable properties, look at the beginning of the rules
+         files in the SDK, at tools/ant/build.xml
+
+         Properties related to the SDK location or the project target should
+         be updated using the 'android' tool with the 'update' action.
+
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems.
+
+         -->
+    <property file="ant.properties" />
+
+    <!-- if sdk.dir was not set from one of the property file, then
+         get it from the ANDROID_HOME env var.
+         This must be done before we load project.properties since
+         the proguard config can use sdk.dir -->
+    <property environment="env" />
+    <condition property="sdk.dir" value="${env.ANDROID_HOME}">
+        <isset property="env.ANDROID_HOME" />
+    </condition>
+
+    <!-- The project.properties file is created and updated by the 'android'
+         tool, as well as ADT.
+
+         This contains project specific properties such as project target, and library
+         dependencies. Lower level build properties are stored in ant.properties
+         (or in .classpath for Eclipse projects).
+
+         This file is an integral part of the build system for your
+         application and should be checked into Version Control Systems. -->
+    <loadproperties srcFile="project.properties" />
+
+    <!-- quick check on sdk.dir -->
+    <fail
+            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
+            unless="sdk.dir"
+    />
+
+    <!--
+        Import per project custom build rules if present at the root of the project.
+        This is the place to put custom intermediary targets such as:
+            -pre-build
+            -pre-compile
+            -post-compile (This is typically used for code obfuscation.
+                           Compiled code location: ${out.classes.absolute.dir}
+                           If this is not done in place, override ${out.dex.input.absolute.dir})
+            -post-package
+            -post-build
+            -pre-clean
+    -->
+    <import file="custom_rules.xml" optional="true" />
+
+    <!-- Import the actual build file.
+
+         To customize existing targets, there are two options:
+         - Customize only one target:
+             - copy/paste the target into this file, *before* the
+               <import> task.
+             - customize it to your needs.
+         - Customize the whole content of build.xml
+             - copy/paste the content of the rules files (minus the top node)
+               into this file, replacing the <import> task.
+             - customize to your needs.
+
+         ***********************
+         ****** IMPORTANT ******
+         ***********************
+         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+         in order to avoid having your file be overridden by tools such as "android update project"
+    -->
+    <!-- version-tag: 1 -->
+    <import file="${sdk.dir}/tools/ant/build.xml" />
+
+</project>
diff --git a/android-project/jni/Android.mk b/android-project/jni/Android.mk
new file mode 100644
index 00000000..5053e7d6
--- /dev/null
+++ b/android-project/jni/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/android-project/jni/Application.mk b/android-project/jni/Application.mk
new file mode 100644
index 00000000..e86b742f
--- /dev/null
+++ b/android-project/jni/Application.mk
@@ -0,0 +1,4 @@
+
+# Uncomment this if you're using STL in your project
+# See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information
+APP_STL := stlport_static 
diff --git a/android-project/jni/SDL b/android-project/jni/SDL
new file mode 120000
index 00000000..3cc0855c
--- /dev/null
+++ b/android-project/jni/SDL
@@ -0,0 +1 @@
+../../../../../../3rdparty/iphone/SDL
\ No newline at end of file
diff --git a/android-project/jni/SDL_image b/android-project/jni/SDL_image
new file mode 120000
index 00000000..aa6ac41d
--- /dev/null
+++ b/android-project/jni/SDL_image
@@ -0,0 +1 @@
+../../../../../../3rdparty/iphone/SDL_image
\ No newline at end of file
diff --git a/android-project/jni/SDL_net b/android-project/jni/SDL_net
new file mode 120000
index 00000000..20a642af
--- /dev/null
+++ b/android-project/jni/SDL_net
@@ -0,0 +1 @@
+../../../../../../3rdparty/iphone/SDL_net
\ No newline at end of file
diff --git a/android-project/jni/SDL_ttf b/android-project/jni/SDL_ttf
new file mode 120000
index 00000000..c9376400
--- /dev/null
+++ b/android-project/jni/SDL_ttf
@@ -0,0 +1 @@
+../../../../../../3rdparty/iphone/SDL_ttf
\ No newline at end of file
diff --git a/android-project/jni/jpeg b/android-project/jni/jpeg
new file mode 120000
index 00000000..d590c402
--- /dev/null
+++ b/android-project/jni/jpeg
@@ -0,0 +1 @@
+../../../../../../3rdparty/iphone/jpeg
\ No newline at end of file
diff --git a/android-project/jni/png b/android-project/jni/png
new file mode 120000
index 00000000..b2e7745d
--- /dev/null
+++ b/android-project/jni/png
@@ -0,0 +1 @@
+../../../../../../3rdparty/iphone/png
\ No newline at end of file
diff --git a/android-project/jni/src/Android.mk b/android-project/jni/src/Android.mk
new file mode 100644
index 00000000..e5913224
--- /dev/null
+++ b/android-project/jni/src/Android.mk
@@ -0,0 +1,79 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := main
+
+SDL_PATH := ../SDL
+SDL_IMAGE_PATH := ../SDL_image
+SDL_NET_PATH := ../SDL_net
+SDL_TTF_PATH := ../SDL_ttf
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include $(LOCAL_PATH)/$(SDL_IMAGE_PATH) $(LOCAL_PATH)/$(SDL_NET_PATH) $(LOCAL_PATH)/$(SDL_TTF_PATH)
+
+# Add your application source files here...
+LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \
+	../../../mainstub.cpp			\
+	../../../game/MacDialog.cpp		\
+	../../../game/MaelstromFeatures.cpp	\
+	../../../game/MaelstromUI.cpp		\
+	../../../game/about.cpp			\
+	../../../game/continue.cpp		\
+	../../../game/controls.cpp		\
+	../../../game/fastrand.cpp		\
+	../../../game/game.cpp			\
+	../../../game/gameinfo.cpp		\
+	../../../game/gameover.cpp		\
+	../../../game/init.cpp			\
+	../../../game/load.cpp			\
+	../../../game/lobby.cpp			\
+	../../../game/main.cpp			\
+	../../../game/make.cpp			\
+	../../../game/myerror.cpp		\
+	../../../game/netplay.cpp		\
+	../../../game/object.cpp		\
+	../../../game/objects.cpp		\
+	../../../game/player.cpp		\
+	../../../game/rect.cpp			\
+	../../../game/replay.cpp		\
+	../../../game/scores.cpp		\
+	../../../maclib/Mac_FontServ.cpp	\
+	../../../maclib/Mac_Sound.cpp		\
+	../../../physfs/archiver_dir.c		\
+	../../../physfs/archiver_zip.c		\
+	../../../physfs/physfs.c		\
+	../../../physfs/physfs_byteorder.c	\
+	../../../physfs/physfs_unicode.c	\
+	../../../physfs/platform_beos.cpp	\
+	../../../physfs/platform_macosx.c	\
+	../../../physfs/platform_posix.c	\
+	../../../physfs/platform_unix.c		\
+	../../../physfs/platform_windows.c	\
+	../../../screenlib/SDL_FrameBuf.cpp	\
+	../../../screenlib/UIArea.cpp		\
+	../../../screenlib/UIBaseElement.cpp	\
+	../../../screenlib/UIContainer.cpp	\
+	../../../screenlib/UIDialog.cpp		\
+	../../../screenlib/UIDialogButton.cpp	\
+	../../../screenlib/UIDrawEngine.cpp	\
+	../../../screenlib/UIElement.cpp	\
+	../../../screenlib/UIElementButton.cpp	\
+	../../../screenlib/UIElementCheckbox.cpp	\
+	../../../screenlib/UIElementEditbox.cpp	\
+	../../../screenlib/UIElementRadio.cpp	\
+	../../../screenlib/UIElementThumbstick.cpp	\
+	../../../screenlib/UIManager.cpp	\
+	../../../screenlib/UIPanel.cpp		\
+	../../../screenlib/UITemplates.cpp	\
+	../../../screenlib/UITexture.cpp	\
+	../../../utils/files.c			\
+	../../../utils/hashtable.c		\
+	../../../utils/loadxml.cpp		\
+	../../../utils/physfsrwops.c		\
+	../../../utils/prefs.cpp	
+
+LOCAL_SHARED_LIBRARIES := SDL2 SDL2_image SDL2_net SDL2_ttf
+
+LOCAL_LDLIBS := -lGLESv1_CM -llog -lz
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/android-project/local.properties b/android-project/local.properties
new file mode 100644
index 00000000..be9e6313
--- /dev/null
+++ b/android-project/local.properties
@@ -0,0 +1,10 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+# 
+# This file must *NOT* be checked in Version Control Systems,
+# as it contains information specific to your local configuration.
+
+# location of the SDK. This is only used by Ant
+# For customization when using a Version Control System, please read the
+# header note.
+sdk.dir=/Users/slouken/android-sdk-macosx
diff --git a/android-project/proguard-project.txt b/android-project/proguard-project.txt
new file mode 100644
index 00000000..f2fe1559
--- /dev/null
+++ b/android-project/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff --git a/android-project/project.properties b/android-project/project.properties
new file mode 100644
index 00000000..b7c2081d
--- /dev/null
+++ b/android-project/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-10
diff --git a/android-project/res/drawable-hdpi/ic_launcher.png b/android-project/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..52d77668db62b62780c29fa6eb63357dc76c470b
GIT binary patch
literal 12034
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

(Patch may be truncated, please check the link at the top of this post.)