name: Setup Windows Dependencies description: Install and setup dependencies for building MeshMC inputs: build-type: description: Type for the build required: true default: Debug msystem: description: MSYS2 subsystem to use required: false vcvars-arch: description: Visual Studio architecture to use required: true default: amd64 github-token: description: GitHub token for package feed authentication required: true runs: using: composite steps: # NOTE: Installed on MinGW as well for SignTool - name: Enter VS Developer shell if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ inputs.vcvars-arch }} vsversion: 2022 - name: Setup Java (MSVC) uses: actions/setup-java@v5 with: # NOTE(@YongDo-Hyun): We should probably stay on Zulu. # Temurin doesn't have Java 17 builds for WoA distribution: zulu java-version: 17 - name: Setup vcpkg cache (MSVC) if: ${{ inputs.msystem == '' && inputs.build-type == 'Debug' }} shell: pwsh env: USERNAME: ${{ github.repository_owner }} GITHUB_TOKEN: ${{ inputs.github-token }} FEED_URL: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json NUGET_RW: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }} run: | .$(vcpkg fetch nuget) ` sources add ` -Source "$env:FEED_URL" ` -StorePasswordInClearText ` -Name GitHubPackages ` -UserName "$env:USERNAME" ` -Password "$env:GITHUB_TOKEN" .$(vcpkg fetch nuget) ` setapikey "$env:GITHUB_TOKEN" ` -Source "$env:FEED_URL" $mode = if ($env:NUGET_RW -eq 'true') { 'readwrite' } else { 'read' } "VCPKG_BINARY_SOURCES=clear;nuget,$env:FEED_URL,$mode" | Out-File -Append $env:GITHUB_ENV - name: Setup vcpkg environment (MSVC) if: ${{ inputs.msystem == '' }} shell: bash run: | echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> "$GITHUB_ENV" - name: Setup MSYS2 (MinGW) if: ${{ inputs.msystem != '' }} uses: msys2/setup-msys2@v2 with: msystem: ${{ inputs.msystem }} update: true install: >- git pacboy: >- toolchain:p ccache:p cmake:p extra-cmake-modules:p ninja:p qt6-base:p qt6-svg:p qt6-imageformats:p qt6-networkauth:p qt6-5compat:p cmark:p qrencode:p tomlplusplus:p libarchive:p - name: List pacman packages (MinGW) if: ${{ inputs.msystem != '' }} shell: msys2 {0} run: | pacman -Qe - name: Retrieve ccache cache (MinGW) if: ${{ inputs.msystem != '' && inputs.build-type == 'Debug' }} uses: actions/cache@v5.0.4 with: path: '${{ github.workspace }}\.ccache' key: ${{ runner.os }}-mingw-w64-ccache-${{ github.run_id }} restore-keys: | ${{ runner.os }}-mingw-w64-ccache - name: Setup ccache (MinGW) if: ${{ inputs.msystem != '' && inputs.build-type == 'Debug' }} shell: msys2 {0} run: | ccache --set-config=cache_dir='${{ github.workspace }}\.ccache' ccache --set-config=max_size='500M' ccache --set-config=compression=true ccache -p # Show config