forked from TaterClient/TClient
-
Notifications
You must be signed in to change notification settings - Fork 0
118 lines (101 loc) · 5.43 KB
/
debug-build.yml
File metadata and controls
118 lines (101 loc) · 5.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
name: Debug Build
on:
push:
branches-ignore:
- gh-readonly-queue/**
jobs:
build-cmake:
runs-on: ${{ matrix.os }}
env:
CARGO_HTTP_MULTIPLEXING: false
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
include:
- os: ubuntu-latest
cmake-args: -G Ninja -DCMAKE_BUILD_TYPE=Debug -DDISCORD=ON -DDISCORD_DYNAMIC=ON -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON -DAUTOUPDATE=ON
cmake-init-env: CC=clang CXX=clang++ CFLAGS="-fsanitize=address,undefined -fsanitize-recover=all -fno-omit-frame-pointer -fno-common" CXXFLAGS="-fsanitize=address,undefined -fsanitize-recover=all -fno-omit-frame-pointer -fno-common" LDFLAGS="-fsanitize=address,undefined"
package-file: "*-linux_x86_64.tar.xz"
# - os: macOS-latest
# name: macOS-arm64
# cmake-args: -G Ninja -DCMAKE_BUILD_TYPE=Debug -DDISCORD=ON -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON -DCMAKE_OSX_ARCHITECTURES="arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib -DCMAKE_FIND_FRAMEWORK=LAST
# cmake-init-env: CC=clang CXX=clang++ CFLAGS="-fsanitize=address,undefined -fsanitize-recover=all -fno-omit-frame-pointer -fno-common" CXXFLAGS="-fsanitize=address,undefined -fsanitize-recover=all -fno-omit-frame-pointer -fno-common" LDFLAGS="-fsanitize=address,undefined"
# package-file: "*-macos-arm64.dmg"
# - os: macOS-latest
# name: macOS-x86_64
# cmake-args: -G Ninja -DCMAKE_BUILD_TYPE=Debug -DDISCORD=ON -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib -DCMAKE_FIND_FRAMEWORK=LAST
# cmake-init-env: CC=clang CXX=clang++ CFLAGS="-fsanitize=address,undefined -fsanitize-recover=all -fno-omit-frame-pointer -fno-common" CXXFLAGS="-fsanitize=address,undefined -fsanitize-recover=all -fno-omit-frame-pointer -fno-common" LDFLAGS="-fsanitize=address,undefined"
# package-file: "*-macos-x86_64.dmg"
# - os: windows-latest
# cmake-args: -A x64 -DCMAKE_BUILD_TYPE=Debug -T ClangCl -DDISCORD=ON -DTOOLS=OFF -DAUTOUPDATE=ON
# cmake-init-env: CC=clang-cl CXX=clang-cl
# package-file: "*-win64.zip"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Prepare Linux
if: contains(matrix.os, 'ubuntu')
run: |
sudo apt-get update -y
sudo apt-get install clang llvm pkg-config cmake ninja-build \
libfreetype6-dev libnotify-dev libsdl2-dev libsqlite3-dev \
libvulkan-dev glslang-tools spirv-tools \
libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev \
libx264-dev libpng-dev libasan6 valgrind gcovr libglew-dev -y
- name: Prepare macOS
if: contains(matrix.os, 'macOS')
run: |
brew update || true
brew install llvm pkg-config ninja molten-vk vulkan-headers glslang spirv-tools glew googletest libpng x264 || true
brew upgrade freetype
pip3 install --break-system-packages dmgbuild
echo /Library/Frameworks/Python.framework/Versions/3.12/bin >> $GITHUB_PATH
echo "$(brew --prefix llvm)/bin" >> $GITHUB_PATH
sudo rm -rf /Library/Developer/CommandLineTools
- name: Add rust macOS
if: contains(matrix.os, 'macOS')
run: |
rustup default stable
rustup update
rustup target add x86_64-apple-darwin aarch64-apple-darwin
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
- name: Build in debug mode with ASAN
env:
VERSION: ${{ secrets.VERSION }}
shell: bash
run: |
VERSION_FILE="$GITHUB_WORKSPACE/versioninfo.h"
printf '%s' "$VERSION" | base64 -d > "$VERSION_FILE"
if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
export MSYS_NO_PATHCONV=1
export MSYS_ARG_CONV_EXCL="/FI"
VERSION_FILE="$GITHUB_WORKSPACE/versioninfo.h"
POST_FLAGS="-DCMAKE_C_FLAGS=\"-fsanitize=address /Zi /Oy- /FI$VERSION_FILE\""
POST_FLAGS+=" -DCMAKE_CXX_FLAGS=\"-fsanitize=address /Zi /Oy- /FI$VERSION_FILE\""
POST_FLAGS+=" -DCMAKE_EXE_LINKER_FLAGS=\"/INCREMENTAL:NO /fsanitize=address /LIBPATH:C:/Program Files/LLVM/lib/clang/16.0.0/lib/windows clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib\""
else
ENVFLAGS="CXXFLAGS=-include$VERSION_FILE"
POST_FLAGS=""
fi
if [[ "${{ matrix.os }}" == "macOS-latest" ]]; then
POST_FLAGS+=" -DPNG_LIBRARY=${GITHUB_WORKSPACE}/ddnet-libs/png/mac/libfat/libpng16.16.dylib"
POST_FLAGS+=" -DPNG_INCLUDEDIR=${GITHUB_WORKSPACE}/ddnet-libs/png/include"
fi
mkdir release
cd release
${{ matrix.cmake-path }}cmake -E env ${{ matrix.cmake-init-env }} $ENVFLAGS ${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} $POST_FLAGS -DCMAKE_BUILD_TYPE=Debug -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. ..
${{ matrix.cmake-path }}cmake --build . --config Debug --target everything
- name: Package
run: |
cd release
cmake --build . --config Debug --target package_default
mkdir artifacts
mv ${{ matrix.package-file }} artifacts
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: ddnet-debug-${{ matrix.os }}
path: release/artifacts