BuildZMusic #6
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: BuildZMusic | |
| permissions: | |
| contents: read | |
| packages: write | |
| on: workflow_dispatch | |
| jobs: | |
| build_native: | |
| strategy: | |
| matrix: | |
| include: | |
| - os: ubuntu-22.04 | |
| rid: linux-x64 | |
| prereqs: | | |
| sudo apt-get install -y cmake libsndfile1-dev libmpg123-dev libglib2.0-dev | |
| cmakeargs: -B build | |
| linkerfiles: ZMusic/build/source/libzmusic.a | |
| libfiles: ZMusic/build/source/libzmusic.so | |
| - os: windows-2022 | |
| rid: win-x64 | |
| prereqs: | | |
| git clone --depth 1 https://github.com/microsoft/vcpkg | |
| cd vcpkg | |
| .\bootstrap-vcpkg.bat | |
| .\vcpkg install libsndfile:x64-windows-static | |
| .\vcpkg install mpg123:x64-windows-static | |
| mkdir ../deps | |
| $files = dir -recurse packages\*x64-windows-static\lib\*.lib | |
| $files | foreach-object { Copy-Item $_ ..\deps } | |
| cmakeargs: -B build -A x64 -DMPG123_INCLUDE_DIR:PATH="D:/a/ZMusicWrapper/ZMusicWrapper/vcpkg/installed/x64-windows-static/include" -DSNDFILE_LIBRARY:FILEPATH="D:/a/ZMusicWrapper/ZMusicWrapper/vcpkg/installed/x64-windows-static/lib/sndfile.lib" -DMPG123_LIBRARY:FILEPATH="D:/a/ZMusicWrapper/ZMusicWrapper/vcpkg/installed/x64-windows-static/lib/mpg123.lib" -DSNDFILE_INCLUDE_DIR:PATH="D:/a/ZMusicWrapper/ZMusicWrapper/vcpkg/installed/x64-windows-static/include" -DCMAKE_SHARED_LINKER_FLAGS:STRING="/machine:x64 /LIBPATH:D:/a/ZMusicWrapper/ZMusicWrapper/deps" -DCMAKE_CXX_STANDARD_LIBRARIES:STRING="kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib FLAC.lib FLAC++.lib libmp3lame-static.lib libmpghip-static.lib ogg.lib opus.lib out123.lib syn123.lib vorbis.lib shlwapi.lib" | |
| linkerfiles: ZMusic/build/source/Release/zmusic.lib deps/*.lib | |
| libfiles: ZMusic/build/source/Release/zmusic.dll | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Clone Submodules | |
| run: git submodule update --init | |
| - name: Install Tools | |
| run: ${{ matrix.prereqs }} | |
| - name: CMake Configure Shared | |
| run: cmake ${{ matrix.cmakeargs }} -DDYN_SNDFILE:BOOL="0" -DDYN_MPG123:BOOL="0" | |
| working-directory: ZMusic | |
| - name: CMake Build Shared | |
| run: cmake --build . --config Release -j | |
| working-directory: ZMusic/build | |
| - name: CMake Configure Static | |
| run: cmake ${{ matrix.cmakeargs }} -DBUILD_SHARED_LIBS:BOOL="0" -DDYN_SNDFILE:BOOL="0" -DDYN_MPG123:BOOL="0" | |
| working-directory: ZMusic | |
| - name: CMake Build Static | |
| run: cmake --build . --config Release -j | |
| working-directory: ZMusic/build | |
| - name: Make Output Folder | |
| run: | | |
| mkdir -p build_native/${{ matrix.rid }} | |
| cp ${{ matrix.linkerfiles }} build_native/${{ matrix.rid }} | |
| cp ${{ matrix.libfiles }} build_native/${{ matrix.rid }} | |
| shell: bash | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: native-${{ matrix.rid }} | |
| path: build_native | |
| pack: | |
| runs-on: ubuntu-22.04 | |
| needs: build_native | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Get Native Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: native-* | |
| path: build-native | |
| merge-multiple: true | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: "8.0.x" | |
| - name: pack | |
| run: dotnet pack -c Release -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg | |
| working-directory: ZMusicWrapper | |
| - name: Make Output Folder | |
| run: | | |
| mkdir -p build_managed | |
| cp ZMusicWrapper/bin/Release/*.nupkg build_managed | |
| cp ZMusicWrapper/bin/Release/*.snupkg build_managed | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ZMusicWrapper | |
| path: build_managed |