mirror of
https://github.com/dhewm/dhewm3.git
synced 2025-01-27 03:30:59 +00:00
Add Github Actions builds for Windows, Linux and macOS
This commit is contained in:
parent
8863c36067
commit
872905f300
3 changed files with 290 additions and 0 deletions
68
.github/workflows/linux.yml
vendored
Normal file
68
.github/workflows/linux.yml
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
name: Testbuild for Linux
|
||||||
|
run-name: testbuild_linux
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- edited
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
concurrency:
|
||||||
|
# Cancel concurrent workflows for the same PR or commit hash.
|
||||||
|
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
|
||||||
|
cancel-in-progress: true
|
||||||
|
jobs:
|
||||||
|
build_ubuntu_x86_64:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- env: ubuntu
|
||||||
|
steps:
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install libgl1-mesa-dev libsdl2-dev libopenal-dev libcurl4-openssl-dev cmake ninja-build
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
# -DFORCE_COLORED_OUTPUT=ON ? didn't seem to work, or at least not visible on website
|
||||||
|
cmake -G Ninja -DDEDICATED=ON ../neo/
|
||||||
|
ninja
|
||||||
|
- name: Create testbuild package
|
||||||
|
run: |
|
||||||
|
# Create release directory tree
|
||||||
|
export PKGDIR="dhewm3-linux-$(git rev-parse --short HEAD)"
|
||||||
|
echo "pkgname=$PKGDIR" >> $GITHUB_ENV
|
||||||
|
mkdir -p publish/$PKGDIR/base
|
||||||
|
mkdir publish/$PKGDIR/d3xp
|
||||||
|
# Copy release assets
|
||||||
|
cd build
|
||||||
|
cp dhewm3 dhewm3ded base.so d3xp.so ../publish/$PKGDIR/
|
||||||
|
cd ..
|
||||||
|
# Copy misc assets
|
||||||
|
cp base/gamepad.cfg publish/$PKGDIR/base/
|
||||||
|
cp base/gamepad-d3xp.cfg publish/$PKGDIR/d3xp/
|
||||||
|
cp COPYING.txt publish/$PKGDIR/
|
||||||
|
# TODO: prepend to README that executables must be set executable? (and maybe commit, build, arch etc)
|
||||||
|
echo "dhewm3 for 64bit (amd64 aka x86_64 aka x64) Linux, built $(date)" > publish/$PKGDIR/README.txt
|
||||||
|
echo -e "from ${{ github.ref_name }} commit ${{ github.sha }}\n" >> publish/$PKGDIR/README.txt
|
||||||
|
echo "!!! Note that you must set dhewm3(ded) executable !!!" >> publish/$PKGDIR/README.txt
|
||||||
|
echo "! In a Terminal, in this directory, run:" >> publish/$PKGDIR/README.txt
|
||||||
|
echo " chmod 755 dhewm3 dhewm3ded" >> publish/$PKGDIR/README.txt
|
||||||
|
echo -e "(this is because of limitations in Githubs Workflow Actions)\n" >> publish/$PKGDIR/README.txt
|
||||||
|
cat README.md >> publish/$PKGDIR/README.txt
|
||||||
|
cp Changelog.md publish/$PKGDIR/Changelog.txt
|
||||||
|
cp Configuration.md publish/$PKGDIR/Configuration.txt
|
||||||
|
- name: Upload testbuild package
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.pkgname }}
|
||||||
|
path: publish/
|
||||||
|
if-no-files-found: error
|
63
.github/workflows/macos.yml
vendored
Normal file
63
.github/workflows/macos.yml
vendored
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
name: Testbuild for MacOS
|
||||||
|
run-name: testbuild_macos
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- edited
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
concurrency:
|
||||||
|
# Cancel concurrent workflows for the same PR or commit hash.
|
||||||
|
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
|
||||||
|
cancel-in-progress: true
|
||||||
|
jobs:
|
||||||
|
build_macos_aarch64:
|
||||||
|
runs-on: macos-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- env: macos
|
||||||
|
steps:
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
brew update
|
||||||
|
brew install sdl2 openal-soft
|
||||||
|
# not installing make and cmake, cmake is installed by default, make doesn't seem to be needed
|
||||||
|
# when using cmake --build
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
mkdir build
|
||||||
|
# Note: not building dedicated server because it's not supported on Macs
|
||||||
|
cmake -DOPENAL_LIBRARY="/opt/homebrew/opt/openal-soft/lib/libopenal.dylib" -DOPENAL_INCLUDE_DIR="/opt/homebrew/opt/openal-soft/include" -S neo/ -B build
|
||||||
|
cmake --build build
|
||||||
|
- name: Create testbuild package
|
||||||
|
run: |
|
||||||
|
# Create release directory tree
|
||||||
|
export PKGDIR="dhewm3-macos-$(git rev-parse --short HEAD)"
|
||||||
|
echo "pkgname=$PKGDIR" >> $GITHUB_ENV
|
||||||
|
mkdir -p publish/$PKGDIR/base
|
||||||
|
mkdir publish/$PKGDIR/d3xp
|
||||||
|
# Copy release assets
|
||||||
|
cd build
|
||||||
|
cp -r dhewm3.app ../publish/$PKGDIR/
|
||||||
|
cp base.dylib d3xp.dylib ../publish/$PKGDIR/
|
||||||
|
cd ..
|
||||||
|
# Copy misc assets
|
||||||
|
cp base/gamepad.cfg publish/$PKGDIR/base/
|
||||||
|
cp base/gamepad-d3xp.cfg publish/$PKGDIR/d3xp/
|
||||||
|
cp COPYING.txt publish/$PKGDIR/
|
||||||
|
cp README.md publish/$PKGDIR/README.txt
|
||||||
|
cp Changelog.md publish/$PKGDIR/Changelog.txt
|
||||||
|
cp Configuration.md publish/$PKGDIR/Configuration.txt
|
||||||
|
- name: Upload testbuild package
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.pkgname }}
|
||||||
|
path: publish/
|
||||||
|
if-no-files-found: error
|
159
.github/workflows/win_msvc.yml
vendored
Normal file
159
.github/workflows/win_msvc.yml
vendored
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
name: Testbuild for x86 and x86_64 Windows
|
||||||
|
run-name: testbuild_windows
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- edited
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
concurrency:
|
||||||
|
# Cancel concurrent workflows for the same PR or commit hash.
|
||||||
|
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
|
||||||
|
cancel-in-progress: true
|
||||||
|
jobs:
|
||||||
|
build_win_x86_msvc:
|
||||||
|
runs-on: windows-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
# use git bash for for all steps (unless specified otherwise per step)
|
||||||
|
shell: bash
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
# Download and extract dhewm3-libs
|
||||||
|
#echo $PWD # /d/a/dhewm3/dhewm3
|
||||||
|
# as the repo will be cloned into the directory we're currently in (O_o)
|
||||||
|
# go one directory up to D:\a\dhewm3\ and put the dhewm3libs there
|
||||||
|
cd ..
|
||||||
|
# https://github.com/dhewm/dhewm3-libs/archive/refs/heads/master.zip
|
||||||
|
# for some reason the following downloads an empty file, so use the other URL I got from
|
||||||
|
# "Copy Download Link" in Firefox (after downloading the file there) instead
|
||||||
|
#curl -o dhewm3libs.zip https://github.com/dhewm/dhewm3-libs/archive/refs/heads/master.zip
|
||||||
|
curl -o dhewm3libs.zip https://codeload.github.com/dhewm/dhewm3-libs/zip/refs/heads/master
|
||||||
|
# only unpack the stuff needed (no x86_64 stuff, no docs from share/)
|
||||||
|
unzip dhewm3libs.zip "dhewm3-libs-master/i686-w64-mingw32/**" -x "dhewm3-libs-master/i686-w64-mingw32/share/**"
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
# build with cmake and visual studio
|
||||||
|
#echo $PWD # /d/a/dhewm3/dhewm3
|
||||||
|
# NOTE: not setting -G "Visual Studio 17 2022" so it just uses the default VS version it can find
|
||||||
|
cmake -A Win32 -DDHEWM3LIBS="../dhewm3-libs-master/i686-w64-mingw32/" -DDEDICATED=ON -DTOOLS=ON -S neo/ -B build
|
||||||
|
time cmake --build build/ --config RelWithDebInfo
|
||||||
|
- name: Create testbuild package
|
||||||
|
run: |
|
||||||
|
# Create release directory tree
|
||||||
|
export PKGDIR="dhewm3-win32-$(git rev-parse --short HEAD)"
|
||||||
|
echo "pkgname=$PKGDIR" >> $GITHUB_ENV
|
||||||
|
mkdir -p publish/$PKGDIR/base
|
||||||
|
mkdir publish/$PKGDIR/d3xp
|
||||||
|
# debug symbols (*.pdb) are put in a separate zip
|
||||||
|
mkdir -p debug-syms/$PKGDIR
|
||||||
|
# Copy release assets
|
||||||
|
cd build/RelWithDebInfo
|
||||||
|
cp dhewm3.exe dhewm3ded.exe base.dll d3xp.dll ../../publish/$PKGDIR/
|
||||||
|
cp -r *.pdb ../../debug-syms/$PKGDIR/
|
||||||
|
cd ../..
|
||||||
|
# Copy misc assets
|
||||||
|
cp base/gamepad.cfg publish/$PKGDIR/base/
|
||||||
|
cp base/gamepad-d3xp.cfg publish/$PKGDIR/d3xp/
|
||||||
|
cp COPYING.txt publish/$PKGDIR/
|
||||||
|
echo "dhewm3 for 32bit (x86) Windows, built $(date)" > publish/$PKGDIR/README.txt
|
||||||
|
echo -e "from ${{ github.ref_name }} commit ${{ github.sha }}\n" >> publish/$PKGDIR/README.txt
|
||||||
|
cat README.md >> publish/$PKGDIR/README.txt
|
||||||
|
cp Changelog.md publish/$PKGDIR/Changelog.txt
|
||||||
|
cp Configuration.md publish/$PKGDIR/Configuration.txt
|
||||||
|
# copy runtime libraries (SDL, OpenAL, cURL)
|
||||||
|
cd ../dhewm3-libs-master/i686-w64-mingw32/bin/
|
||||||
|
cp OpenAL32.dll SDL2.dll libcurl-4.dll ../../../dhewm3/publish/$PKGDIR/
|
||||||
|
cd -
|
||||||
|
- name: Upload testbuild package
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.pkgname }}
|
||||||
|
path: publish/
|
||||||
|
if-no-files-found: error
|
||||||
|
- name: Upload testbuild debug symbols
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.pkgname }}-debugsyms
|
||||||
|
path: debug-syms/
|
||||||
|
if-no-files-found: error
|
||||||
|
build_win_x86_64_msvc:
|
||||||
|
runs-on: windows-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
# use git bash for for all steps (unless specified otherwise per step)
|
||||||
|
shell: bash
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
# Download and extract dhewm3-libs
|
||||||
|
#echo $PWD # /d/a/dhewm3/dhewm3
|
||||||
|
# as the repo will be cloned into the directory we're currently in (O_o)
|
||||||
|
# go one directory up to D:\a\dhewm3\ and put the dhewm3libs there
|
||||||
|
cd ..
|
||||||
|
# https://github.com/dhewm/dhewm3-libs/archive/refs/heads/master.zip
|
||||||
|
# for some reason the following downloads an empty file, so use the other URL I got from
|
||||||
|
# "Copy Download Link" in Firefox (after downloading the file there) instead
|
||||||
|
#curl -o dhewm3libs.zip https://github.com/dhewm/dhewm3-libs/archive/refs/heads/master.zip
|
||||||
|
curl -o dhewm3libs.zip https://codeload.github.com/dhewm/dhewm3-libs/zip/refs/heads/master
|
||||||
|
# only unpack the stuff needed (no i686 stuff, no docs from share/)
|
||||||
|
unzip dhewm3libs.zip "dhewm3-libs-master/x86_64-w64-mingw32/**" -x "dhewm3-libs-master/x86_64-w64-mingw32/share/**"
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
# build with cmake and visual studio
|
||||||
|
#echo $PWD # /d/a/dhewm3/dhewm3
|
||||||
|
# NOTE: not setting -G "Visual Studio 17 2022" so it just uses the default VS version it can find
|
||||||
|
cmake -A x64 -DDHEWM3LIBS="../dhewm3-libs-master/x86_64-w64-mingw32/" -DDEDICATED=ON -DTOOLS=ON -S neo/ -B build
|
||||||
|
time cmake --build build/ --config RelWithDebInfo
|
||||||
|
- name: Create testbuild package
|
||||||
|
run: |
|
||||||
|
# Create release directory tree
|
||||||
|
export PKGDIR="dhewm3-win64-$(git rev-parse --short HEAD)"
|
||||||
|
echo "pkgname=$PKGDIR" >> $GITHUB_ENV
|
||||||
|
#echo "PKGDIR is $PKGDIR"
|
||||||
|
mkdir -p publish/$PKGDIR/base
|
||||||
|
mkdir publish/$PKGDIR/d3xp
|
||||||
|
# debug symbols (*.pdb) are put in a separate zip
|
||||||
|
mkdir -p debug-syms/$PKGDIR
|
||||||
|
# Copy release assets
|
||||||
|
cd build/RelWithDebInfo
|
||||||
|
cp dhewm3.exe dhewm3ded.exe base.dll d3xp.dll ../../publish/$PKGDIR/
|
||||||
|
cp -r *.pdb ../../debug-syms/$PKGDIR/
|
||||||
|
cd ../..
|
||||||
|
# Copy misc assets
|
||||||
|
cp base/gamepad.cfg publish/$PKGDIR/base/
|
||||||
|
cp base/gamepad-d3xp.cfg publish/$PKGDIR/d3xp/
|
||||||
|
cp COPYING.txt publish/$PKGDIR/
|
||||||
|
echo "dhewm3 for 64bit (amd64 aka x86_64 aka x64) Windows, built $(date)" > publish/$PKGDIR/README.txt
|
||||||
|
echo -e "from ${{ github.ref_name }} commit ${{ github.sha }}\n" >> publish/$PKGDIR/README.txt
|
||||||
|
cat README.md >> publish/$PKGDIR/README.txt
|
||||||
|
cp Changelog.md publish/$PKGDIR/Changelog.txt
|
||||||
|
cp Configuration.md publish/$PKGDIR/Configuration.txt
|
||||||
|
# copy runtime libraries (SDL, OpenAL, cURL)
|
||||||
|
cd ../dhewm3-libs-master/x86_64-w64-mingw32/bin/
|
||||||
|
cp OpenAL32.dll SDL2.dll libcurl-4.dll ../../../dhewm3/publish/$PKGDIR/
|
||||||
|
cd -
|
||||||
|
- name: Upload testbuild package
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.pkgname }}
|
||||||
|
path: publish/
|
||||||
|
if-no-files-found: error
|
||||||
|
- name: Upload testbuild debug symbols
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.pkgname }}-debugsyms
|
||||||
|
path: debug-syms/
|
||||||
|
if-no-files-found: error
|
Loading…
Reference in a new issue