name: Build Binaries on: workflow_dispatch: push: branches: - '**' # every branch - '!no-build-**' # unless marked as no-build jobs: build: strategy: fail-fast: false matrix: config: - name: "Windows" os_identifier: "win" os: windows-2019 prefixes: '' extra_flags: '-T host=x86 -A win32 -DGEODE_DEBUG=On' out_paths: './bin/nightly/Geode.pdb ./bin/nightly/Geode.dll ./bin/nightly/GeodeUpdater.exe ./bin/nightly/Geode.lib ./bin/nightly/XInput9_1_0.dll' cli_cmd: '' - name: "macOS" os_identifier: "mac" os: macos-latest prefixes: 'PATH="/usr/local/opt/ccache/libexec:$PATH"' extra_flags: "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DGEODE_DEBUG=On -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13" out_paths: './bin/nightly/Geode.dylib ./bin/nightly/GeodeBootstrapper.dylib ./loader/include/link/libfmod.dylib' cli_cmd: 'chmod +x $GITHUB_WORKSPACE/cli/geode' name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} steps: - uses: actions/checkout@v2 with: submodules: recursive - uses: ilammy/msvc-dev-cmd@v1 with: arch: x86 if: matrix.config.os_identifier == 'win' - name: Configure ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.config.os }} - name: Download CLI uses: robinraju/release-downloader@v1.5 with: repository: geode-sdk/cli latest: true fileName: "*-${{ matrix.config.os_identifier }}.zip" tarBall: false zipBall: false out-file-path: "cli" - name: Unzip CLI run: | 7z x "${{ github.workspace }}/cli/*-${{ matrix.config.os_identifier }}.zip" -o"${{ github.workspace }}/cli" - name: Add CLI to Path run: | ${{ matrix.config.cli_cmd }} echo "${{ github.workspace }}/cli" >> $GITHUB_PATH - name: Configure CMake run: > ${{ matrix.config.prefixes }} cmake -B ${{ github.workspace }}/build ${{ matrix.config.extra_flags }} -DCLI_PATH="${{ github.workspace }}/cli" -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - name: Build run: | cd build cmake --build . --config RelWithDebInfo --parallel - name: Move to output folder shell: bash working-directory: ${{ github.workspace }} run: | mkdir ./out mv ${{ matrix.config.out_paths }} ./out - name: Get version uses: juliangruber/read-file-action@v1.1.6 with: path: ${{ github.workspace }}/VERSION id: version - name: Trim whitespace from version shell: bash run: echo "VERSION_TRIM=$(echo '${{ steps.version.outputs.content }}' | xargs)" >> $GITHUB_ENV - name: Delete resource cache file run: | rm ./bin/nightly/resources/.geode_cache - name: Upload resources uses: actions/upload-artifact@v2 with: name: resources path: ./bin/nightly/resources if: matrix.config.os_identifier == 'win' - name: Upload Artifacts uses: actions/upload-artifact@v2 with: name: geode-v${{ env.VERSION_TRIM }}-${{ matrix.config.os_identifier }} path: ./out - name: Package MacOS run: | cp ./bin/nightly/resources ./out/resources ./installer/mac/package.sh ./out ./out/geode-installer-v${{ env.VERSION_TRIM }}-${{ matrix.config.os_identifier }}.pkg if: matrix.config.os_identifier == 'mac' - name: Publish MacOS Installer uses: actions/upload-artifact@v2 with: name: geode-installer-v${{ env.VERSION_TRIM }}-${{ matrix.config.os_identifier }} path: ./out/geode-installer-v${{ env.VERSION_TRIM }}-${{ matrix.config.os_identifier }}.pkg if: matrix.config.os_identifier == 'mac' publish: runs-on: ubuntu-latest needs: build if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v2 - name: Get version uses: juliangruber/read-file-action@v1.1.6 with: path: ${{ github.workspace }}/VERSION id: version - name: Trim whitespace from version shell: bash run: echo "VERSION_TRIM=$(echo '${{ steps.version.outputs.content }}' | xargs)" >> $GITHUB_ENV - uses: actions/download-artifact@v3 with: path: ${{ github.workspace }} - uses: vimtor/action-zip@v1 with: files: geode-v${{ env.VERSION_TRIM }}-mac/Geode.dylib geode-v${{ env.VERSION_TRIM }}-mac/GeodeBootstrapper.dylib dest: geode-nightly-mac.zip - uses: vimtor/action-zip@v1 with: files: geode-v${{ env.VERSION_TRIM }}-win/XInput9_1_0.dll geode-v${{ env.VERSION_TRIM }}-win/Geode.dll geode-v${{ env.VERSION_TRIM }}-win/GeodeUpdater.exe geode-v${{ env.VERSION_TRIM }}-win/Geode.lib dest: geode-nightly-win.zip - name: Update release uses: IsaacShelton/update-existing-release@v1.3.2 with: token: ${{ secrets.GITHUB_TOKEN }} files: ./geode-nightly-mac.zip ./geode-nightly-win.zip release: nightly tag: nightly prerelease: true