Skip to content

Merge pull request #748 from LoboEire/master #2376

Merge pull request #748 from LoboEire/master

Merge pull request #748 from LoboEire/master #2376

Workflow file for this run

name: CMake
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
# The number of days to retain artifacts
RETENTION_DAYS: 30
jobs:
build-linux:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libsdl2-dev
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- uses: actions/upload-artifact@v4
with:
name: edge-classic-linux
path: |
${{github.workspace}}/autoload
${{github.workspace}}/edge_base
${{github.workspace}}/edge_defs
${{github.workspace}}/edge_fixes
${{github.workspace}}/soundfont
${{github.workspace}}/edge-classic
retention-days: ${{env.RETENTION_DAYS}}
build-mingw:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Download w64devkit
run: invoke-webrequest https://github.com/skeeto/w64devkit/releases/download/v2.0.0/w64devkit-x86-2.0.0.exe -outfile ${{github.workspace}}\w64devkit.exe
- name: Extract w64devkit
run: ${{github.workspace}}\w64devkit.exe -y
- name: Download SDL2-devel
run: invoke-webrequest https://github.com/libsdl-org/SDL/releases/download/release-2.30.9/SDL2-devel-2.30.9-mingw.zip -outfile ${{github.workspace}}\sdl2-devel.zip
- name: Extract SDL2-devel
run: expand-archive -path ${{github.workspace}}\sdl2-devel.zip -destinationpath ${{github.workspace}}
- name: Copy SDL2-devel contents to w64devkit
run: |
robocopy ${{github.workspace}}\SDL2-2.30.9\i686-w64-mingw32 ${{github.workspace}}\w64devkit\i686-w64-mingw32 /s ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
robocopy ${{github.workspace}}\SDL2-2.30.9\i686-w64-mingw32 ${{github.workspace}}\w64devkit /s ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
- name: Set environment variables and build
run: |
$env:Path = "${{github.workspace}}\w64devkit\bin;" + $env:Path
cmake -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_CXX_FLAGS="-isystem ${{github.workspace}}\w64devkit\include" -G "MinGW Makefiles"
cmake --build build --config ${{env.BUILD_TYPE}}
strip ${{github.workspace}}\edge-classic.exe
- name: Copy SDL2 DLL
run: copy-item -path ${{github.workspace}}\SDL2-2.30.9\i686-w64-mingw32\bin\SDL2.dll -destination ${{github.workspace}}
- uses: actions/upload-artifact@v4
with:
name: edge-classic-mingw
path: |
autoload
edge_base
edge_defs
edge_fixes
soundfont
edge-classic.exe
*.dll
retention-days: ${{env.RETENTION_DAYS}}
build-msvc-es2:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Configure CMake MSVC ES2
run: mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEDGE_GL_ES2=ON
- name: Build MSVC GLES2
run: cmake --build build --config ${{env.BUILD_TYPE}}
- name: Clone and copy ANGLE binaries
run: git clone https://github.com/edge-classic/angle-binaries && copy angle-binaries\Windows\*.dll .\
- uses: actions/upload-artifact@v4
with:
name: edge-classic-msvc-es2
path: |
autoload
edge_base
edge_defs
edge_fixes
soundfont
edge-classic.exe
*.dll
retention-days: ${{env.RETENTION_DAYS}}
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install sdl2
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- uses: actions/upload-artifact@v4
with:
name: edge-classic-macos
path: |
${{github.workspace}}/autoload
${{github.workspace}}/edge_base
${{github.workspace}}/edge_defs
${{github.workspace}}/edge_fixes
${{github.workspace}}/soundfont
${{github.workspace}}/edge-classic
retention-days: ${{env.RETENTION_DAYS}}
build-web-player:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: mymindstorm/setup-emsdk@v14
with:
version: latest
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE="${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
- name: Setup Preloads
run: git clone https://github.com/edge-classic/web-player-wads ${{github.workspace}}/web-player-wads && cp ${{github.workspace}}/web-player-wads/freedoom/freedoom2.wad ${{github.workspace}}/web/preload/ && cp ${{github.workspace}}/web-player-wads/blasphemer/blasphem.wad ${{github.workspace}}/web/preload/
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- uses: actions/upload-artifact@v4
with:
name: edge-classic-web-player
path: |
${{github.workspace}}/web/site
retention-days: ${{env.RETENTION_DAYS}}