Merge branch 'master' of https://github.com/Pyrdacor/freeserf.net #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: macOS | |
| on: | |
| workflow_dispatch: | |
| push: | |
| tags: | |
| - 'v*.*.*' | |
| jobs: | |
| Binaries: | |
| strategy: | |
| fail-fast: false | |
| runs-on: macos-26 | |
| steps: | |
| - name: Checkout Freeserf.net | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: Pyrdacor/freeserf.net | |
| submodules: recursive | |
| path: freeserf | |
| - name: Install Dependencies | |
| run: | | |
| echo "Installing dependencies" | |
| brew install dotnet | |
| - name: Set Build Flags | |
| run: | | |
| echo "PLATFORM=macOS" >> $GITHUB_ENV | |
| - name: Build Freeserf | |
| run: | | |
| mkdir Freeserf_binaries | |
| dotnet publish -c MacRelease freeserf/FreeserfNet/FreeserfNet.csproj -p:DefineConstants=OSX -p:PublishSingleFile=true -r osx-arm64 | |
| dotnet publish -c MacRelease freeserf/FreeserfNet/FreeserfNet.csproj -p:DefineConstants=OSX -p:PublishSingleFile=true -r osx-x64 | |
| lipo -create -arch arm64 freeserf/FreeserfNet/bin/${{ env.PLATFORM }}/MacRelease/osx-arm64/publish/FreeserfNet -arch x86_64 freeserf/FreeserfNet/bin/${{ env.PLATFORM }}/MacRelease/osx-x64/publish/FreeserfNet -output Freeserf_binaries/FreeserfNet | |
| lipo -create -arch arm64 freeserf//FreeserfNet/bin/${{ env.PLATFORM }}/MacRelease/osx-arm64/publish/libglfw.3.dylib -arch x86_64 freeserf/FreeserfNet/bin/${{ env.PLATFORM }}/MacRelease/osx-x64/publish/libglfw.3.dylib -output Freeserf_binaries/libglfw.3.dylib | |
| codesign --force --deep --sign - Freeserf_binaries/FreeserfNet | |
| mv freeserf/FreeserfNet/bin/${{ env.PLATFORM }}/MacRelease/osx-arm64/publish/Bass/ Freeserf_binaries | |
| - name: Create Archive | |
| run: | | |
| tar cv Freeserf_binaries | gzip -9 > Freeserf.tar.gz | |
| - name: Upload Artifacts - ${{ env.PLATFORM }} | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: Freeserf-${{ env.PLATFORM }}-Bin | |
| path: Freeserf.tar.gz | |
| if-no-files-found: error | |
| Bundle: | |
| strategy: | |
| fail-fast: false | |
| runs-on: macos-26 | |
| needs: Binaries | |
| steps: | |
| - name: Checkout Freeserf.net | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: Pyrdacor/freeserf.net | |
| submodules: recursive | |
| path: freeserf | |
| - name: Download Binaries | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: Freeserf-macOS-Bin | |
| path: freeserf_bin | |
| - name: Install Dependencies | |
| run: | | |
| echo "Installing dependencies" | |
| brew install dylibbundler | |
| - name: Make App Bundle | |
| working-directory: ${{ github.workspace }} | |
| run: | | |
| tar -xvf freeserf_bin/Freeserf.tar.gz | |
| mkdir -p Freeserf.app/Contents/MacOS/Bass | |
| mkdir -p Freeserf.app/Contents/Frameworks | |
| mkdir -p Freeserf.app/Contents/Resources | |
| cp Freeserf_binaries/FreeserfNet Freeserf.app/Contents/MacOS/FreeserfNet | |
| cp Freeserf_binaries/Bass/ChoriumRevA.SF2 Freeserf.app/Contents/MacOS/Bass/ | |
| cp Freeserf_binaries/libglfw.3.dylib Freeserf.app/Contents/Frameworks/libglfw.3.dylib | |
| cp freeserf/FreeserfNet/bass/osx/libbass.dylib Freeserf.app/Contents/Frameworks/libbass.dylib | |
| cp freeserf/FreeserfNet/bass/osx/libbassmidi.dylib Freeserf.app/Contents/Frameworks/libbassmidi.dylib | |
| mkdir Freeserf.iconset | |
| sips -z 16 16 freeserf/FreeserfNet/icon_mac.png --out Freeserf.iconset/icon_16x16.png | |
| sips -z 32 32 freeserf/FreeserfNet/icon_mac.png --out Freeserf.iconset/icon_16x16@2x.png | |
| sips -z 128 128 freeserf/FreeserfNet/icon_mac.png --out Freeserf.iconset/icon_128x128.png | |
| sips -z 256 256 freeserf/FreeserfNet/icon_mac.png --out Freeserf.iconset/icon_128x128@2x.png | |
| sips -z 512 512 freeserf/FreeserfNet/icon_mac.png --out Freeserf.iconset/icon_512x512.png | |
| cp freeserf/FreeserfNet/icon_mac.png Freeserf.iconset/icon_512x512@2x.png | |
| iconutil -c icns Freeserf.iconset | |
| cp -R Freeserf.icns Freeserf.app/Contents/Resources/ | |
| cp freeserf/FreeserfNet/Info.plist Freeserf.app/Contents/Info.plist | |
| echo "-n APPLFRSF" > "Freeserf.app/Contents/PkgInfo" | |
| install_name_tool -add_rpath @executable_path/../Frameworks Freeserf.app/Contents/MacOS/FreeserfNet | |
| dylibbundler --fix-file Freeserf.app/Contents/MacOS/FreeserfNet -p @executable_path/../Frameworks/ | |
| - name: Create Archive | |
| working-directory: ${{ github.workspace }} | |
| run: | | |
| mkdir image | |
| ln -s /Applications image/Applications | |
| mv Freeserf.app image/Freeserf.app | |
| hdiutil create -volname "Freeserf" -srcfolder image Freeserf | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: Freeserf-macOS-App | |
| path: Freeserf.dmg | |
| if-no-files-found: error |