| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- name: Build
- on:
- workflow_dispatch:
- push:
- branches:
- - 'main'
- paths-ignore:
- - '*.md'
- pull_request:
- paths-ignore:
- - '*.md'
- jobs:
- windows:
- runs-on: windows-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v5
- - name: Get CMake
- uses: lukka/[email protected]
-
- - name: Configure win-x64
- run: cmake -S "." -B "build_win_64" -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE:String=Distribution -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-x64
- run: cmake --build build_win_64 --config Distribution
- - name: Configure win-x64 double
- run: cmake -S "." -B "build_win_64_double" -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE:String=Distribution -DDOUBLE_PRECISION=ON -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-x64 double
- run: cmake --build build_win_64_double --config Distribution
- - name: Configure win-arm64
- run: cmake -S "." -B "build_win_arm64" -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_BUILD_TYPE:String=Distribution -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-arm64
- run: cmake --build build_win_arm64 --config Distribution
- - name: Configure win-arm64 double
- run: cmake -S "." -B "build_win_arm64_double" -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_BUILD_TYPE:String=Distribution -DDOUBLE_PRECISION=ON -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-arm64 double
- run: cmake --build build_win_arm64_double --config Distribution
-
- - name: Configure win-x64 Debug
- run: cmake -S "." -B "build_win_64" -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE:String=Debug -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-x64 Debug
- run: cmake --build build_win_64 --config Debug
- - name: Configure win-x64 double Debug
- run: cmake -S "." -B "build_win_64_double" -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE:String=Debug -DDOUBLE_PRECISION=ON -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-x64 double Debug
- run: cmake --build build_win_64_double --config Debug
- - name: Configure win-arm64 Debug
- run: cmake -S "." -B "build_win_arm64" -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_BUILD_TYPE:String=Debug -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-arm64 Debug
- run: cmake --build build_win_arm64 --config Debug
- - name: Configure win-arm64 double Debug
- run: cmake -S "." -B "build_win_arm64_double" -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_BUILD_TYPE:String=Debug -DDOUBLE_PRECISION=ON -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build win-arm64 double Debug
- run: cmake --build build_win_arm64_double --config Debug
- - name: Package Windows
- run: |
- mkdir bin/win-x64
- mkdir bin/win-arm64
- mv build_win_64\bin\Distribution\joltc.dll bin/win-x64
- mv build_win_64\bin\Debug\joltcd.dll bin/win-x64
- mv build_win_64\bin\Debug\joltcd.pdb bin/win-x64
- mv build_win_64_double\bin\Distribution\joltc_double.dll bin/win-x64
- mv build_win_64_double\bin\Debug\joltc_doubled.dll bin/win-x64
- mv build_win_64_double\bin\Debug\joltc_doubled.pdb bin/win-x64
- mv build_win_arm64\bin\Distribution\joltc.dll bin/win-arm64
- mv build_win_arm64\bin\Debug\joltcd.dll bin/win-arm64
- mv build_win_arm64\bin\Debug\joltcd.pdb bin/win-arm64
- mv build_win_arm64_double\bin\Distribution\joltc_double.dll bin/win-arm64
- mv build_win_arm64_double\bin\Debug\joltc_doubled.dll bin/win-arm64
- mv build_win_arm64_double\bin\Debug\joltc_doubled.pdb bin/win-arm64
- - uses: actions/upload-artifact@v4
- with:
- name: libs_windows
- path: bin
- linux:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v5
- - name: Get CMake
- uses: lukka/[email protected]
- - name: Install dependencies on Ubuntu
- run: |
- sudo apt-get update
- sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu llvm
- # Linux
- - name: CMake Configure (linux-x64)
- run: cmake -S "." -B "build_linux_x64" -G Ninja -DCMAKE_BUILD_TYPE=Distribution -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build linux-x64
- run: cmake --build build_linux_x64 --config Distribution --verbose --parallel
- - name: CMake Configure (linux-arm64)
- run: cmake -S "." -B "build_linux_arm64" -G Ninja -DCMAKE_BUILD_TYPE=Distribution -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build linux-arm64
- run: cmake --build build_linux_arm64 --config Distribution --verbose --parallel
-
- - name: CMake Configure (linux-x64) Debug
- run: cmake -S "." -B "build_linux_x64" -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build linux-x64 Debug
- run: cmake --build build_linux_x64 --config Debug --verbose --parallel
- - name: CMake Configure (linux-arm64) Debug
- run: cmake -S "." -B "build_linux_arm64" -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build linux-arm64 Debug
- run: cmake --build build_linux_arm64 --config Debug --verbose --parallel
- # Android
- - name: Setup Android NDK
- id: setup-ndk
- uses: nttld/setup-ndk@v1
- with:
- ndk-version: r25
- add-to-path: false
- env:
- ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
- - name: CMake Configure (android-arm64-v8a)
- run: >
- cmake -S "." -B "build_android_arm64_v8a"
- -DANDROID_ABI=arm64-v8a
- -DCMAKE_BUILD_TYPE=Distribution
- -DANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}
- -DCMAKE_TOOLCHAIN_FILE="${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
- -DCMAKE_INSTALL_PREFIX:String="SDK"
- -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
- - name: Build (android-arm64-v8a)
- run: cmake --build build_android_arm64_v8a --config Distribution --verbose --parallel
- - name: CMake Configure (android-armeabi-v7a)
- run: >
- cmake -S "." -B "build_android_armeabi_v7a"
- -DANDROID_ABI=armeabi-v7a
- -DCMAKE_BUILD_TYPE=Distribution
- -DANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}
- -DCMAKE_TOOLCHAIN_FILE="${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
- -DCMAKE_INSTALL_PREFIX:String="SDK"
- -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
- - name: Build (android-armeabi-v7a)
- run: cmake --build build_android_armeabi_v7a --config Distribution --verbose --parallel
- - name: CMake Configure (android-x86_64)
- run: >
- cmake -S "." -B "build_android_x86_64"
- -DANDROID_ABI=x86_64
- -DCMAKE_BUILD_TYPE=Distribution
- -DANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}
- -DCMAKE_TOOLCHAIN_FILE="${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
- -DCMAKE_INSTALL_PREFIX:String="SDK"
- -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
- - name: Build (android-armeabi-v7a)
- run: cmake --build build_android_x86_64 --config Distribution --verbose --parallel
- - name: CMake Configure (android-arm64-v8a) Debug
- run: >
- cmake -S "." -B "build_android_arm64_v8a"
- -DANDROID_ABI=arm64-v8a
- -DCMAKE_BUILD_TYPE=Debug
- -DANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}
- -DCMAKE_TOOLCHAIN_FILE="${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
- -DCMAKE_INSTALL_PREFIX:String="SDK"
- -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
- - name: Build (android-arm64-v8a) Debug
- run: cmake --build build_android_arm64_v8a --config Debug --verbose --parallel
- - name: CMake Configure (android-armeabi-v7a) Debug
- run: >
- cmake -S "." -B "build_android_armeabi_v7a"
- -DANDROID_ABI=armeabi-v7a
- -DCMAKE_BUILD_TYPE=Debug
- -DANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}
- -DCMAKE_TOOLCHAIN_FILE="${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
- -DCMAKE_INSTALL_PREFIX:String="SDK"
- -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
- - name: Build (android-armeabi-v7a) Debug
- run: cmake --build build_android_armeabi_v7a --config Debug --verbose --parallel
- - name: CMake Configure (android-x86_64) Debug
- run: >
- cmake -S "." -B "build_android_x86_64"
- -DANDROID_ABI=x86_64
- -DCMAKE_BUILD_TYPE=Debug
- -DANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}
- -DCMAKE_TOOLCHAIN_FILE="${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
- -DCMAKE_INSTALL_PREFIX:String="SDK"
- -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
- - name: Build (android-armeabi-v7a) Debug
- run: cmake --build build_android_x86_64 --config Debug --verbose --parallel
- # Linux and Android artifacts
- - name: Package Linux and Android
- run: |
- mkdir -p bin/linux-x64
- mkdir -p bin/linux-arm64
- mkdir -p bin/android-arm64
- mkdir -p bin/android-arm
- mkdir -p bin/android-x64
- mv build_linux_x64/lib/libjoltc.so bin/linux-x64/libjoltc.so
- mv build_linux_arm64/lib/libjoltc.so bin/linux-arm64/libjoltc.so
- mv build_android_arm64_v8a/lib/libjoltc.so bin/android-arm64/libjoltc.so
- mv build_android_armeabi_v7a/lib/libjoltc.so bin/android-arm/libjoltc.so
- mv build_android_x86_64/lib/libjoltc.so bin/android-x64/libjoltc.so
- mv build_linux_x64/lib/libjoltcd.so bin/linux-x64/libjoltcd.so
- mv build_linux_arm64/lib/libjoltcd.so bin/linux-arm64/libjoltcd.so
- mv build_android_arm64_v8a/lib/libjoltcd.so bin/android-arm64/libjoltcd.so
- mv build_android_armeabi_v7a/lib/libjoltcd.so bin/android-arm/libjoltcd.so
- mv build_android_x86_64/lib/libjoltcd.so bin/android-x64/libjoltcd.so
- llvm-strip --strip-unneeded bin/linux-x64/libjoltc.so
- llvm-strip --strip-unneeded bin/linux-arm64/libjoltc.so
- llvm-strip --strip-unneeded bin/android-arm/libjoltc.so
- llvm-strip --strip-unneeded bin/android-arm64/libjoltc.so
- llvm-strip --strip-unneeded bin/android-x64/libjoltc.so
- - uses: actions/upload-artifact@v4
- with:
- name: libs_linux
- path: bin
- macos:
- runs-on: macos-latest
- steps:
- - uses: actions/checkout@v5
- - name: Get CMake
- uses: lukka/[email protected]
- - name: Configure osx-universal
- run: cmake -S "." -B "build_osx" -G Ninja -DCMAKE_BUILD_TYPE=Distribution -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build osx-universal
- run: cmake --build build_osx --config Distribution --verbose --parallel
- - name: Configure osx-universal Debug
- run: cmake -S "." -B "build_osx" -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_INSTALL_PREFIX:String="SDK"
- - name: Build osx-universal Debug
- run: cmake --build build_osx --config Debug --verbose --parallel
- # macOS artifacts
- - name: package_osx
- run: |
- mkdir -p bin/osx
- mv build_osx/lib/libjoltc.dylib bin/osx/libjoltc.dylib
- mv build_osx/lib/libjoltcd.dylib bin/osx/libjoltcd.dylib
- - uses: actions/upload-artifact@v4
- with:
- name: libs_osx
- path: bin
- combine:
- name: Combine artifacts
- runs-on: ubuntu-latest
- needs: [windows, linux, macos]
- steps:
- - name: Download artifacts
- uses: actions/download-artifact@v4
- with:
- path: artifacts
- - name: Display structure of downloaded files
- run: ls -R
- working-directory: artifacts
- - name: Combine
- run: |
- mkdir jolt_libs
- cp -r artifacts/libs_windows/* jolt_libs
- cp -r artifacts/libs_linux/* jolt_libs
- cp -r artifacts/libs_osx/* jolt_libs
- - uses: edgarrc/action-7z@v1
- with:
- args: 7z a -t7z jolt_libs.7z ./jolt_libs/
- - uses: AButler/[email protected]
- if: github.event_name == 'release' && github.event.action == 'created'
- with:
- files: jolt_libs.zip
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- - uses: actions/upload-artifact@v4
- with:
- name: 'Build Artifacts'
- path: jolt_libs.7z
- - uses: geekyeggo/delete-artifact@v5
- with:
- name: |
- libs_windows
- libs_linux
- libs_osx
|