Android
Android build
First, download and install Android NDK r25c or later by unpacking release taken from the Android developer site [1].
To be used, only enviroment variables need to be properly set, as in example:
export PATH="$PATH:/opt/android-ndk" export ANDROID_NDK=/opt/android-ndk export ANDROID_NDK_HOME=/opt/android-ndk
Since there is no precompiled SDL2 for Android we need to prepare that as well. First is to download latest from SDL github [2]. In time of writing version was SDL2-2.26.3, but later version should work fine as well.
Next step is to build SDL2 with Android NDK:
tar xvfz SDL2-2.26.3.tar.gz cd SDL2-2.26.3
To compile for ARM64 (arm64-v8a):
cmake -S . -B build_arm64 \
-DANDROID_PLATFORM=android-24 \
-DANDROID_ABI=arm64-v8a \
-DCMAKE_INSTALL_PREFIX=~/SDL_Android_arm64 \
-DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
-DSDL_SHARED=ON -DSDL_STATIC=ON -DSDL_STATIC_PIC=ON -DSDL_TEST=ON \
-DSDL2_DISABLE_SDL2MAIN=OFF -DSDL2_DISABLE_INSTALL=OFF \
-DCMAKE_INSTALL_INCLUDEDIR=include -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release
make -C build_arm64 install
To compile for Intel x86:
cmake -S . -B build_x86 \
-DANDROID_PLATFORM=android-24 \
-DANDROID_ABI=x86 \
-DCMAKE_INSTALL_PREFIX=~/SDL_Android_x86 \
-DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
-DSDL_SHARED=ON -DSDL_STATIC=ON -DSDL_STATIC_PIC=ON -DSDL_TEST=ON \
-DSDL2_DISABLE_SDL2MAIN=OFF -DSDL2_DISABLE_INSTALL=OFF \
-DCMAKE_INSTALL_INCLUDEDIR=include -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release
make -C build_x86 install
To compile for Intel x86_64:
cmake -S . -B build_x86_64 \
-DANDROID_PLATFORM=android-24 \
-DANDROID_ABI=armeabi-v7a \
-DCMAKE_INSTALL_PREFIX=~/SDL_Android_x86_64 \
-DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
-DSDL_SHARED=ON -DSDL_STATIC=ON -DSDL_STATIC_PIC=ON -DSDL_TEST=ON \
-DSDL2_DISABLE_SDL2MAIN=OFF -DSDL2_DISABLE_INSTALL=OFF \
-DCMAKE_INSTALL_INCLUDEDIR=include -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release
make -C build_x86_64 install
To compile for ARM (armeabi-v7a):
cmake -S . -B build_arm \
-DANDROID_PLATFORM=android-24 \
-DANDROID_ABI=armeabi-v7a \
-DCMAKE_INSTALL_PREFIX=~/SDL_Android_arm \
-DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake" \
-DSDL_SHARED=ON -DSDL_STATIC=ON -DSDL_STATIC_PIC=ON -DSDL_TEST=ON \
-DSDL2_DISABLE_SDL2MAIN=OFF -DSDL2_DISABLE_INSTALL=OFF \
-DCMAKE_INSTALL_INCLUDEDIR=include -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release
make -C build_arm install
After this all is ready for MAME to be built. Note that it can be built for android-arm,
android-arm64, android-x86 and android-x64. If you are testing with emulator you only need
android-x86 build, but for real device nowdays android-arm64 will only be needed, and there
are less and less android-arm.
make SUBTARGET=tiny SDL_INSTALL_ROOT=~/SDL_Android_x86 android-x86 -j9
This prepared binaries, but still we need to deploy application to device. Easiest way is to use Android Studio [3].
All build features are also available using gradle, next set of commands will create debug build and deploy it on connected Android device.
gradlew assembleDebug gradlew installDebug