Skip to content

BuildZMusic

BuildZMusic #6

Workflow file for this run

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