diff options
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.yml | 240 |
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 @@ | |||
1 | name: Build | ||
2 | |||
3 | on: [push, pull_request] | ||
4 | |||
5 | jobs: | ||
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 | ||