Skip to content

Build Release Package for macOS #1

Build Release Package for macOS

Build Release Package for macOS #1

# Release workflow for macOS
# Builds a universal binary on macOS.
name: Build Release Package for macOS
on: workflow_dispatch
jobs:
build-deb:
name: ProductBuild Installer, macOS x86_64+arm64
runs-on: macos-latest
steps:
# We need to build third-party libraries (POCO, SDL2 and projectM) ourselves, as neither Homebrew
# nor vcpkg support building universal binaries.
- name: Checkout libSDL2 Sources
uses: actions/checkout@v4
with:
repository: libsdl-org/SDL
path: libsdl2
ref: 'release-2.32.10'
submodules: recursive
- name: Build libSDL2
run: |
mkdir cmake-build-libsdl2
cmake -G Ninja -S libsdl2 -B cmake-build-libsdl2 \
'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libsdl2
cmake --build cmake-build-libsdl2 --parallel
cmake --install "${{ github.workspace }}/cmake-build-libsdl2"
- name: Checkout Poco Sources
uses: actions/checkout@v4
with:
repository: pocoproject/poco
path: poco
ref: 'poco-1.14.1'
submodules: recursive
- name: Build Poco
run: |
mkdir cmake-build-poco
cmake -G Ninja -S poco -B cmake-build-poco \
'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
-DENABLE_CRYPTO=OFF \
-DENABLE_NET=OFF \
-DENABLE_NETSSL=OFF \
-DENABLE_ZIP=OFF \
-DENABLE_MONGODB=OFF \
-DENABLE_REDIS=OFF \
-DENABLE_PAGECOMPILER=OFF \
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
-DENABLE_ACTIVERECORD=OFF \
-DENABLE_ACTIVERECORD_COMPILER=OFF \
-DENABLE_DATA_ODBC=OFF \
-DENABLE_DATA_POSTGRESQL=OFF \
-DENABLE_DATA_MYSQL=OFF \
-DENABLE_JWT=OFF \
-DENABLE_PROMETHEUS=OFF
cmake --build cmake-build-poco --parallel
cmake --install "${{ github.workspace }}/cmake-build-poco"
- name: Checkout libprojectM Sources
uses: actions/checkout@v4
with:
repository: projectM-visualizer/projectm
path: projectm
submodules: recursive
- name: Build/Install libprojectM
run: |
mkdir cmake-build-libprojectm
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
cmake --build cmake-build-libprojectm --parallel
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"
- name: Checkout projectMSDL Sources
uses: actions/checkout@v4
with:
path: frontend-sdl2
submodules: recursive
- name: Checkout Cream of the Crop preset pack
uses: actions/checkout@v4
with:
repository: projectM-visualizer/presets-cream-of-the-crop
path: presets-cream-of-the-crop
- name: Checkout Milkdrop Texture Pack
uses: actions/checkout@v4
with:
repository: projectM-visualizer/presets-milkdrop-texture-pack
path: presets-milkdrop-texture-pack
- name: Build projectMSDL
run: |
mkdir cmake-build-frontend-sdl2
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_FREETYPE=OFF \
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
'-DDEFAULT_CONFIG_PATH=${application.dir}/../share/projectMSDL/' \
'-DDEFAULT_PRESETS_PATH=${application.dir}/../share/projectMSDL/presets/' \
'-DDEFAULT_TEXTURES_PATH=${application.dir}/../share/projectMSDL/textures/' \
-DENABLE_INSTALL_BDEPS=ON
cmake --build cmake-build-frontend-sdl2 --parallel
- name: Package projectMSDL
run: |
cd cmake-build-frontend-sdl2
cpack -G productbuild
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: projectMSDL-macOS-Universal
path: cmake-build-frontend-sdl2/*.pkg