refactor: modularize main.c into structured core helpers and restore … #213
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Android Build | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| on: | |
| push: | |
| branches: [ "main", "master" ] | |
| pull_request: | |
| branches: [ "main", "master" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: gradle | |
| - name: Setup Android SDK | |
| uses: android-actions/setup-android@v2 | |
| - name: Cache NDK | |
| uses: actions/cache@v4 | |
| id: cache-ndk | |
| with: | |
| path: /usr/local/lib/android/sdk/ndk/25.1.8937393 | |
| key: ${{ runner.os }}-ndk-25.1.8937393 | |
| - name: Install NDK | |
| if: steps.cache-ndk.outputs.cache-hit != 'true' | |
| run: echo "y" | sudo /usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager --install "ndk;25.1.8937393" | |
| - name: Checkout Raylib | |
| run: | | |
| git clone https://github.com/raysan5/raylib.git raylib-src | |
| cd raylib-src | |
| git checkout 5.0 | |
| - name: Build Raylib Android (arm64-v8a) | |
| run: | | |
| cd raylib-src/src | |
| make PLATFORM=PLATFORM_ANDROID ANDROID_NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 ANDROID_ARCH=arm64 ANDROID_API_VERSION=21 | |
| mkdir -p ../../platform/android/app/src/main/jniLibs/arm64-v8a | |
| cp libraylib.a ../../platform/android/app/src/main/jniLibs/arm64-v8a/ | |
| - name: Build Raylib Android (armeabi-v7a) | |
| run: | | |
| cd raylib-src/src | |
| make clean | |
| make PLATFORM=PLATFORM_ANDROID ANDROID_NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 ANDROID_ARCH=arm ANDROID_API_VERSION=21 | |
| mkdir -p ../../platform/android/app/src/main/jniLibs/armeabi-v7a | |
| cp libraylib.a ../../platform/android/app/src/main/jniLibs/armeabi-v7a/ | |
| - name: Build Raylib Android (x86_64) | |
| run: | | |
| cd raylib-src/src | |
| make clean | |
| make PLATFORM=PLATFORM_ANDROID ANDROID_NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 ANDROID_ARCH=x86_64 ANDROID_API_VERSION=21 | |
| mkdir -p ../../platform/android/app/src/main/jniLibs/x86_64 | |
| cp libraylib.a ../../platform/android/app/src/main/jniLibs/x86_64/ | |
| - name: Copy Android NDK Glue | |
| run: | | |
| mkdir -p platform/android/app/src/main/cpp | |
| cp /usr/local/lib/android/sdk/ndk/25.1.8937393/sources/android/native_app_glue/android_native_app_glue.c platform/android/app/src/main/cpp/ | |
| cp /usr/local/lib/android/sdk/ndk/25.1.8937393/sources/android/native_app_glue/android_native_app_glue.h platform/android/app/src/main/cpp/ | |
| - name: Bundle Assets | |
| run: | | |
| gcc tools/bin2c.c -o tools/bin2c | |
| gcc tools/gen_splash_bundle.c -o tools/gen_splash_bundle | |
| rm -f src/ui/components/assets_bundle.h | |
| echo "#ifndef ASSETS_BUNDLE_H" > src/ui/components/assets_bundle.h | |
| echo "#define ASSETS_BUNDLE_H" >> src/ui/components/assets_bundle.h | |
| ./tools/bin2c "assets/fonts/otfs/Font Awesome 5 Free-Solid-900.otf" src/ui/components/assets_bundle.h font_awesome_solid append | |
| ./tools/bin2c "assets/fonts/otfs/Font Awesome 5 Free-Regular-400.otf" src/ui/components/assets_bundle.h font_awesome_regular append | |
| ./tools/bin2c "assets/fonts/otfs/Font Awesome 5 Brands-Regular-400.otf" src/ui/components/assets_bundle.h font_awesome_brand append | |
| ./tools/bin2c "assets/splash.png" src/ui/components/assets_bundle.h unx_logo append | |
| ./tools/bin2c "assets/icons/crown.png" src/ui/components/assets_bundle.h icon_crown append | |
| ./tools/bin2c "assets/icons/star.png" src/ui/components/assets_bundle.h icon_star append | |
| ./tools/gen_splash_bundle assets/splash src/ui/components/splash_bundle_tmp.h | |
| cat src/ui/components/splash_bundle_tmp.h >> src/ui/components/assets_bundle.h | |
| echo "#endif" >> src/ui/components/assets_bundle.h | |
| - name: Prepare Android Assets | |
| run: | | |
| mkdir -p platform/android/app/src/main/assets/controllers | |
| cp -r assets/* platform/android/app/src/main/assets/ | |
| cp -r controllers/* platform/android/app/src/main/assets/controllers/ | |
| rm -rf platform/android/app/src/main/assets/app_icons | |
| - name: Create CMakeLists.txt for App | |
| run: | | |
| cat << 'EOF' > platform/android/app/CMakeLists.txt | |
| cmake_minimum_required(VERSION 3.18.1) | |
| project(xdjunx) | |
| set(CMAKE_CXX_STANDARD 20) | |
| set(CMAKE_C_STANDARD 11) | |
| set(PROJECT_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../src") | |
| set(PROJECT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../lib") | |
| include_directories( | |
| ${PROJECT_SRC_DIR} | |
| ${PROJECT_SRC_DIR}/core | |
| ${PROJECT_SRC_DIR}/engine | |
| ${PROJECT_LIB_DIR} | |
| ${PROJECT_LIB_DIR}/kaitai | |
| ${PROJECT_LIB_DIR}/rekordbox-metadata | |
| ${PROJECT_LIB_DIR}/soundtouch | |
| ${CMAKE_CURRENT_SOURCE_DIR}/../../../raylib-src/src | |
| src/main/cpp | |
| ) | |
| file(GLOB_RECURSE SRC_FILES | |
| "${PROJECT_SRC_DIR}/*.c" | |
| "${PROJECT_SRC_DIR}/*.cpp" | |
| "${PROJECT_LIB_DIR}/kaitai/kaitai/kaitaistream.cpp" | |
| "${PROJECT_LIB_DIR}/rekordbox-metadata/*.cpp" | |
| "${PROJECT_LIB_DIR}/serato/*.cpp" | |
| "${PROJECT_LIB_DIR}/soundtouch/*.cpp" | |
| ) | |
| # Exclude platform specific | |
| list(FILTER SRC_FILES EXCLUDE REGEX "midi_backend_win.c") | |
| list(FILTER SRC_FILES EXCLUDE REGEX "system_windows.c") | |
| list(FILTER SRC_FILES EXCLUDE REGEX "hid_backend_win.c") | |
| add_definitions(-DKS_STR_ENCODING_NONE) | |
| add_library(xdjunx SHARED ${SRC_FILES} src/main/cpp/android_native_app_glue.c) | |
| find_library(log-lib log) | |
| find_library(android-lib android) | |
| find_library(egl-lib EGL) | |
| find_library(gles-lib GLESv2) | |
| target_link_libraries(xdjunx ${log-lib} ${android-lib} ${egl-lib} ${gles-lib} m ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libraylib.a) | |
| EOF | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| with: | |
| gradle-version: 8.7 | |
| - name: Build APK with Gradle | |
| run: | | |
| cd platform/android | |
| gradle assembleDebug | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: UNX-ENGINE-Android-Universal-API21-to-API35 | |
| path: platform/android/app/build/outputs/apk/debug/app-debug.apk |