Codechange: Use std::map to provide indexed widget access. #546
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
env: | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} | |
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@v3 | |
- name: Setup cache | |
uses: actions/cache@v3 | |
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::" | |
linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Clang - Debug | |
compiler: clang | |
cxxcompiler: clang++ | |
libraries: libsdl2-dev | |
- name: Clang - Release | |
compiler: clang | |
cxxcompiler: clang++ | |
libraries: libsdl2-dev | |
extra-cmake-parameters: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPTION_USE_ASSERTS=OFF | |
- name: GCC - SDL2 | |
compiler: gcc | |
cxxcompiler: g++ | |
libraries: libsdl2-dev | |
- name: GCC - SDL1.2 | |
compiler: gcc | |
cxxcompiler: g++ | |
libraries: libsdl1.2-dev | |
- name: GCC - Dedicated | |
compiler: gcc | |
cxxcompiler: g++ | |
libraries: grfcodec | |
extra-cmake-parameters: -DOPTION_DEDICATED=ON -DCMAKE_CXX_FLAGS_INIT="-DRANDOM_DEBUG" -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON | |
# Compile without SDL / SDL2, as that should compile fine too. | |
name: Linux (${{ matrix.name }}) | |
runs-on: ubuntu-20.04 | |
env: | |
CC: ${{ matrix.compiler }} | |
CXX: ${{ matrix.cxxcompiler }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- 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 | |
sudo vcpkg install \ | |
breakpad \ | |
# EOF | |
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=/usr/local/share/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 | |
# Check no tracked files have been modified | |
git diff --exit-code | |
macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x64 | |
full_arch: x86_64 | |
name: Mac OS (${{ matrix.arch }}) | |
runs-on: macos-latest | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
env: | |
HOMEBREW_NO_AUTO_UPDATE: 1 | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
run: | | |
brew install \ | |
pkg-config \ | |
# EOF | |
- name: Prepare cache key | |
id: key | |
run: | | |
echo "image=$ImageOS-$ImageVersion" >> $GITHUB_OUTPUT | |
- name: Enable vcpkg cache | |
uses: actions/cache@v3 | |
with: | |
path: /usr/local/share/vcpkg/installed | |
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-1 # Increase the number whenever dependencies are modified | |
restore-keys: | | |
${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} | |
- name: Prepare vcpkg | |
run: | | |
vcpkg install --triplet=${{ matrix.arch }}-osx \ | |
breakpad \ | |
curl \ | |
liblzma \ | |
libpng \ | |
lzo \ | |
zlib \ | |
# EOF | |
- 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=/usr/local/share/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 | |
windows: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, windows-2019] | |
arch: [x86, x64] | |
name: Windows (${{ matrix.os }} / ${{ matrix.arch }}) | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Prepare cache key | |
id: key | |
shell: powershell | |
run: | | |
# Work around caching failure with GNU tar | |
New-Item -Type Junction -Path vcpkg -Target c:\vcpkg | |
Write-Output "image=$env:ImageOS-$env:ImageVersion" >> $env:GITHUB_OUTPUT | |
- name: Enable vcpkg cache | |
uses: actions/cache@v3 | |
with: | |
path: vcpkg/installed | |
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-1 # Increase the number whenever dependencies are modified | |
restore-keys: | | |
${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }} | |
- name: Prepare vcpkg | |
shell: bash | |
run: | | |
vcpkg install --triplet=${{ matrix.arch }}-windows-static \ | |
breakpad \ | |
liblzma \ | |
libpng \ | |
lzo \ | |
zlib \ | |
# EOF | |
- 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="c:\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: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- msystem: MINGW64 | |
arch: x86_64 | |
- msystem: MINGW32 | |
arch: i686 | |
name: MinGW (${{ matrix.arch }}) | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- 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 | |
check_annotations: | |
name: Check Annotations | |
needs: | |
- emscripten | |
- linux | |
- macos | |
- windows | |
- msys2 | |
if: always() && github.event_name == 'pull_request' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check annotations | |
uses: OpenTTD/actions/annotation-check@v3 |