mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-06-02 03:26:29 +03:00
183 lines
3.0 KiB
Markdown
183 lines
3.0 KiB
Markdown
# premake-androidmk
|
|
|
|
Application.mk & Android.mk generator for Premake5.
|
|
|
|
This module requires the latest premake version to work (5.0.0 alpha5).
|
|
|
|
|
|
## Android.mk API
|
|
|
|
Note : All the fields starting with `ndk` are solution-wide, but filters can be applied.
|
|
|
|
*****
|
|
|
|
`ndkabi` : ABI targets
|
|
|
|
Supported values :
|
|
Wanted ABIs separated by spaces (e.g. `"armeabi x86 mips"`)
|
|
* `armeabi`
|
|
* `armeabi-v7a`
|
|
* `arm64-v8a`
|
|
* `x86`
|
|
* `x86_64`
|
|
* `mips`
|
|
* `mips64`
|
|
|
|
Or one of :
|
|
* `default`
|
|
* `all`
|
|
|
|
*****
|
|
|
|
`ndkplatform` : Android API version
|
|
|
|
Supported values :
|
|
* `default`
|
|
* `android-3`
|
|
* `android-4`
|
|
* `android-5`
|
|
* `android-8`
|
|
* `android-9`
|
|
* `android-12`
|
|
* `android-13`
|
|
* `android-14`
|
|
* `android-15`
|
|
* `android-16`
|
|
* `android-17`
|
|
* `android-18`
|
|
* `android-19`
|
|
* `android-21`
|
|
|
|
*****
|
|
|
|
`ndkstl` : Standard library
|
|
|
|
Supported values :
|
|
* `default`
|
|
* `libstdc++`
|
|
* `gabi++_static`
|
|
* `gabi++_shared`
|
|
* `stlport_static`
|
|
* `stlport_shared`
|
|
* `gnustl_static`
|
|
* `gnustl_shared`
|
|
* `c++_static`
|
|
* `c++_shared`
|
|
|
|
*****
|
|
|
|
`ndktoolchainversion` : Android toolchain version
|
|
|
|
Supported values :
|
|
* `default`
|
|
* `4.8`
|
|
* `4.9`
|
|
* `clang`
|
|
* `clang3.4`
|
|
* `clang3.5`
|
|
|
|
*****
|
|
|
|
`amk_includes` : Include existing Android.mk files
|
|
|
|
Supported values : List of files
|
|
|
|
*****
|
|
|
|
`amk_importmodules` : Import Android.mk modules
|
|
|
|
Supported values : List of strings
|
|
|
|
*****
|
|
|
|
`amk_staticlinks` and `amk_sharedlinks` : Link libs from included Android.mk files and imported modules
|
|
|
|
Supported values : List of libraries
|
|
|
|
If you want to link to system libraries or other projects in the solution, use `links` instead.
|
|
|
|
|
|
|
|
## Premake API support
|
|
|
|
Most functions should work as expected.
|
|
Some limitations apply, for example you cannot change the output folder.
|
|
|
|
`system` and `architecture` are completely ignored.
|
|
|
|
You cannot do per ABI filtering yet, but it's technically doable.
|
|
|
|
Some useful working commands :
|
|
|
|
`rtti "On"` : Enable RTTI
|
|
|
|
`exceptionhandling "On"` : Enable C++ exceptions
|
|
|
|
`flags { "C++11" }` : Enable C++11
|
|
|
|
`optimize "Off"` or `"Debug"` : Enable debug mode (must be used solution-wide)
|
|
|
|
Symbols are always enabled, use ndk-gdb to debug.
|
|
|
|
|
|
## Sample code
|
|
|
|
```lua
|
|
require "androidmk" -- Adjust path if needed
|
|
|
|
solution "MySolution"
|
|
configurations { "Debug", "Release" }
|
|
language "C++"
|
|
|
|
location "android/jni" -- Generate files in android project jni folder (recommended)
|
|
|
|
ndkabi "all"
|
|
ndkplatform "android-12"
|
|
|
|
filter "configurations:Release"
|
|
optimize "On"
|
|
filter "configurations:Debug"
|
|
optimize "Debug"
|
|
|
|
|
|
project "MyProject"
|
|
kind "SharedLib"
|
|
includedirs "SDL2/include"
|
|
files {
|
|
"src/*.cpp",
|
|
"SDL2/src/main/android/SDL_android_main.c",
|
|
}
|
|
|
|
links {
|
|
"GLESv1_CM",
|
|
"GLESv2",
|
|
"log",
|
|
}
|
|
|
|
amk_includes {
|
|
"SDL2/Android.mk",
|
|
}
|
|
|
|
amk_sharedlinks {
|
|
"SDL2",
|
|
}
|
|
```
|
|
|
|
|
|
It is recommended to create an Application.mk file including your generated one :
|
|
|
|
File android/jni/Application.mk :
|
|
```
|
|
include $(call my-dir)/MySolution_Application.mk
|
|
```
|
|
|
|
|
|
Generate command (in android folder) :
|
|
`ndk-build PM5_CONFIG=debug -j`
|
|
|
|
Use your own deploy command, mine is :
|
|
`ant debug`
|
|
|
|
Debug command :
|
|
`ndk-gdb-py --gnumake-flag PM5_CONFIG=debug`
|