diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index aa0368735..3d02e1899 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -86,50 +86,80 @@ jobs: name: '86Box-${{ matrix.build.name }}-MSYS2-${{ matrix.environment.msystem }}-${{ github.sha }}' path: build/artifacts/** - vs2019: - name: VS2019 ${{ matrix.build.name }} ${{ matrix.target-arch }} build (${{ matrix.toolset }}) + llvm-windows: + name: "Windows vcpkg/LLVM (${{ matrix.build }} ${{ matrix.target.name }} NDR=${{ matrix.new-dynarec }})" - runs-on: windows-latest + runs-on: windows-2022 + + env: + VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' strategy: fail-fast: false matrix: - build: - - name: Debug - dev-build: off - new-dynarec: off - type: Debug - - name: Dev - dev-build: on - new-dynarec: on - type: Debug - target-arch: ['Win32', 'x64', 'ARM64'] - toolset: ['clangcl'] + build: [Release, Debug] + new-dynarec: [on, off] + target: + - name: x86 + triplet: x86-windows-static + toolchain: cmake/llvm-win32-i686.cmake + vcvars: x64_x86 + - name: x64 + triplet: x64-windows-static + toolchain: cmake/llvm-win32-x86_64.cmake + vcvars: x64 + - name: ARM64 + triplet: arm64-windows-static + toolchain: cmake/llvm-win32-aarch64.cmake + vcvars: x64_arm64 + include: + - build: Release + strip: --strip exclude: - - target-arch: 'ARM64' - build: - new-dynarec: off + - new-dynarec: off + target: + name: ARM64 steps: - uses: actions/checkout@v2 - - uses: actions/cache@v2 - with: - path: build/vcpkg_installed - key: vcpkg-${{ hashFiles('vcpkg.json') }}-${{ matrix.target-arch }} + - name: Download Ninja + run: > + Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip -OutFile ninja-win.zip && + Expand-Archive ninja-win.zip -DestinationPath . + - name: Setup NuGet Credentials + run: > + & (C:/vcpkg/vcpkg fetch nuget | tail -n 2) + sources add + -source "https://nuget.pkg.github.com/86Box/index.json" + -storepasswordincleartext + -name "GitHub" + -username "86Box" + -password "${{ secrets.GITHUB_TOKEN }}" + - name: vcpkg package restore + if: false + run: vcpkg install freetype libpng openal-soft sdl2 rtmidi --triplet ${{ matrix.target.triplet }} - name: Configure CMake - run: >- - cmake -S . -B build - -G "Visual Studio 16 2019" -A ${{ matrix.target-arch }} -T ${{ matrix.toolset }} - -D CMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake - -D CMAKE_INSTALL_PREFIX=./build/artifacts - -D DEV_BRANCH=${{ matrix.build.dev-build }} - -D NEW_DYNAREC=${{ matrix.build.new-dynarec }} - -D VNC=OFF + run: > + call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" ${{ matrix.target.vcvars }} + + set PATH=C:/Program Files/LLVM/bin;%PATH% + + cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=${{ matrix.build }} + -D NEW_DYNAREC=${{ matrix.new-dynarec }} + -D CMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake + -D VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${{ github.workspace }}/${{ matrix.target.toolchain }} + -D VCPKG_TARGET_TRIPLET=${{ matrix.target.triplet }} + shell: cmd - name: Build - run: cmake --build build --config ${{ matrix.build.type }} --target install + run: | + call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvarsall.bat" ${{ matrix.target.vcvars }} + cmake --build build + shell: cmd + - name: Generate package + run: cmake --install build --prefix ./build/artifacts ${{ matrix.strip }} - uses: actions/upload-artifact@v2 with: - name: '86Box-${{ matrix.build.name }}-VS2019-${{ matrix.target-arch }}-${{ matrix.toolset }}-${{ github.sha }}' + name: '86Box-${{ matrix.build }}-NDR${{ matrix.new-dynarec }}-Win32-LLVM-${{ matrix.target.name }}-gha${{ github.run_number }}' path: build/artifacts/** linux: