diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index e5e6e6e5a4c49..84dd4c7ae3d8e 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -14,184 +14,7 @@ concurrency: 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-latest - env: - CC: ${{ matrix.compiler }} - CXX: ${{ matrix.cxxcompiler }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup vcpkg caching - uses: actions/github-script@v6 - 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 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 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=/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 - ) - - # Re-enable vcpkg. - mv vcpkg-disabled.json vcpkg.json - - # Check no tracked files have been modified. - git diff --exit-code macos: strategy: @@ -247,6 +70,8 @@ jobs: -DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \ -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \ -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \ # EOF echo "::endgroup::" @@ -260,165 +85,13 @@ jobs: 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: Setup vcpkg caching - uses: actions/github-script@v6 - 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 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' diff --git a/src/3rdparty/squirrel/squirrel/sqstate.cpp b/src/3rdparty/squirrel/squirrel/sqstate.cpp index 3adb4d8f9813a..a7fa192d88da8 100644 --- a/src/3rdparty/squirrel/squirrel/sqstate.cpp +++ b/src/3rdparty/squirrel/squirrel/sqstate.cpp @@ -3,8 +3,10 @@ */ #include "../../../stdafx.h" +#pragma message(XSTR(assert(true))) #include "sqpcheader.h" +#pragma message(XSTR(assert(true))) #include "sqopcodes.h" #include "sqvm.h" #include "sqfuncproto.h" diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp index b01420ef6dfac..5154a3f082a58 100644 --- a/src/blitter/32bpp_anim_sse4.cpp +++ b/src/blitter/32bpp_anim_sse4.cpp @@ -7,10 +7,10 @@ /** @file 32bpp_anim_sse4.cpp Implementation of the SSE4 32 bpp blitter with animation support. */ -#include "palette_func.h" #ifdef WITH_SSE #include "../stdafx.h" +#include "../palette_func.h" #include "../video/video_driver.hpp" #include "../table/sprites.h" #include "32bpp_anim_sse4.hpp" diff --git a/src/network/core/os_abstraction.cpp b/src/network/core/os_abstraction.cpp index 792ee8b2f48c6..62bec62852e27 100644 --- a/src/network/core/os_abstraction.cpp +++ b/src/network/core/os_abstraction.cpp @@ -19,6 +19,7 @@ #include "stdafx.h" #include "os_abstraction.h" #include "../../string_func.h" +#include "../../3rdparty/fmt/format.h" #include #include "../../safeguards.h" diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index d6e1748f90d19..c6776b6a4e92b 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -8,7 +8,9 @@ /** @file order_cmd.cpp Handling of orders. */ #include "stdafx.h" +#pragma message(XSTR(assert(true))) #include "debug.h" +#pragma message(XSTR(assert(true))) #include "command_func.h" #include "company_func.h" #include "news_func.h" diff --git a/src/os/windows/library_loader_win.cpp b/src/os/windows/library_loader_win.cpp index a682f2e7f1fd0..0281b0ab230a3 100644 --- a/src/os/windows/library_loader_win.cpp +++ b/src/os/windows/library_loader_win.cpp @@ -12,6 +12,7 @@ #include #include "../../library_loader.h" +#include "../../3rdparty/fmt/format.h" #include "../../safeguards.h" diff --git a/src/stdafx.h b/src/stdafx.h index edfd4f02a95cb..7591107278052 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -393,6 +393,9 @@ void NORETURN AssertFailedError(int line, const char *file, const char *expressi # define assert(expression) if (unlikely(!(expression))) AssertFailedError(__LINE__, __FILE__, #expression); #endif +#define XSTR(x) STR(x) +#define STR(x) #x + /* Define JSON_ASSERT, which is used by nlohmann-json. Otherwise the header-file * will re-include assert.h, and reset the assert macro. */ #define JSON_ASSERT(x) assert(x) diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 8a40d3d4571ab..ae58641a5ce4e 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -8,7 +8,9 @@ /** @file town_cmd.cpp Handling of town tiles. */ #include "stdafx.h" +#pragma message(XSTR(assert(true))) #include "road.h" +#pragma message(XSTR(assert(true))) #include "road_internal.h" /* Cleaning up road bits */ #include "road_cmd.h" #include "landscape.h"