diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 000000000..64c8c5577 --- /dev/null +++ b/.github/workflows/linux.yml @@ -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 diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 000000000..50f90337c --- /dev/null +++ b/.github/workflows/macos.yml @@ -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 diff --git a/.github/workflows/win_msvc.yml b/.github/workflows/win_msvc.yml new file mode 100644 index 000000000..b394a5a43 --- /dev/null +++ b/.github/workflows/win_msvc.yml @@ -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