diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aaf2bff..7cc51e5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,39 +16,43 @@ jobs: fail-fast: false matrix: confs: - - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x86, mode: debug, test: true, } - - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x86, mode: releasedbg, test: true, } - - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x64, mode: debug, test: true, } - - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x64, mode: releasedbg, test: true, } - - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: arm64, mode: debug, test: false, } - - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: arm64, mode: releasedbg, test: false, } - - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: i686, mode: debug, test: true, msystem: mingw32 } - - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: i686, mode: releasedbg, test: true, msystem: mingw32 } - - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: x86_64, mode: debug, test: true, msystem: mingw64 } - - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: x86_64, mode: releasedbg, test: true, msystem: mingw64 } - - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, } - - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, config: --asan=y } - - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, config: --lsan=y } - - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, config: --tsan=y } - - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: releasedbg, test: true, } - - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: debug, test: false, ndk_ver: 25c, ndk_sdkver: 28 } - - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: releasedbg, test: false, ndk_ver: 25c, ndk_sdkver: 28 } - - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: debug, test: false, ndk_ver: 25c, ndk_sdkver: 28 } - - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: releasedbg, test: false, ndk_ver: 25c, ndk_sdkver: 28 } - - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: debug, test: false, ndk_ver: 26b, ndk_sdkver: 28 } - - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: releasedbg, test: false, ndk_ver: 26b, ndk_sdkver: 28 } - - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: debug, test: false, ndk_ver: 26b, ndk_sdkver: 28 } - - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: releasedbg, test: false, ndk_ver: 26b, ndk_sdkver: 28 } - - { name: macOS x86_64, runner: macos-latest, shell: bash, plat: macosx, arch: x86_64, mode: debug, test: true, } - - { name: macOS x86_64, runner: macos-latest, shell: bash, plat: macosx, arch: x86_64, mode: releasedbg, test: true, } - - { name: macOS ARM64, runner: macos-14, shell: bash, plat: macosx, arch: arm64, mode: debug, test: true, } - - { name: macOS ARM64, runner: macos-14, shell: bash, plat: macosx, arch: arm64, mode: releasedbg, test: true, } - - { name: iOS, runner: macos-latest, shell: bash, plat: iphoneos, arch: arm64, mode: debug, test: false, } - - { name: iOS, runner: macos-latest, shell: bash, plat: iphoneos, arch: arm64, mode: releasedbg, test: false, } - - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm32, mode: debug, test: false, } - - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm32, mode: releasedbg, test: false, } - - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm64, mode: debug, test: false, } - - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm64, mode: releasedbg, test: false, } + - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x86, mode: debug, test: true, } + - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x86, mode: releasedbg, test: true, } + - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x64, mode: debug, test: true, } + - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: x64, mode: releasedbg, test: true, } + - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: arm64, mode: debug, test: false, } + - { name: Windows, runner: windows-latest, shell: pwsh, plat: windows, arch: arm64, mode: releasedbg, test: false, } + - { name: Windows (Clang), runner: windows-latest, shell: pwsh, plat: windows, arch: x86, mode: debug, test: true, config: --toolchain=clang, cache_key: -clang } + - { name: Windows (Clang), runner: windows-latest, shell: pwsh, plat: windows, arch: x86, mode: releasedbg, test: true, config: --toolchain=clang, cache_key: -clang } + - { name: Windows (Clang), runner: windows-latest, shell: pwsh, plat: windows, arch: x64, mode: debug, test: true, config: --toolchain=clang, cache_key: -clang } + - { name: Windows (Clang), runner: windows-latest, shell: pwsh, plat: windows, arch: x64, mode: releasedbg, test: true, config: --toolchain=clang, cache_key: -clang } + - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: i686, mode: debug, test: true, msystem: mingw32 } + - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: i686, mode: releasedbg, test: true, msystem: mingw32 } + - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: x86_64, mode: debug, test: true, msystem: mingw64 } + - { name: MinGW, runner: windows-latest, shell: 'msys2 {0}', plat: mingw, arch: x86_64, mode: releasedbg, test: true, msystem: mingw64 } + - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, } + - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, config: --asan=y } + - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, config: --lsan=y } + - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: debug, test: true, config: --tsan=y } + - { name: Linux, runner: ubuntu-latest, shell: bash, plat: linux, arch: x86_64, mode: releasedbg, test: true, } + - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: debug, test: false, ndk_ver: 25c, ndk_sdkver: 28 } + - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: releasedbg, test: false, ndk_ver: 25c, ndk_sdkver: 28 } + - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: debug, test: false, ndk_ver: 25c, ndk_sdkver: 28 } + - { name: Android NDK 25c, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: releasedbg, test: false, ndk_ver: 25c, ndk_sdkver: 28 } + - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: debug, test: false, ndk_ver: 26b, ndk_sdkver: 28 } + - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: armeabi-v7a, mode: releasedbg, test: false, ndk_ver: 26b, ndk_sdkver: 28 } + - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: debug, test: false, ndk_ver: 26b, ndk_sdkver: 28 } + - { name: Android NDK 26b, runner: ubuntu-latest, shell: bash, plat: android, arch: arm64-v8a, mode: releasedbg, test: false, ndk_ver: 26b, ndk_sdkver: 28 } + - { name: macOS x86_64, runner: macos-latest, shell: bash, plat: macosx, arch: x86_64, mode: debug, test: true, } + - { name: macOS x86_64, runner: macos-latest, shell: bash, plat: macosx, arch: x86_64, mode: releasedbg, test: true, } + - { name: macOS ARM64, runner: macos-14, shell: bash, plat: macosx, arch: arm64, mode: debug, test: true, } + - { name: macOS ARM64, runner: macos-14, shell: bash, plat: macosx, arch: arm64, mode: releasedbg, test: true, } + - { name: iOS, runner: macos-latest, shell: bash, plat: iphoneos, arch: arm64, mode: debug, test: false, } + - { name: iOS, runner: macos-latest, shell: bash, plat: iphoneos, arch: arm64, mode: releasedbg, test: false, } + - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm32, mode: debug, test: false, } + - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm32, mode: releasedbg, test: false, } + - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm64, mode: debug, test: false, } + - { name: Emscripten, runner: ubuntu-latest, shell: bash, plat: wasm, arch: wasm64, mode: releasedbg, test: false, } cxxver: [cxx17, cxx20, cxxlatest] defaults: @@ -122,7 +126,7 @@ jobs: uses: actions/cache/restore@v4 with: path: ${{ env.XMAKE_GLOBALDIR }}/.xmake/packages - key: ${{ matrix.confs.plat }}-${{ matrix.confs.arch }}-${{ matrix.confs.mode }}-${{ steps.dep_hash.outputs.hash }}-W${{ steps.cache_key.outputs.key }} + key: ${{ matrix.confs.plat }}-${{ matrix.confs.arch }}-${{ matrix.confs.mode }}-${{ steps.dep_hash.outputs.hash }}${{ matrix.confs.cache_key }}-W${{ steps.cache_key.outputs.key }} # Setup compilation mode and install project dependencies - name: Configure xmake and install dependencies