Fix some unsupported clang compiler flags #91
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: build | |
on: | |
workflow_dispatch: | |
push: | |
branches: [master] | |
paths-ignore: | |
- '**.md' | |
- '*.txt' | |
- '.gitignore' | |
- 'docs/*' | |
pull_request: | |
branches: [master] | |
paths-ignore: | |
- '**.md' | |
- '*.txt' | |
- '.gitignore' | |
- 'docs/*' | |
release: | |
types: [published] | |
jobs: | |
windows-mingw: | |
name: ${{ matrix.config }} Windows ${{ matrix.arch }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
#arch: [arm64, x86, x64] | |
arch: [x86, x64] | |
cc: [gcc] | |
cxx: [g++] | |
config: [Release] | |
include: | |
# - arch: arm64 | |
# platform: ARM64 | |
# suffix: .arm64 | |
- arch: x86 | |
platform: Win32 | |
msystem: MINGW32 | |
prefix: mingw-w64-i686 | |
- arch: x64 | |
platform: Win64 | |
msystem: MINGW64 | |
prefix: mingw-w64-x86_64 | |
- config: Release | |
rule: install | |
#- arch: x64 | |
# platform: x64 | |
# suffix: .x86_64 | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
with: | |
install: ${{ matrix.prefix }}-binutils ${{ matrix.prefix }}-make ${{ matrix.prefix }}-${{ matrix.cc }} ${{ matrix.prefix }}-ninja | |
msystem: ${{ matrix.msystem }} | |
path-type: minimal | |
release: false | |
update: false | |
- name: Configure MinGW for ${{ matrix.arch }} into PATH | |
shell: bash | |
run: | | |
if [ ${{ matrix.arch }} == "x86" ]; then | |
echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH | |
else | |
echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH | |
fi | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Create Build Directory | |
working-directory: ${{github.workspace}}/code | |
run: cmake -E make_directory ${{github.workspace}}/code/bin | |
- name: Configure CMake (x86) | |
working-directory: ${{github.workspace}}/code/bin | |
if: ${{ matrix.arch == 'x86' }} | |
run: cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/code/cmake/toolchains/i686-w64-mingw32-github.cmake | |
- name: Configure CMake (x64) | |
working-directory: ${{github.workspace}}/code/bin | |
if: ${{ matrix.arch == 'x64' }} | |
run: cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=${{ matrix.config }} | |
- name: Build | |
working-directory: ${{github.workspace}}/code/bin | |
run: cmake --build . --config ${{ matrix.config }} --parallel | |
- uses: actions/upload-artifact@v4 | |
if: ${{ matrix.config == 'Release' }} | |
with: | |
name: windows-${{ matrix.arch }} | |
path: | | |
code/bin/*.dll | |
if-no-files-found: error | |
retention-days: 5 | |
ubuntu-x86: | |
name: ${{ matrix.config }} Ubuntu ${{ matrix.arch }} | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x86, x86_64] | |
cc: [gcc] | |
cxx: [g++] | |
config: [Release] | |
include: | |
- config: Release | |
rule: install | |
- arch: x86 | |
- arch: x86_64 | |
steps: | |
- name: Install tools | |
run: | | |
if [ ${{ matrix.arch }} == "x86" ]; then | |
sudo dpkg --add-architecture i386 | |
sudo apt-get -qq update | |
sudo apt-get -y install gcc-multilib g++-multilib ninja-build | |
else | |
sudo apt-get -qq update | |
sudo apt-get -y install ninja-build | |
fi | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Create Build Directory | |
working-directory: ${{github.workspace}}/code | |
run: cmake -E make_directory ${{github.workspace}}/code/bin | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/code/bin | |
run: | | |
if [ ${{ matrix.arch }} == "x86" ]; then | |
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/linux-i686.cmake | |
else | |
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=${{ matrix.config }} | |
fi | |
- name: Build | |
working-directory: ${{github.workspace}}/code/bin | |
run: cmake --build . --config ${{ matrix.config }} --parallel | |
- uses: actions/upload-artifact@v4 | |
if: matrix.cc == 'gcc' && matrix.config == 'Release' | |
with: | |
name: linux-${{ matrix.arch }} | |
path: | | |
code/bin/*.so | |
if-no-files-found: error | |
retention-days: 5 | |
macos-x86: | |
name: ${{ matrix.config }} macOS x86_64 | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x86_64] | |
cc: [clang] | |
cxx: [clang++] | |
config: [Release] | |
include: | |
- config: Release | |
rule: install | |
steps: | |
- name: Install tools | |
run: brew install coreutils ninja | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Create Build Directory | |
working-directory: ${{github.workspace}}/code | |
run: cmake -E make_directory ${{github.workspace}}/code/bin | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/code/bin | |
run: cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=${{ matrix.config }} | |
- name: Build | |
working-directory: ${{github.workspace}}/code/bin | |
run: cmake --build . --config ${{ matrix.config }} --parallel | |
- uses: actions/upload-artifact@v4 | |
if: matrix.cc == 'clang' && matrix.config == 'Release' | |
with: | |
name: macos-${{ matrix.arch }} | |
path: | | |
code/bin/*_mac | |
if-no-files-found: error | |
retention-days: 5 | |
create-testing: | |
if: github.ref == 'refs/heads/master' && github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
needs: [windows-mingw, ubuntu-x86, macos-x86] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
- name: Create binary archives | |
run: | | |
mkdir -p etf | |
mv -t ./etf/ ./linux-x86/*.so | |
mv -t ./etf/ ./linux-x86_64/*.so | |
mv -t ./etf/ ./windows-x86/*.dll | |
mv -t ./etf/ ./windows-x64/*.dll | |
mv -t ./etf/ ./macos-x86_64/*_mac | |
cd etf | |
7z a -r -tzip mp_bin.pk3 ./cgame*.so | |
7z a -r -tzip mp_bin.pk3 ./ui*.so | |
7z a -r -tzip mp_bin.pk3 ./cgame*.dll | |
7z a -r -tzip mp_bin.pk3 ./ui*.dll | |
7z a -r -tzip mp_bin.pk3 ./cgame_mac | |
7z a -r -tzip mp_bin.pk3 ./ui_mac | |
cd .. | |
7z a -r etf-2.0-all-test-latest.zip ./etf/*.pk3 | |
7z a -r etf-2.0-all-test-latest.zip ./etf/*.so | |
7z a -r etf-2.0-all-test-latest.zip ./etf/*.dll | |
7z a -r etf-2.0-all-test-latest.zip ./etf/*_mac | |
- name: Create latest build | |
uses: czietz/action-automatic-releases@latest | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
automatic_release_tag: "latest" | |
prerelease: false | |
title: Latest Build | |
files: | | |
*.zip |