Skip to content

Commit d949bc3

Browse files
committed
WIP: CI
1 parent 8a85cf5 commit d949bc3

1 file changed

Lines changed: 115 additions & 0 deletions

File tree

.azure-pipeline.yml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# Documentation: https://wiki.unvanquished.net/wiki/Continuous_integration
2+
3+
trigger:
4+
branches:
5+
include:
6+
- master
7+
8+
pr:
9+
branches:
10+
include:
11+
- '*'
12+
paths:
13+
include:
14+
- .azure-pipelines.yml
15+
- src/
16+
- include-hax/
17+
- cmake/
18+
- CMakeLists.txt
19+
20+
strategy:
21+
matrix:
22+
Linux amd64 GCC:
23+
VM_IMAGE: 'ubuntu-22.04'
24+
APT_PACKAGES: ninja-build g++-10
25+
C_COMPILER: gcc-10
26+
CXX_COMPILER: g++-10
27+
Linux i686 GCC:
28+
VM_IMAGE: 'ubuntu-22.04'
29+
APT_PACKAGES: ninja-build g++-i686-linux-gnu
30+
C_COMPILER: i686-linux-gnu-gcc
31+
CXX_COMPILER: i686-linux-gnu-g++
32+
COMPILER_FLAGS: -mfpmath=sse -msse
33+
Linux armhf GCC:
34+
# There is an IO bug in qemu-arm from ubuntu-22.04.
35+
VM_IMAGE: 'ubuntu-24.04'
36+
APT_PACKAGES: ninja-build g++-arm-linux-gnueabihf qemu-user
37+
C_COMPILER: arm-linux-gnueabihf-gcc
38+
CXX_COMPILER: arm-linux-gnueabihf-g++
39+
EXE_RUNNER: qemu-arm -L /usr/arm-linux-gnueabihf
40+
Linux amd64 Clang:
41+
VM_IMAGE: 'ubuntu-22.04'
42+
APT_PACKAGES: ninja-build
43+
C_COMPILER: clang
44+
CXX_COMPILER: clang++
45+
Windows amd64 MinGW:
46+
VM_IMAGE: 'ubuntu-22.04'
47+
APT_PACKAGES: ninja-build g++-mingw-w64-x86-64 mingw-w64-x86-64-dev gcc-mingw-w64-x86-64-posix-runtime wine
48+
SETUP_COMMANDS: sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
49+
TOOLCHAIN_FILE: cmake/cross-toolchain-mingw64.cmake
50+
EXE_RUNNER: wine
51+
EXE_EXT: .exe
52+
WITH_JWASM: true
53+
Windows i686 MinGW:
54+
VM_IMAGE: 'ubuntu-22.04'
55+
APT_ARCHITECTURE: i386
56+
APT_PACKAGES: ninja-build g++-mingw-w64-i686 mingw-w64-i686-dev gcc-mingw-w64-i686-posix-runtime wine wine32
57+
SETUP_COMMANDS: sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
58+
TOOLCHAIN_FILE: cmake/cross-toolchain-mingw32.cmake
59+
COMPILER_FLAGS: -mfpmath=sse -msse
60+
EXE_RUNNER: wine
61+
EXE_EXT: .exe
62+
WITH_JWASM: true
63+
macOS amd64 AppleClang:
64+
VM_IMAGE: 'macOS-14'
65+
CMAKE_GENERATOR: Unix Makefiles
66+
NPROC_COMMAND: sysctl -n hw.logicalcpu
67+
68+
pool:
69+
vmImage: $(VM_IMAGE)
70+
71+
steps:
72+
- bash: |
73+
set -xue
74+
if [ -n "${APT_ARCHITECTURE:-}" ]; then
75+
sudo dpkg --add-architecture "${APT_ARCHITECTURE}"
76+
fi
77+
if [ -n "${APT_PACKAGES:-}" ]; then
78+
sudo apt-get update && sudo apt-get -y -q --no-install-recommends install ${APT_PACKAGES}
79+
fi
80+
if [ -n "${SETUP_COMMANDS:-}" ]; then
81+
$(SETUP_COMMANDS)
82+
fi
83+
displayName: 'Setup'
84+
- bash: |
85+
set -xue
86+
export CMAKE_BUILD_PARALLEL_LEVEL="$(${NPROC_COMMAND:-nproc})"
87+
echo "${CMAKE_BUILD_PARALLEL_LEVEL}"
88+
cmake_args=(-G"${CMAKE_GENERATOR:-Ninja}")
89+
if "${WITH_JWASM:-false}"; then
90+
git clone https://github.com/JWasm/JWasm.git build/jwasm
91+
cmake -Sbuild/jwasm -Bbuild/jwasm/build
92+
cmake --build build/jwasm/build --config Release
93+
# No EXE_EXT, this is a native tool.
94+
cmake_args+=(-DCMAKE_ASM_MASM_COMPILER="$(realpath build/jwasm/build/jwasm)")
95+
fi
96+
if [ -n "${TOOLCHAIN_FILE:-}" ]; then
97+
cmake_args+=(-DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}")
98+
fi
99+
if [ -n "${C_COMPILER:-}" ]; then
100+
cmake_args+=(-DCMAKE_C_COMPILER="${C_COMPILER}")
101+
fi
102+
if [ -n "${CXX_COMPILER:-}" ]; then
103+
cmake_args+=(-DCMAKE_CXX_COMPILER="${CXX_COMPILER}")
104+
fi
105+
if [ -n "${COMPILER_FLAGS:-}" ]; then
106+
cmake_args+=(-DCMAKE_C_FLAGS="${COMPILER_FLAGS}" -DCMAKE_CXX_FLAGS="${COMPILER_FLAGS}")
107+
fi
108+
cmake -S. -Bbuild "${cmake_args[@]}"
109+
cmake --build build --config Release
110+
displayName: 'Build'
111+
- bash: |
112+
set -xue
113+
# TODO
114+
true
115+
displayName: 'Test'

0 commit comments

Comments
 (0)