From ee22fa34d7d98b7395cc4c6c83f8f0198e03565d Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sun, 10 Mar 2024 10:29:41 +0100 Subject: [PATCH] Codechange: [CI] Split the ci-build into smaller components --- .github/workflows/ci-build.yml | 377 +++------------------------- .github/workflows/ci-emscripten.yml | 62 +++++ .github/workflows/ci-linux.yml | 123 +++++++++ .github/workflows/ci-macos.yml | 80 ++++++ .github/workflows/ci-mingw.yml | 83 ++++++ .github/workflows/ci-windows.yml | 87 +++++++ 6 files changed, 469 insertions(+), 343 deletions(-) create mode 100644 .github/workflows/ci-emscripten.yml create mode 100644 .github/workflows/ci-linux.yml create mode 100644 .github/workflows/ci-macos.yml create mode 100644 .github/workflows/ci-mingw.yml create mode 100644 .github/workflows/ci-windows.yml diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 953efe7bca..059ee338ab 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -17,56 +17,8 @@ jobs: emscripten: name: Emscripten - runs-on: ubuntu-20.04 - container: - # If you change this version, change the number in the cache step too. - image: emscripten/emsdk:3.1.42 - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup cache - uses: actions/cache@v4 - with: - path: /emsdk/upstream/emscripten/cache - key: 3.1.42-${{ runner.os }} - - - name: Patch Emscripten to support LZMA - run: | - cd /emsdk/upstream/emscripten - patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch - - - name: Build (host tools) - run: | - mkdir build-host - cd build-host - - echo "::group::CMake" - cmake .. -DOPTION_TOOLS_ONLY=ON - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(nproc) cores" - cmake --build . -j $(nproc) --target tools - echo "::endgroup::" - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - run: | - mkdir build - cd build - - echo "::group::CMake" - emcmake cmake .. -DHOST_BINARY_DIR=../build-host - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(nproc) cores" - cmake --build . -j $(nproc) --target openttd - echo "::endgroup::" + uses: ./.github/workflows/ci-emscripten.yml + secrets: inherit linux: strategy: @@ -99,104 +51,14 @@ jobs: name: Linux (${{ matrix.name }}) - runs-on: ubuntu-latest - env: - CC: ${{ matrix.compiler }} - CXX: ${{ matrix.cxxcompiler }} + uses: ./.github/workflows/ci-linux.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg - ./vcpkg/bootstrap-vcpkg.sh -disableMetrics - - - name: Install dependencies - run: | - echo "::group::Update apt" - sudo apt-get update - echo "::endgroup::" - - echo "::group::Install dependencies" - sudo apt-get install -y --no-install-recommends \ - liballegro4-dev \ - libcurl4-openssl-dev \ - libfontconfig-dev \ - libharfbuzz-dev \ - libicu-dev \ - liblzma-dev \ - liblzo2-dev \ - ${{ matrix.libraries }} \ - zlib1g-dev \ - # EOF - - echo "::group::Install vcpkg dependencies" - - # Disable vcpkg integration, as we mostly use system libraries. - mv vcpkg.json vcpkg-disabled.json - - # We only use breakpad from vcpkg, as its CMake files - # are a bit special. So the Ubuntu's variant doesn't work. - ./vcpkg/vcpkg install breakpad - - echo "::endgroup::" - env: - DEBIAN_FRONTEND: noninteractive - - - name: Get OpenGFX - run: | - mkdir -p ~/.local/share/openttd/baseset - cd ~/.local/share/openttd/baseset - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. -DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/vcpkg/scripts/buildsystems/vcpkg.cmake ${{ matrix.extra-cmake-parameters }} - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(nproc) cores" - cmake --build . -j $(nproc) - echo "::endgroup::" - - - name: Test - run: | - ( - cd build - ctest -j $(nproc) --timeout 120 - ) - - # Re-enable vcpkg. - mv vcpkg-disabled.json vcpkg.json - - # Check no tracked files have been modified. - git diff --exit-code + with: + compiler: ${{ matrix.compiler }} + cxxcompiler: ${{ matrix.cxxcompiler }} + libraries: ${{ matrix.libraries }} + extra-cmake-parameters: ${{ matrix.extra-cmake-parameters }} macos: strategy: @@ -208,148 +70,35 @@ jobs: name: Mac OS (${{ matrix.arch }}) - runs-on: macos-14 - env: - MACOSX_DEPLOYMENT_TARGET: 10.13 + uses: ./.github/workflows/ci-macos.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg - ./vcpkg/bootstrap-vcpkg.sh -disableMetrics - - - name: Install OpenGFX - run: | - mkdir -p ~/Documents/OpenTTD/baseset - cd ~/Documents/OpenTTD/baseset - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. \ - -DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \ - -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \ - -DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/vcpkg/scripts/buildsystems/vcpkg.cmake \ - # EOF - echo "::endgroup::" - - echo "::group::Build" - echo "Running on $(sysctl -n hw.logicalcpu) cores" - cmake --build . -j $(sysctl -n hw.logicalcpu) - echo "::endgroup::" - - - name: Test - run: | - cd build - ctest -j $(sysctl -n hw.logicalcpu) --timeout 120 + with: + arch: ${{ matrix.arch }} + full_arch: ${{ matrix.full_arch }} windows: strategy: fail-fast: false matrix: - os: [windows-latest] - arch: [x86, x64] + include: + - os: windows-latest + name: Windows + arch: x86 + - os: windows-latest + name: Windows + arch: x64 - name: Windows (${{ matrix.os }} / ${{ matrix.arch }}) + name: ${{ matrix.name }} (${{ matrix.arch }}) - runs-on: ${{ matrix.os }} + uses: ./.github/workflows/ci-windows.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 + with: + os: ${{ matrix.os }} + arch: ${{ matrix.arch }} - - name: Setup vcpkg caching - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg - .\vcpkg\bootstrap-vcpkg.bat -disableMetrics - - - name: Install OpenGFX - shell: bash - run: | - mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" - cd "C:/Users/Public/Documents/OpenTTD/baseset" - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install MSVC problem matcher - uses: ammaraskar/msvc-problem-matcher@master - - - name: Configure developer command prompt for ${{ matrix.arch }} - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.arch }} - - - name: Build - shell: bash - env: - NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. \ - -GNinja \ - -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \ - -DCMAKE_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}\vcpkg\scripts\buildsystems\vcpkg.cmake" \ - # EOF - echo "::endgroup::" - - echo "::group::Build" - cmake --build . - echo "::endgroup::" - - - name: Test - shell: bash - run: | - cd build - ctest --timeout 120 - - - msys2: + mingw: strategy: fail-fast: false matrix: @@ -361,70 +110,12 @@ jobs: name: MinGW (${{ matrix.arch }}) - runs-on: windows-latest + uses: ./.github/workflows/ci-mingw.yml + secrets: inherit - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup MSYS2 - uses: msys2/setup-msys2@v2 - with: - msystem: ${{ matrix.msystem }} - release: false - install: >- - git - make - mingw-w64-${{ matrix.arch }}-cmake - mingw-w64-${{ matrix.arch }}-gcc - mingw-w64-${{ matrix.arch }}-lzo2 - mingw-w64-${{ matrix.arch }}-libpng - mingw-w64-${{ matrix.arch }}-lld - mingw-w64-${{ matrix.arch }}-ninja - - - name: Install OpenGFX - shell: bash - run: | - mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" - cd "C:/Users/Public/Documents/OpenTTD/baseset" - - echo "::group::Download OpenGFX" - curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip - echo "::endgroup::" - - echo "::group::Unpack OpenGFX" - unzip opengfx-all.zip - echo "::endgroup::" - - rm -f opengfx-all.zip - - - name: Install GCC problem matcher - uses: ammaraskar/gcc-problem-matcher@master - - - name: Build - shell: msys2 {0} - env: - NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " - run: | - mkdir build - cd build - - echo "::group::CMake" - cmake .. \ - -GNinja \ - -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \ - # EOF - echo "::endgroup::" - - echo "::group::Build" - cmake --build . - echo "::endgroup::" - - - name: Test - shell: msys2 {0} - run: | - cd build - ctest --timeout 120 + with: + msystem: ${{ matrix.msystem }} + arch: ${{ matrix.arch }} check_annotations: name: Check Annotations @@ -433,7 +124,7 @@ jobs: - linux - macos - windows - - msys2 + - mingw if: always() && github.event_name == 'pull_request' diff --git a/.github/workflows/ci-emscripten.yml b/.github/workflows/ci-emscripten.yml new file mode 100644 index 0000000000..e1814ed79b --- /dev/null +++ b/.github/workflows/ci-emscripten.yml @@ -0,0 +1,62 @@ +name: CI (Emscripten) + +on: + workflow_call: + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + emscripten: + name: CI + + runs-on: ubuntu-20.04 + container: + # If you change this version, change the number in the cache step too. + image: emscripten/emsdk:3.1.42 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup cache + uses: actions/cache@v4 + with: + path: /emsdk/upstream/emscripten/cache + key: 3.1.42-${{ runner.os }} + + - name: Patch Emscripten to support LZMA + run: | + cd /emsdk/upstream/emscripten + patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch + + - name: Build (host tools) + run: | + mkdir build-host + cd build-host + + echo "::group::CMake" + cmake .. -DOPTION_TOOLS_ONLY=ON + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) --target tools + echo "::endgroup::" + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir build + cd build + + echo "::group::CMake" + emcmake cmake .. -DHOST_BINARY_DIR=../build-host + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) --target openttd + echo "::endgroup::" diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml new file mode 100644 index 0000000000..61b96a32cc --- /dev/null +++ b/.github/workflows/ci-linux.yml @@ -0,0 +1,123 @@ +name: CI (Linux) + +on: + workflow_call: + inputs: + compiler: + required: true + type: string + cxxcompiler: + required: true + type: string + libraries: + required: true + type: string + extra-cmake-parameters: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + linux: + name: CI + + runs-on: ubuntu-latest + env: + CC: ${{ inputs.compiler }} + CXX: ${{ inputs.cxxcompiler }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg + ./vcpkg/bootstrap-vcpkg.sh -disableMetrics + + - name: Install dependencies + run: | + echo "::group::Update apt" + sudo apt-get update + echo "::endgroup::" + + echo "::group::Install dependencies" + sudo apt-get install -y --no-install-recommends \ + liballegro4-dev \ + libcurl4-openssl-dev \ + libfontconfig-dev \ + libharfbuzz-dev \ + libicu-dev \ + liblzma-dev \ + liblzo2-dev \ + ${{ inputs.libraries }} \ + zlib1g-dev \ + # EOF + + echo "::group::Install vcpkg dependencies" + + # Disable vcpkg integration, as we mostly use system libraries. + mv vcpkg.json vcpkg-disabled.json + + # We only use breakpad from vcpkg, as its CMake files + # are a bit special. So the Ubuntu's variant doesn't work. + ./vcpkg/vcpkg install breakpad + + echo "::endgroup::" + env: + DEBIAN_FRONTEND: noninteractive + + - name: Get OpenGFX + run: | + mkdir -p ~/.local/share/openttd/baseset + cd ~/.local/share/openttd/baseset + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. -DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/vcpkg/scripts/buildsystems/vcpkg.cmake ${{ inputs.extra-cmake-parameters }} + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) + echo "::endgroup::" + + - name: Test + run: | + ( + cd build + ctest -j $(nproc) --timeout 120 + ) + + # Re-enable vcpkg. + mv vcpkg-disabled.json vcpkg.json + + # Check no tracked files have been modified. + git diff --exit-code diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml new file mode 100644 index 0000000000..025580e8c6 --- /dev/null +++ b/.github/workflows/ci-macos.yml @@ -0,0 +1,80 @@ +name: CI (MacOS) + +on: + workflow_call: + inputs: + arch: + required: true + type: string + full_arch: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + macos: + name: CI + + runs-on: macos-14 + env: + MACOSX_DEPLOYMENT_TARGET: 10.13 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg + ./vcpkg/bootstrap-vcpkg.sh -disableMetrics + + - name: Install OpenGFX + run: | + mkdir -p ~/Documents/OpenTTD/baseset + cd ~/Documents/OpenTTD/baseset + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. \ + -DCMAKE_OSX_ARCHITECTURES=${{ inputs.full_arch }} \ + -DVCPKG_TARGET_TRIPLET=${{ inputs.arch }}-osx \ + -DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/vcpkg/scripts/buildsystems/vcpkg.cmake \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(sysctl -n hw.logicalcpu) cores" + cmake --build . -j $(sysctl -n hw.logicalcpu) + echo "::endgroup::" + + - name: Test + run: | + cd build + ctest -j $(sysctl -n hw.logicalcpu) --timeout 120 diff --git a/.github/workflows/ci-mingw.yml b/.github/workflows/ci-mingw.yml new file mode 100644 index 0000000000..6a244ee6b4 --- /dev/null +++ b/.github/workflows/ci-mingw.yml @@ -0,0 +1,83 @@ +name: CI (MinGW) + +on: + workflow_call: + inputs: + arch: + required: true + type: string + msystem: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + mingw: + name: CI + + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: ${{ inputs.msystem }} + release: false + install: >- + git + make + mingw-w64-${{ inputs.arch }}-cmake + mingw-w64-${{ inputs.arch }}-gcc + mingw-w64-${{ inputs.arch }}-lzo2 + mingw-w64-${{ inputs.arch }}-libpng + mingw-w64-${{ inputs.arch }}-lld + mingw-w64-${{ inputs.arch }}-ninja + + - name: Install OpenGFX + shell: bash + run: | + mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" + cd "C:/Users/Public/Documents/OpenTTD/baseset" + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + shell: msys2 {0} + env: + NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. \ + -GNinja \ + -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + cmake --build . + echo "::endgroup::" + + - name: Test + shell: msys2 {0} + run: | + cd build + ctest --timeout 120 diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml new file mode 100644 index 0000000000..3411581d3d --- /dev/null +++ b/.github/workflows/ci-windows.yml @@ -0,0 +1,87 @@ +name: CI (Windows) + +on: + workflow_call: + inputs: + arch: + required: true + type: string + os: + required: true + type: string + +env: + CTEST_OUTPUT_ON_FAILURE: 1 + +jobs: + windows: + name: CI + + runs-on: ${{ inputs.os }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup vcpkg caching + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg + .\vcpkg\bootstrap-vcpkg.bat -disableMetrics + + - name: Install OpenGFX + shell: bash + run: | + mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset" + cd "C:/Users/Public/Documents/OpenTTD/baseset" + + echo "::group::Download OpenGFX" + curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip + echo "::endgroup::" + + echo "::group::Unpack OpenGFX" + unzip opengfx-all.zip + echo "::endgroup::" + + rm -f opengfx-all.zip + + - name: Install MSVC problem matcher + uses: ammaraskar/msvc-problem-matcher@master + + - name: Configure developer command prompt for ${{ inputs.arch }} + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ inputs.arch }} + + - name: Build + shell: bash + env: + NINJA_STATUS: "[%f/%t -- %e] " # [finished_edges/total_edges -- elapsed_time], default value is "[%f/%t] " + run: | + mkdir build + cd build + + echo "::group::CMake" + cmake .. \ + -GNinja \ + -DVCPKG_TARGET_TRIPLET=${{ inputs.arch }}-windows-static \ + -DCMAKE_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}\vcpkg\scripts\buildsystems\vcpkg.cmake" \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + cmake --build . + echo "::endgroup::" + + - name: Test + shell: bash + run: | + cd build + ctest --timeout 120