update config.guess and config.sub from mainstream #708
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: 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: iOS (CMake), os: macos-latest, shell: sh, cmake: '-DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES="arm64"', cross: true, test-pkg-config: false } | |
- { name: tvOS (CMake), os: macos-latest, shell: sh, cmake: '-DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_ARCHITECTURES="arm64"', cross: true, test-pkg-config: false } | |
- { 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 \ | |
autoconf \ | |
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=RelWithDebInfo \ | |
${{ matrix.platform.cmake }} | |
- name: Build (CMake) | |
if: "! matrix.platform.autotools" | |
run: | | |
${{ matrix.platform.source_cmd }} | |
cmake --build build/ --config RelWithDebInfo --verbose --parallel | |
- name: Run build-time tests (CMake) | |
if: ${{ ! matrix.platform.autotools && !matrix.platform.cross }} | |
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 RelWithDebInfo | |
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=RelWithDebInfo \ | |
${{ matrix.platform.cmake }} \ | |
-DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} | |
cmake --build cmake_config_build --verbose | |
- name: Verify sdl2-config | |
if: ${{ !!matrix.platform.test-pkg-config }} | |
run: | | |
${{ matrix.platform.source_cmd }} | |
export PATH=${{ env.SDL2_DIR }}/bin:$PATH | |
cmake/test/test_sdlconfig.sh | |
- name: Verify sdl2.pc | |
if: ${{ !!matrix.platform.test-pkg-config }} | |
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 |