mirror of
https://github.com/raylib-cs/raylib-cs
synced 2025-09-09 03:01:41 -04:00
build android native libraries
This commit is contained in:
65
.github/workflows/build.yml
vendored
65
.github/workflows/build.yml
vendored
@@ -20,6 +20,50 @@ jobs:
|
|||||||
echo "version=$(sed -n 's/.*<TargetRaylibTag>\(.*\)<\/TargetRaylibTag>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT}
|
echo "version=$(sed -n 's/.*<TargetRaylibTag>\(.*\)<\/TargetRaylibTag>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT}
|
||||||
echo "pkgversion=$(sed -n 's/.*<PackageVersion>\(.*\)<\/PackageVersion>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT}
|
echo "pkgversion=$(sed -n 's/.*<PackageVersion>\(.*\)<\/PackageVersion>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT}
|
||||||
|
|
||||||
|
build-android:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: prepare
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
name: [arm, arm64, x86, x64]
|
||||||
|
include:
|
||||||
|
- name: arm
|
||||||
|
arch: armeabi-v7a
|
||||||
|
- name: arm64
|
||||||
|
arch: arm64-v8a
|
||||||
|
- name: x86
|
||||||
|
arch: x86
|
||||||
|
- name: x64
|
||||||
|
arch: x86_64
|
||||||
|
steps:
|
||||||
|
- name: checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: build raylib
|
||||||
|
env:
|
||||||
|
version: ${{ needs.prepare.outputs.version }}
|
||||||
|
run: |
|
||||||
|
curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip
|
||||||
|
unzip -qq raylib.zip
|
||||||
|
pushd raylib-${version}; patch -p1 < ../android.patch; popd
|
||||||
|
cmake -S raylib-${version} \
|
||||||
|
-B build \
|
||||||
|
-D CMAKE_BUILD_TYPE=Release \
|
||||||
|
-D BUILD_SHARED_LIBS=ON \
|
||||||
|
-D BUILD_EXAMPLES=OFF \
|
||||||
|
-D CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
|
||||||
|
-D PLATFORM=Android \
|
||||||
|
-D ANDROID_ABI=${{ matrix.arch }}
|
||||||
|
cmake --build build --config Release
|
||||||
|
file build/raylib/libraylib.so # TODO: remove me
|
||||||
|
|
||||||
|
- name: upload build
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: android-${{ matrix.name }}
|
||||||
|
path: build/raylib/libraylib.so
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
build-linux:
|
build-linux:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: prepare
|
needs: prepare
|
||||||
@@ -130,6 +174,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
needs:
|
||||||
- prepare
|
- prepare
|
||||||
|
- build-android
|
||||||
- build-linux
|
- build-linux
|
||||||
- build-osx
|
- build-osx
|
||||||
- build-windows
|
- build-windows
|
||||||
@@ -137,6 +182,26 @@ jobs:
|
|||||||
- name: checkout repository
|
- name: checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: android-arm
|
||||||
|
path: Raylib-cs/runtimes/android-arm/native
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: android-arm64
|
||||||
|
path: Raylib-cs/runtimes/android-arm64/native
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: android-x86
|
||||||
|
path: Raylib-cs/runtimes/android-x86/native
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: android-x64
|
||||||
|
path: Raylib-cs/runtimes/android-x64/native
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: linux-x64
|
name: linux-x64
|
||||||
|
24
android.patch
Normal file
24
android.patch
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
diff --git a/src/rcore.c b/src/rcore.c
|
||||||
|
index eae4951..76e26ad 100644
|
||||||
|
--- a/src/rcore.c
|
||||||
|
+++ b/src/rcore.c
|
||||||
|
@@ -709,7 +709,18 @@ const char *TextFormat(const char *text, ...); // Formatting of text with
|
||||||
|
#if defined(PLATFORM_ANDROID)
|
||||||
|
// To allow easier porting to android, we allow the user to define a
|
||||||
|
// main function which we call from android_main, defined by ourselves
|
||||||
|
-extern int main(int argc, char *argv[]);
|
||||||
|
+
|
||||||
|
+typedef void (*RaylibAndroidCallback)();
|
||||||
|
+static RaylibAndroidCallback _androidCallback = NULL;
|
||||||
|
+
|
||||||
|
+void RaylibSetAndroidCallback(RaylibAndroidCallback callback) {
|
||||||
|
+ _androidCallback = callback;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int main(int argc, char *argv[]) {
|
||||||
|
+ while(_androidCallback == NULL) {}
|
||||||
|
+ _androidCallback();
|
||||||
|
+}
|
||||||
|
|
||||||
|
void android_main(struct android_app *app)
|
||||||
|
{
|
Reference in New Issue
Block a user