Skip to content

Enable more GCC warnings and fix some warnings #301

Enable more GCC warnings and fix some warnings

Enable more GCC warnings and fix some warnings #301

Workflow file for this run

name: CMake build and tests
on: [ push ]
# TODO: just use CMake presets?
# https://github.com/actions/runner/issues/382
env:
ErrorView: NormalView
jobs:
build:
env:
VALGRIND_GIT_TAG: VALGRIND_3_23_0
VALGRIND_PREFIX: ${{ github.workspace }}/valgrind/
UMB_VALGRIND_BIN: ${{ github.workspace }}/valgrind/bin/valgrind
name: ${{ matrix.os }}-${{ matrix.build_type }}-${{ github.workflow }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
build_type: [ Debug, Release ]
os: [ ubuntu-24.04, windows-latest ]
include:
- os: windows-latest
vcpkg_commit_id: '4e08971f3ddc13018ca858a692efe92d3b6b9fce'
umb_include_meta: ON
umb_run_clang_format: OFF # TODO: this fails due to permission error on CI.
cxx_compiler: cl
cmake_generator: Visual Studio 17 2022
cmake_extra_args: -A x64
- os: ubuntu-24.04
vcpkg_commit_id: '4e08971f3ddc13018ca858a692efe92d3b6b9fce'
umb_include_meta: ON
umb_run_clang_format: ON
cxx_compiler: g++
cmake_generator: Ninja
# cmake_extra_args:
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Change default cmd.exe codepage on Windows
run: REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
if: matrix.os == 'windows-latest'
- name: Change default PowerShell codepage on Windows
run: REG ADD HKCU\Console\%SystemRoot^%_System32_WindowsPowerShell_v1.0_powershell.exe /v CodePage /t REG_DWORD /d 65001
if: matrix.os == 'windows-latest'
- name: Add Universe repository and check package availability
run: sudo add-apt-repository universe
&& sudo apt update
&& apt search gcc-14
if: matrix.os == 'ubuntu-24.04'
- name: Install apt dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: autoconf-archive build-essential gcc-14 g++14 libc6-dbg
version: 1.1 # NOTE: this is cache version according to the docs.
if: matrix.os == 'ubuntu-24.04'
- name: Cache Valgrind
uses: actions/cache@v4
id: cache-valgrind
if: matrix.os == 'ubuntu-24.04'
with:
path: ${{ env.VALGRIND_PREFIX }}
key: ${{ runner.os }}-cache-${{ env.VALGRIND_GIT_TAG }}
restore-keys: ${{ runner.os }}-cache-${{ env.VALGRIND_GIT_TAG }}
- name: Install Valgrind
if: ${{ (matrix.os == 'ubuntu-24.04') && (steps.cache-valgrind.outputs.cache-hit != 'true') }}
run: git clone https://sourceware.org/git/valgrind.git --depth 1 --branch ${{ env.VALGRIND_GIT_TAG }}
&& cd valgrind
&& ./autogen.sh
&& ./configure --prefix=${{ env.VALGRIND_PREFIX }}
&& make -j2
&& make install
# && find / -name valgrind 2>/dev/null
# && test -e ${{ env.UMB_VALGRIND_BIN }} && echo "Valgrind bin found" || echo "Valgrind bin not found"
- name: Save installed Valgrind to cache
if: ${{ (matrix.os == 'ubuntu-24.04') && (steps.cache-valgrind.outputs.cache-hit != 'true') }}
uses: actions/cache/save@v4
with:
path: ${{ env.VALGRIND_PREFIX }}
key: ${{ runner.os }}-cache-${{ env.VALGRIND_GIT_TAG }}
- name: List installed gcc binaries
run: find /usr/bin/ -name "*gcc*"
&& whereis gcc
&& whereis g++
&& whereis gcc-14
&& whereis g++-14
if: matrix.os == 'ubuntu-24.04'
- name: Set default GCC
run: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 10
--slave /usr/bin/g++ g++ /usr/bin/g++-14
if: matrix.os == 'ubuntu-24.04'
- name: Print GCC version
run: gcc --version
if: matrix.os == 'ubuntu-24.04'
# Install clang-format from PyPI on Windows.
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
if: matrix.os == 'windows-latest'
- name: Install clang-format from PyPI on Windows
run: pip install clang-format
if: matrix.os == 'windows-latest'
- name: Print clang-format version
run: clang-format --version
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
if: matrix.os == 'windows-latest'
- name: Print MSVC version
run: cl.exe
if: matrix.os == 'windows-latest'
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@master
- name: Create Build Environment
run: cmake -E make_directory ${{ github.workspace }}/build
- name: Setup vcpkg
uses: lukka/run-vcpkg@main
id: runvcpkg
with:
vcpkgDirectory: '${{ runner.workspace }}/build/vcpkg'
vcpkgGitCommitId: '${{ matrix.vcpkg_commit_id }}'
# Run vcpkg with the command specified by the `runVcpkgFormatString` input.
runVcpkgInstall: true
vcpkgJsonGlob: '**/vcpkg.json'
- name: Print output of run-vcpkg's action.
run: echo "root='${{ steps.runvcpkg.outputs.RUNVCPKG_VCPKG_ROOT_OUT }}', triplet='${{ steps.runvcpkg.outputs.RUNVCPKG_VCPKG_DEFAULT_TRIPLET_OUT }}' "
- name: Configure CMake
working-directory: ${{ github.workspace }}/build
run: cmake -G "${{ matrix.cmake_generator }}" ${{ env.cmake_extra_args }} ${{ github.workspace }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
-DBUILD_TESTS=ON
-DUMB_INCLUDE_META=${{ matrix.umb_include_meta }}
-DCMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }}
-DUMB_RUN_CLANG_FORMAT=${{ matrix.umb_run_clang_format }}
- name: Build
working-directory: ${{ github.workspace }}/build
run: cmake --build . --config ${{ matrix.build_type }}
- name: Test
working-directory: ${{ github.workspace }}/build
run: ctest -C ${{ matrix.build_type }} --verbose
- name: Print Valgrind version
run:
# find / -name valgrind 2>/dev/null &&
${{ env.UMB_VALGRIND_BIN }} --version
if: matrix.os == 'ubuntu-24.04'
- name: Run CTest with Valgrind
working-directory: ${{ github.workspace }}/build
env:
VALGRIND_LIB: ${{ env.VALGRIND_PREFIX }}/libexec/valgrind/
run: |
ctest -C ${{ matrix.build_type }} --verbose -T memcheck
find ${{ github.workspace }}/build/Testing/Temporary -name "MemoryChecker.*.log" -exec cat {} +
if: matrix.os == 'ubuntu-24.04'
- name: Archive Valgrind memory check logs
uses: actions/upload-artifact@v4
with:
name: umb-ctest-valgrind-logs-${{ matrix.os }}-${{ matrix.build_type }}
path: ${{ github.workspace }}/build/Testing/Temporary/MemoryChecker.*.log
if: matrix.os == 'ubuntu-24.04'
- name: Run UMB generator with Valgrind
env:
UMB_GEN_BIN: build/uscript_msgbuf_generator
VALGRIND_LIB: ${{ env.VALGRIND_PREFIX }}/libexec/valgrind/
run: tests/gen_test_messages_with_valgrind.sh
if: matrix.os == 'ubuntu-24.04'
- name: Archive UMB generated C++ files
uses: actions/upload-artifact@v4
with:
name: umb-generated-cpp-${{ matrix.os }}-${{ matrix.build_type }}
path: |
build/generated/*.umb.cpp
build/generated/*.umb.hpp
- name: Archive UMB generated UnrealScript files
uses: actions/upload-artifact@v4
with:
name: umb-generated-uscript-${{ matrix.os }}-${{ matrix.build_type }}
path: |
build/generated/*.uc
- name: Archive UMB build artifacts
uses: actions/upload-artifact@v4
with:
name: umb-generator-executable-${{ matrix.os }}-${{ matrix.build_type }}
path: |
build/templates/
build/*.exe
build/*.pdb
build/*.dll
build/*.a
build/*.lib
build/*.so
build/uscript_msgbuf_generator
build/umb_echo_server
build-and-test-with-udk:
needs: [ build ]
uses: ./.github/workflows/udk-tests.yaml