From 8222bfe56d4dabe8d92fc4b25ea1b0163b16f3e1 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 4 May 2024 16:51:29 -0700 Subject: Initial commit. --- src/contrib/SDL-2.30.2/.github/workflows/main.yml | 240 ++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 src/contrib/SDL-2.30.2/.github/workflows/main.yml (limited to 'src/contrib/SDL-2.30.2/.github/workflows/main.yml') diff --git a/src/contrib/SDL-2.30.2/.github/workflows/main.yml b/src/contrib/SDL-2.30.2/.github/workflows/main.yml new file mode 100644 index 0000000..223d404 --- /dev/null +++ b/src/contrib/SDL-2.30.2/.github/workflows/main.yml @@ -0,0 +1,240 @@ +name: Build + +on: [push, pull_request] + +jobs: + Build: + name: ${{ matrix.platform.name }} + runs-on: ${{ matrix.platform.os }} + + defaults: + run: + shell: ${{ matrix.platform.shell }} + + strategy: + fail-fast: false + matrix: + platform: + - { name: Windows (mingw32), os: windows-latest, shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686 } + - { name: Windows (mingw64), os: windows-latest, shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64 } + - { name: Windows (clang32), os: windows-latest, shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686 } + - { name: Windows (clang64), os: windows-latest, shell: 'msys2 {0}', msystem: clang64, msys-env: mingw-w64-clang-x86_64 } + - { name: Windows (ucrt64), os: windows-latest, shell: 'msys2 {0}', msystem: ucrt64, msys-env: mingw-w64-ucrt-x86_64 } + - { name: Ubuntu 20.04 (CMake), os: ubuntu-20.04, shell: sh } + - { name: Ubuntu 20.04 (autotools), os: ubuntu-20.04, shell: sh, autotools: true } + - { name: Intel oneAPI (Ubuntu 20.04), os: ubuntu-20.04, shell: bash, artifact: 'SDL-ubuntu20.04-oneapi', intel: true, + source_cmd: 'source /opt/intel/oneapi/setvars.sh; export CC=icx; export CXX=icx;'} + - { name: Intel Compiler (Ubuntu 20.04), os: ubuntu-20.04, shell: bash, artifact: 'SDL-ubuntu20.04-icc', intel: true, cmake: '-DSDL_CLANG_TIDY=OFF', + source_cmd: 'source /opt/intel/oneapi/setvars.sh; export CC=icc; export CXX=icpc; export CFLAGS=-diag-disable=10441; export CXXFLAGS=-diag-disable=10441; '} + + - { name: Ubuntu 22.04 (CMake), os: ubuntu-22.04, shell: sh } + - { name: Ubuntu 22.04 (autotools), os: ubuntu-22.04, shell: sh, autotools: true } + - { name: MacOS (CMake), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"' } + - { name: MacOS (autotools), os: macos-latest, shell: sh, autotools: true } + + steps: + - name: Set up MSYS2 + if: matrix.platform.shell == 'msys2 {0}' + uses: msys2/setup-msys2@v2 + with: + msystem: ${{ matrix.platform.msystem }} + install: >- + ${{ matrix.platform.msys-env }}-cc + ${{ matrix.platform.msys-env }}-cmake + ${{ matrix.platform.msys-env }}-ninja + ${{ matrix.platform.msys-env }}-pkg-config + + - name: Setup Linux dependencies + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install build-essential git make autoconf automake libtool \ + pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \ + libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \ + libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \ + libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ + libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev + + - name: Setup extra Ubuntu 22.04 dependencies + if: matrix.platform.os == 'ubuntu-22.04' + run: | + sudo apt-get install libpipewire-0.3-dev libdecor-0-dev + + - name: Setup Macos dependencies + if: runner.os == 'macOS' + run: | + brew install \ + ninja \ + pkg-config + + - name: Setup Intel oneAPI + if: matrix.platform.intel + run: | + # Download the key to system keyring + wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ + | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null + + # Add signed entry to apt sources and configure the APT client to use Intel repository: + echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list + + # Update package list + sudo apt-get update -y + + # Install oneAPI + sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic + + - uses: actions/checkout@v4 + - name: Check that versioning is consistent + # We only need to run this once: arbitrarily use the Linux/CMake build + if: "runner.os == 'Linux' && ! matrix.platform.autotools" + run: ./build-scripts/test-versioning.sh + - name: Configure (CMake) + if: "! matrix.platform.autotools" + run: | + ${{ matrix.platform.source_cmd }} + cmake -S . -B build -G Ninja \ + -DSDL_TESTS=ON \ + -DSDL_WERROR=ON \ + -DSDL_INSTALL_TESTS=ON \ + -DSDL_VENDOR_INFO="Github Workflow" \ + -DCMAKE_INSTALL_PREFIX=cmake_prefix \ + -DCMAKE_BUILD_TYPE=Release \ + ${{ matrix.platform.cmake }} + - name: Build (CMake) + if: "! matrix.platform.autotools" + run: | + ${{ matrix.platform.source_cmd }} + cmake --build build/ --config Release --verbose --parallel + - name: Run build-time tests (CMake) + if: "! matrix.platform.autotools" + run: | + ${{ matrix.platform.source_cmd }} + set -eu + export SDL_TESTS_QUICK=1 + ctest -VV --test-dir build/ -j2 + if test "${{ runner.os }}" = "Linux"; then + # This should show us the SDL_REVISION + strings build/libSDL2-2.0.so.0 | grep SDL- + fi + - name: Install (CMake) + if: "! matrix.platform.autotools" + run: | + set -eu + cmake --install build/ --config Release + echo "SDL2_DIR=$(pwd)/cmake_prefix" >> $GITHUB_ENV + ( cd cmake_prefix; find ) | LC_ALL=C sort -u + - name: Configure (Autotools) + if: matrix.platform.autotools + run: | + ${{ matrix.platform.source_cmd }} + set -eu + rm -fr build-autotools + mkdir build-autotools + ./autogen.sh + ( + cd build-autotools + ${{ github.workspace }}/configure \ + --enable-vendor-info="Github Workflow" \ + --enable-werror \ + --prefix=${{ github.workspace }}/autotools_prefix \ + ) + if test "${{ runner.os }}" != "macOS" ; then + curdir="$(pwd)" + multiarch="$(dpkg-architecture -qDEB_HOST_MULTIARCH)" + ( + mkdir -p build-autotools/test + cd build-autotools/test + ${{ github.workspace }}/test/configure \ + --enable-werror \ + --x-includes=/usr/include \ + --x-libraries="/usr/lib/${multiarch}" \ + --prefix=${{ github.workspace }}/autotools_prefix \ + SDL_CFLAGS="-I${curdir}/include" \ + SDL_LIBS="-L${curdir}/build-autotools/build/.libs -lSDL2" \ + ac_cv_lib_SDL2_ttf_TTF_Init=no \ + ${NULL+} + ) + fi + - name: Build (Autotools) + if: matrix.platform.autotools + run: | + ${{ matrix.platform.source_cmd }} + set -eu + parallel="$(getconf _NPROCESSORS_ONLN)" + make -j"${parallel}" -C build-autotools V=1 + if test "${{ runner.os }}" != "macOS" ; then + make -j"${parallel}" -C build-autotools/test V=1 + fi + - name: Run build-time tests (Autotools) + if: ${{ matrix.platform.autotools && (runner.os != 'macOS') }} + run: | + ${{ matrix.platform.source_cmd }} + set -eu + curdir="$(pwd)" + parallel="$(getconf _NPROCESSORS_ONLN)" + export SDL_TESTS_QUICK=1 + make -j"${parallel}" -C build-autotools/test check LD_LIBRARY_PATH="${curdir}/build-autotools/build/.libs" + if test "${{ runner.os }}" = "Linux"; then + # This should show us the SDL_REVISION + strings "${curdir}/build-autotools/build/.libs/libSDL2-2.0.so.0" | grep SDL- + fi + - name: Install (Autotools) + if: matrix.platform.autotools + run: | + ${{ matrix.platform.source_cmd }} + set -eu + curdir="$(pwd)" + parallel="$(getconf _NPROCESSORS_ONLN)" + make -j"${parallel}" -C build-autotools install V=1 + if test "${{ runner.os }}" != "macOS" ; then + make -j"${parallel}" -C build-autotools/test install V=1 + fi + ( cd autotools_prefix; find . ) | LC_ALL=C sort -u + echo "SDL2_DIR=$(pwd)/autotools_prefix" >> $GITHUB_ENV + - name: Verify CMake configuration files + run: | + ${{ matrix.platform.source_cmd }} + cmake -S cmake/test -B cmake_config_build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} + cmake --build cmake_config_build --verbose + - name: Verify sdl2-config + run: | + ${{ matrix.platform.source_cmd }} + export PATH=${{ env.SDL2_DIR }}/bin:$PATH + cmake/test/test_sdlconfig.sh + - name: Verify sdl2.pc + run: | + ${{ matrix.platform.source_cmd }} + export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig + cmake/test/test_pkgconfig.sh + - name: Distcheck (Autotools) + if: matrix.platform.autotools + run: | + set -eu + parallel="$(getconf _NPROCESSORS_ONLN)" + make -j"${parallel}" -C build-autotools dist V=1 + # Similar to Automake `make distcheck`: check that the tarball + # release is sufficient to do a new build + mkdir distcheck + tar -C distcheck -zxf build-autotools/SDL2-*.tar.gz + ( cd distcheck/SDL2-* && ./configure ) + make -j"${parallel}" -C distcheck/SDL2-* + - name: Run installed-tests (Autotools) + if: "runner.os == 'Linux' && matrix.platform.autotools" + run: | + ${{ matrix.platform.source_cmd }} + set -eu + parallel="$(getconf _NPROCESSORS_ONLN)" + sudo make -j"${parallel}" -C build-autotools install + sudo make -j"${parallel}" -C build-autotools/test install + export SDL_TESTS_QUICK=1 + # We need to set LD_LIBRARY_PATH because it isn't in the default + # linker search path. We don't need to set XDG_DATA_DIRS for + # ginsttest-runner, because /usr/local/share *is* in the default + # search path for that. + env --chdir=/ \ + LD_LIBRARY_PATH=/usr/local/lib \ + SDL_AUDIODRIVER=dummy \ + SDL_VIDEODRIVER=dummy \ + ginsttest-runner --tap SDL2 -- cgit v1.2.3