mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-02-03 12:31:15 +00:00
GLEW normally backs directly onto glXGetProcAddress on Linux, which is broken on non-GLX setups, such as Wayland (but also X11 with EGL, and presumably KMSDRM). Replace it with manual calls to SDL_GL_GetProcAddress() for the VBO path. Note, however, that SDL_opengl.h includes "windows.h", so conflicts with the miniwin implementation, which breaks builds on windows. In order to work around this, we do what the Direct3D9 implementation does and push all of the OpenGL calls to a separate file, actual.cpp. Going forward, it may make sense to load _all_ OpenGL entry points via SDL, which would allow us to avoid linking directly with libGL/libOpenGL, and therefore eliminate the separate build dependency altogether, as well as allowing more runtime configurability as to the OpenGL library to load. (But that's definitely a bit uglier, and also useful very rarely.)
117 lines
3.5 KiB
YAML
117 lines
3.5 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.name }}
|
|
runs-on: ${{ matrix.os }}
|
|
defaults:
|
|
run:
|
|
shell: ${{ matrix.shell || 'sh' }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { name: 'Linux', os: 'ubuntu-latest', dx5: false, config: true, build-type: 'Release', linux: true, werror: true, clang-tidy: false }
|
|
- { name: 'Windows', os: 'windows-latest', dx5: false, config: false, build-type: 'Release', msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64' }
|
|
- { name: 'macOS', os: 'macos-latest', dx5: false, config: true, build-type: 'Release', brew: true, werror: true, clang-tidy: false }
|
|
steps:
|
|
- name: Setup vcvars
|
|
if: ${{ !!matrix.msvc }}
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: ${{ matrix.vc-arch }}
|
|
|
|
- name: Set up MSYS2
|
|
if: ${{ !!matrix.msystem }}
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.msystem }}
|
|
install: >-
|
|
${{ matrix.msys-env }}-cc
|
|
${{ matrix.msys-env }}-cmake
|
|
${{ matrix.msys-env }}-ninja
|
|
${{ matrix.msys-env }}-clang-tools-extra
|
|
${{ (matrix.config && format('{0}-qt6-base', matrix.msys-env)) || '' }}
|
|
|
|
- name: Install Linux dependencies (apt-get)
|
|
if: ${{ matrix.linux }}
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
libx11-dev libxext-dev libxrandr-dev libxrender-dev libxfixes-dev libxi-dev libxinerama-dev \
|
|
libxcursor-dev libwayland-dev libxkbcommon-dev wayland-protocols libgl1-mesa-dev qt6-base-dev \
|
|
libasound2-dev
|
|
|
|
- name: Install macOS dependencies (brew)
|
|
if: ${{ matrix.brew }}
|
|
run: |
|
|
brew update
|
|
brew install cmake ninja llvm qt6
|
|
echo "LLVM_ROOT=$(brew --prefix llvm)/bin" >> $GITHUB_ENV
|
|
|
|
- name: Setup Emscripten
|
|
uses: mymindstorm/setup-emsdk@master
|
|
if: ${{ matrix.emsdk }}
|
|
|
|
- name: Setup ninja
|
|
if: ${{ matrix.msvc }}
|
|
uses: ashutoshvarma/setup-ninja@master
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Configure (CMake)
|
|
run: |
|
|
${{ matrix.cmake-wrapper || '' }} cmake -S . -B build -GNinja \
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
|
|
-DISLE_USE_DX5=${{ !!matrix.dx5 }} \
|
|
-DISLE_BUILD_CONFIG=${{ matrix.config }} \
|
|
-DENABLE_CLANG_TIDY=${{ !!matrix.clang-tidy }} \
|
|
-DISLE_WERROR=${{ !!matrix.werror }} \
|
|
-DISLE_DEBUG=OFF \
|
|
-Werror=dev
|
|
|
|
- name: Build (CMake)
|
|
run: cmake --build build --verbose
|
|
|
|
- name: Package (CPack)
|
|
run: |
|
|
cd build
|
|
cpack .
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: Release-${{ matrix.name }}
|
|
path: |
|
|
build/dist/isle-*
|
|
|
|
release:
|
|
name: 'Release'
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- name: Download All Artifacts
|
|
uses: actions/download-artifact@main
|
|
with:
|
|
pattern: Release-*
|
|
path: Release
|
|
merge-multiple: true
|
|
|
|
- name: Checkout uploadtool
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: 'probonopd/uploadtool'
|
|
path: 'uploadtool'
|
|
|
|
- name: Upload Continuous Release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
./uploadtool/upload.sh Release/*
|