summaryrefslogtreecommitdiff
path: root/src/contrib/SDL-2.30.2/.github/workflows/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'src/contrib/SDL-2.30.2/.github/workflows/main.yml')
-rw-r--r--src/contrib/SDL-2.30.2/.github/workflows/main.yml240
1 files changed, 240 insertions, 0 deletions
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 @@
1name: Build
2
3on: [push, pull_request]
4
5jobs:
6 Build:
7 name: ${{ matrix.platform.name }}
8 runs-on: ${{ matrix.platform.os }}
9
10 defaults:
11 run:
12 shell: ${{ matrix.platform.shell }}
13
14 strategy:
15 fail-fast: false
16 matrix:
17 platform:
18 - { name: Windows (mingw32), os: windows-latest, shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686 }
19 - { name: Windows (mingw64), os: windows-latest, shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64 }
20 - { name: Windows (clang32), os: windows-latest, shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686 }
21 - { name: Windows (clang64), os: windows-latest, shell: 'msys2 {0}', msystem: clang64, msys-env: mingw-w64-clang-x86_64 }
22 - { name: Windows (ucrt64), os: windows-latest, shell: 'msys2 {0}', msystem: ucrt64, msys-env: mingw-w64-ucrt-x86_64 }
23 - { name: Ubuntu 20.04 (CMake), os: ubuntu-20.04, shell: sh }
24 - { name: Ubuntu 20.04 (autotools), os: ubuntu-20.04, shell: sh, autotools: true }
25 - { name: Intel oneAPI (Ubuntu 20.04), os: ubuntu-20.04, shell: bash, artifact: 'SDL-ubuntu20.04-oneapi', intel: true,
26 source_cmd: 'source /opt/intel/oneapi/setvars.sh; export CC=icx; export CXX=icx;'}
27 - { name: Intel Compiler (Ubuntu 20.04), os: ubuntu-20.04, shell: bash, artifact: 'SDL-ubuntu20.04-icc', intel: true, cmake: '-DSDL_CLANG_TIDY=OFF',
28 source_cmd: 'source /opt/intel/oneapi/setvars.sh; export CC=icc; export CXX=icpc; export CFLAGS=-diag-disable=10441; export CXXFLAGS=-diag-disable=10441; '}
29
30 - { name: Ubuntu 22.04 (CMake), os: ubuntu-22.04, shell: sh }
31 - { name: Ubuntu 22.04 (autotools), os: ubuntu-22.04, shell: sh, autotools: true }
32 - { name: MacOS (CMake), os: macos-latest, shell: sh, cmake: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"' }
33 - { name: MacOS (autotools), os: macos-latest, shell: sh, autotools: true }
34
35 steps:
36 - name: Set up MSYS2
37 if: matrix.platform.shell == 'msys2 {0}'
38 uses: msys2/setup-msys2@v2
39 with:
40 msystem: ${{ matrix.platform.msystem }}
41 install: >-
42 ${{ matrix.platform.msys-env }}-cc
43 ${{ matrix.platform.msys-env }}-cmake
44 ${{ matrix.platform.msys-env }}-ninja
45 ${{ matrix.platform.msys-env }}-pkg-config
46
47 - name: Setup Linux dependencies
48 if: runner.os == 'Linux'
49 run: |
50 sudo apt-get update
51 sudo apt-get install build-essential git make autoconf automake libtool \
52 pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
53 libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
54 libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
55 libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
56 libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
57
58 - name: Setup extra Ubuntu 22.04 dependencies
59 if: matrix.platform.os == 'ubuntu-22.04'
60 run: |
61 sudo apt-get install libpipewire-0.3-dev libdecor-0-dev
62
63 - name: Setup Macos dependencies
64 if: runner.os == 'macOS'
65 run: |
66 brew install \
67 ninja \
68 pkg-config
69
70 - name: Setup Intel oneAPI
71 if: matrix.platform.intel
72 run: |
73 # Download the key to system keyring
74 wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
75 | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
76
77 # Add signed entry to apt sources and configure the APT client to use Intel repository:
78 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
79
80 # Update package list
81 sudo apt-get update -y
82
83 # Install oneAPI
84 sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
85
86 - uses: actions/checkout@v4
87 - name: Check that versioning is consistent
88 # We only need to run this once: arbitrarily use the Linux/CMake build
89 if: "runner.os == 'Linux' && ! matrix.platform.autotools"
90 run: ./build-scripts/test-versioning.sh
91 - name: Configure (CMake)
92 if: "! matrix.platform.autotools"
93 run: |
94 ${{ matrix.platform.source_cmd }}
95 cmake -S . -B build -G Ninja \
96 -DSDL_TESTS=ON \
97 -DSDL_WERROR=ON \
98 -DSDL_INSTALL_TESTS=ON \
99 -DSDL_VENDOR_INFO="Github Workflow" \
100 -DCMAKE_INSTALL_PREFIX=cmake_prefix \
101 -DCMAKE_BUILD_TYPE=Release \
102 ${{ matrix.platform.cmake }}
103 - name: Build (CMake)
104 if: "! matrix.platform.autotools"
105 run: |
106 ${{ matrix.platform.source_cmd }}
107 cmake --build build/ --config Release --verbose --parallel
108 - name: Run build-time tests (CMake)
109 if: "! matrix.platform.autotools"
110 run: |
111 ${{ matrix.platform.source_cmd }}
112 set -eu
113 export SDL_TESTS_QUICK=1
114 ctest -VV --test-dir build/ -j2
115 if test "${{ runner.os }}" = "Linux"; then
116 # This should show us the SDL_REVISION
117 strings build/libSDL2-2.0.so.0 | grep SDL-
118 fi
119 - name: Install (CMake)
120 if: "! matrix.platform.autotools"
121 run: |
122 set -eu
123 cmake --install build/ --config Release
124 echo "SDL2_DIR=$(pwd)/cmake_prefix" >> $GITHUB_ENV
125 ( cd cmake_prefix; find ) | LC_ALL=C sort -u
126 - name: Configure (Autotools)
127 if: matrix.platform.autotools
128 run: |
129 ${{ matrix.platform.source_cmd }}
130 set -eu
131 rm -fr build-autotools
132 mkdir build-autotools
133 ./autogen.sh
134 (
135 cd build-autotools
136 ${{ github.workspace }}/configure \
137 --enable-vendor-info="Github Workflow" \
138 --enable-werror \
139 --prefix=${{ github.workspace }}/autotools_prefix \
140 )
141 if test "${{ runner.os }}" != "macOS" ; then
142 curdir="$(pwd)"
143 multiarch="$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
144 (
145 mkdir -p build-autotools/test
146 cd build-autotools/test
147 ${{ github.workspace }}/test/configure \
148 --enable-werror \
149 --x-includes=/usr/include \
150 --x-libraries="/usr/lib/${multiarch}" \
151 --prefix=${{ github.workspace }}/autotools_prefix \
152 SDL_CFLAGS="-I${curdir}/include" \
153 SDL_LIBS="-L${curdir}/build-autotools/build/.libs -lSDL2" \
154 ac_cv_lib_SDL2_ttf_TTF_Init=no \
155 ${NULL+}
156 )
157 fi
158 - name: Build (Autotools)
159 if: matrix.platform.autotools
160 run: |
161 ${{ matrix.platform.source_cmd }}
162 set -eu
163 parallel="$(getconf _NPROCESSORS_ONLN)"
164 make -j"${parallel}" -C build-autotools V=1
165 if test "${{ runner.os }}" != "macOS" ; then
166 make -j"${parallel}" -C build-autotools/test V=1
167 fi
168 - name: Run build-time tests (Autotools)
169 if: ${{ matrix.platform.autotools && (runner.os != 'macOS') }}
170 run: |
171 ${{ matrix.platform.source_cmd }}
172 set -eu
173 curdir="$(pwd)"
174 parallel="$(getconf _NPROCESSORS_ONLN)"
175 export SDL_TESTS_QUICK=1
176 make -j"${parallel}" -C build-autotools/test check LD_LIBRARY_PATH="${curdir}/build-autotools/build/.libs"
177 if test "${{ runner.os }}" = "Linux"; then
178 # This should show us the SDL_REVISION
179 strings "${curdir}/build-autotools/build/.libs/libSDL2-2.0.so.0" | grep SDL-
180 fi
181 - name: Install (Autotools)
182 if: matrix.platform.autotools
183 run: |
184 ${{ matrix.platform.source_cmd }}
185 set -eu
186 curdir="$(pwd)"
187 parallel="$(getconf _NPROCESSORS_ONLN)"
188 make -j"${parallel}" -C build-autotools install V=1
189 if test "${{ runner.os }}" != "macOS" ; then
190 make -j"${parallel}" -C build-autotools/test install V=1
191 fi
192 ( cd autotools_prefix; find . ) | LC_ALL=C sort -u
193 echo "SDL2_DIR=$(pwd)/autotools_prefix" >> $GITHUB_ENV
194 - name: Verify CMake configuration files
195 run: |
196 ${{ matrix.platform.source_cmd }}
197 cmake -S cmake/test -B cmake_config_build -G Ninja \
198 -DCMAKE_BUILD_TYPE=Release \
199 -DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }}
200 cmake --build cmake_config_build --verbose
201 - name: Verify sdl2-config
202 run: |
203 ${{ matrix.platform.source_cmd }}
204 export PATH=${{ env.SDL2_DIR }}/bin:$PATH
205 cmake/test/test_sdlconfig.sh
206 - name: Verify sdl2.pc
207 run: |
208 ${{ matrix.platform.source_cmd }}
209 export PKG_CONFIG_PATH=${{ env.SDL2_DIR }}/lib/pkgconfig
210 cmake/test/test_pkgconfig.sh
211 - name: Distcheck (Autotools)
212 if: matrix.platform.autotools
213 run: |
214 set -eu
215 parallel="$(getconf _NPROCESSORS_ONLN)"
216 make -j"${parallel}" -C build-autotools dist V=1
217 # Similar to Automake `make distcheck`: check that the tarball
218 # release is sufficient to do a new build
219 mkdir distcheck
220 tar -C distcheck -zxf build-autotools/SDL2-*.tar.gz
221 ( cd distcheck/SDL2-* && ./configure )
222 make -j"${parallel}" -C distcheck/SDL2-*
223 - name: Run installed-tests (Autotools)
224 if: "runner.os == 'Linux' && matrix.platform.autotools"
225 run: |
226 ${{ matrix.platform.source_cmd }}
227 set -eu
228 parallel="$(getconf _NPROCESSORS_ONLN)"
229 sudo make -j"${parallel}" -C build-autotools install
230 sudo make -j"${parallel}" -C build-autotools/test install
231 export SDL_TESTS_QUICK=1
232 # We need to set LD_LIBRARY_PATH because it isn't in the default
233 # linker search path. We don't need to set XDG_DATA_DIRS for
234 # ginsttest-runner, because /usr/local/share *is* in the default
235 # search path for that.
236 env --chdir=/ \
237 LD_LIBRARY_PATH=/usr/local/lib \
238 SDL_AUDIODRIVER=dummy \
239 SDL_VIDEODRIVER=dummy \
240 ginsttest-runner --tap SDL2