name: Continuous Integration on: [push, pull_request] jobs: build: name: ${{ matrix.config.name }} | ${{ matrix.config.build_type }} runs-on: ${{ matrix.config.os }} strategy: fail-fast: false matrix: config: - { name: "Visual Studio 2022", os: windows-2022, extra_options: "-A x64", build_type: "Release" } - { name: "Visual Studio 2019", os: windows-2019, extra_options: "-A x64", build_type: "Release" } - { name: "Visual Studio 2019", os: windows-2019, extra_options: "-A x64", build_type: "Debug" } - { name: "macOS", os: macos-12, deps_cmdline: "brew install libvpx", build_type: "Release" } - { name: "macOS", os: macos-12, extra_options: "-G Xcode -DDYN_OPENAL=OFF", deps_cmdline: "brew install libvpx fluidsynth mpg123 libsndfile", build_type: "Debug" } - { name: "Linux GCC 7", os: ubuntu-20.04, extra_options: "-DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7", deps_cmdline: "sudo apt update && sudo apt install g++-7 libsdl2-dev libvpx-dev libgtk2.0-dev", build_type: "RelWithDebInfo" } - { name: "Linux GCC 11", os: ubuntu-20.04, extra_options: "-DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11", deps_cmdline: "sudo apt update && sudo apt install g++-11 libsdl2-dev libvpx-dev libgtk-3-dev", build_type: "MinSizeRel" } - { name: "Linux Clang 6", os: ubuntu-20.04, extra_options: "-DCMAKE_C_COMPILER=clang-6.0 -DCMAKE_CXX_COMPILER=clang++-6.0 -DDYN_OPENAL=OFF", deps_cmdline: "sudo apt update && sudo apt install clang-6.0 libsdl2-dev libvpx-dev libopenal-dev libfluidsynth-dev libmpg123-dev libsndfile1-dev", build_type: "Debug" } - { name: "Linux Clang 12", os: ubuntu-20.04, extra_options: "-DCMAKE_C_COMPILER=clang-12 -DCMAKE_CXX_COMPILER=clang++-12", deps_cmdline: "sudo apt update && sudo apt install clang-12 libsdl2-dev libvpx-dev", build_type: "Release" } steps: - uses: actions/checkout@v1 - name: Install Dependencies shell: bash run: | if [[ ! -z "${{ matrix.config.deps_cmdline }}" ]]; then eval ${{ matrix.config.deps_cmdline }} fi mkdir build if [[ "${{ runner.os }}" == 'macOS' ]]; then export ZMUSIC_PACKAGE=zmusic-1.1.9-macos.tar.xz elif [[ "${{ runner.os }}" == 'Linux' ]]; then export ZMUSIC_PACKAGE=zmusic-1.1.9-linux.tar.xz fi if [[ ! -z "${ZMUSIC_PACKAGE}" ]]; then cd build wget -q "https://github.com/coelckers/gzdoom/releases/download/ci_deps/${ZMUSIC_PACKAGE}" tar -xf "${ZMUSIC_PACKAGE}" fi - name: Configure shell: bash run: | if [[ "${{ runner.os }}" == 'Windows' ]]; then # Remove Strawberry Perl from PATH environment variable to avoid usage of libraries it provides export PATH=`echo $PATH | tr ":" "\n" | grep -v "Strawberry" | tr "\n" ":"` fi cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -DCMAKE_PREFIX_PATH=`pwd`/build/zmusic -DPK3_QUIET_ZIPDIR=ON ${{ matrix.config.extra_options }} . - name: Build shell: bash run: | export MAKEFLAGS=--keep-going cmake --build build --config ${{ matrix.config.build_type }} --parallel 3 - name: Create Package if: runner.os == 'Windows' # Remove to make packages of all targets shell: bash run: | cd build mkdir package if [[ "${{ runner.os }}" == 'Windows' ]]; then cp ${{ matrix.config.build_type }}/gzdoom.exe ${{ matrix.config.build_type }}/*.pk3 package elif [[ "${{ runner.os }}" == 'macOS' ]]; then cp -r gzdoom.app package elif [[ "${{ runner.os }}" == 'Linux' ]]; then cp gzdoom *.pk3 package fi - name: Upload Package if: runner.os == 'Windows' # Remove to store packages of all targets uses: actions/upload-artifact@v1 with: path: build/package name: ${{ matrix.config.name }} ${{ matrix.config.build_type }} - name: List Build Directory if: always() shell: bash run: | git status ls -lR build