macos osxcross ci #146
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: Fast-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: | |
include: | |
- os: ubuntu-latest | |
cmake-args: -G Ninja -DCMAKE_BUILD_TYPE=Release -DDISCORD=ON -DDISCORD_DYNAMIC=ON -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON | |
cmake-init-env: CXXFLAGS= | |
package-file: "*-linux_x86_64.tar.xz" | |
crossosx: false | |
- os: windows-latest | |
cmake-args: -A x64 -DDISCORD=ON | |
cmake-init-env: CXXFLAGS= LDFLAGS= | |
package-file: "*-win64.zip" | |
crossosx: false | |
- os: ubuntu-latest | |
cmake-args: -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DWEBSOCKETS=OFF -DPREFER_BUNDLED_LIBS=ON -DCMAKE_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}/cmake/toolchains/darwin-arm64.toolchain" -DCMAKE_OSX_SYSROOT=$OSXCROSS_TARGET/SDK/MacOSX12.3.sdk | |
cmake-init-env: CXXFLAGS= | |
package-file: "*-macos.dmg" | |
crossosx: true | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Prepare Linux | |
if: contains(matrix.os, 'ubuntu') | |
run: | | |
sudo apt-get update -y | |
# mount: /var/lib/grub/esp: special device /dev/disk/by-id/scsi-... does not exist. | |
# sudo apt-get upgrade -y | |
sudo apt-get install 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 valgrind gcovr libglew-dev -y | |
- name: Cache Rust dependencies | |
uses: Swatinem/rust-cache@v2 | |
- name: Set up MacOS Cross Compiler | |
if: matrix.crossosx | |
uses: Timmmm/setup-osxcross@v2 | |
with: | |
osx-version: "12.3" | |
- name: Install sqlite3 in cross environment | |
if: matrix.crossosx | |
run: | | |
export MACOSX_DEPLOYMENT_TARGET=12.3 | |
export OSXCROSS_OSX_VERSION_MIN=10.9 | |
export OSXCROSS_MACPORTS_FORCE_MIRROR=1 | |
eval "$(osxcross-conf)" | |
osxcross-mp install sqlite3 | |
- name: Build in release mode | |
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_ARG_CONV_EXCL="/FI" | |
POST_FLAGS="-DCMAKE_CXX_FLAGS=\"/FI$VERSION_FILE\"" | |
ENVFLAGS="" | |
else | |
ENVFLAGS="CXXFLAGS=-include$VERSION_FILE" | |
POST_FLAGS="" | |
fi | |
if [[ "${{ matrix.crossosx }}" == "true" ]]; then | |
export OSXCROSS_OSX_VERSION_MIN=10.9 | |
eval "$(osxcross-conf)" | |
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=Release -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. .. | |
${{ matrix.cmake-path }}cmake --build . --config Release --target everything ${{ matrix.build-args }} | |
- name: Package | |
run: | | |
cd release | |
${{ matrix.cmake-path }}cmake --build . --config Release --target package_default ${{ matrix.build-args }} | |
mkdir artifacts | |
mv ${{ matrix.package-file }} artifacts | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ddnet-${{ matrix.os }} | |
path: release/artifacts |