Hey @Catharsis, here's a plan for what needs to be done:
1) Decide which ABI(s) we're going to support. I'd be happy with arm64-v8a and nothing else.
2) Cross-compile LWJGL natives to the target ABI(s).
This is the part I need more help with. The LWJGL build process uses Travis CI
for the Linux binaries. The source code for each project is under the LWJGL-CI
account on GitHub. Each repository has two branches (one for Linux x64 and one for macOS) with an appropriate .travis.yml script that performs the corresponding build. We'll need the same thing for Android (and Raspberry Pi builds later). Basically, a new branch must be created (e.g. master-android-arm64-v8a), which is exactly the same as the other two, except the contents of .travis.yml. The difficulty lies in getting Travis CI to cross-compile for our target ABI.
3) Change LWJGL so that it supports the new platform/ABI. (should be easy)
4) Test, fix, test, etc. (someone with Android dev experience: please contribute any information you might have!)
5) Deploy the new platform/ABI to Maven and the LWJGL site. (should be easy)
If this gets hard, we can focus on some LWJGL modules and skip the rest. At a minimum, we'll need:
- LWJGL core
- dyncall (the core depends on it)
Good to have:
- OpenAL for audio
When building the core, unnecessary bindings can be disabled in /config/build-bindings.xml.
We should probably move this discussion to GitHub or the LWJGL on Slack