@@ -117,20 +117,6 @@ jobs:
117117 repository : projectM-visualizer/presets-milkdrop-texture-pack
118118 path : presets-milkdrop-texture-pack
119119
120- - name : Build projectMSDL
121- run : |
122- mkdir cmake-build-frontend-sdl2
123- cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
124- '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
125- -DCMAKE_BUILD_TYPE=Release \
126- -DENABLE_FREETYPE=OFF \
127- "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
128- "-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
129- "-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
130- -DENABLE_INSTALL_BDEPS=ON
131- cmake --build cmake-build-frontend-sdl2 --parallel
132- cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install"
133-
134120 - name : Import Code Signing Certificates
135121 env :
136122 MACOS_CERTIFICATE_APPLICATION : ${{ secrets.MACOS_CERTIFICATE_APPLICATION }}
@@ -152,6 +138,19 @@ jobs:
152138
153139 rm app_cert.p12 installer_cert.p12
154140
141+ - name : Build projectMSDL
142+ run : |
143+ mkdir cmake-build-frontend-sdl2
144+ cmake -G Xcode -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
145+ '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64' \
146+ -DENABLE_FREETYPE=OFF \
147+ "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
148+ "-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
149+ "-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
150+ -DENABLE_INSTALL_BDEPS=ON
151+ cmake --build cmake-build-frontend-sdl2 --config Release --parallel
152+ cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install"
153+
155154 - name : Sign Application Bundle
156155 run : |
157156 APP_PATH="${{ github.workspace }}/install/projectM.app"
@@ -180,7 +179,7 @@ jobs:
180179 # Verify
181180 codesign --verify --deep --strict "$APP_PATH"
182181
183- - name : Notarize Application
182+ - name : Notarize Application Bundle
184183 env :
185184 API_KEY_BASE64 : ${{ secrets.MACOS_NOTARY_API_KEY }}
186185 API_KEY_ID : ${{ secrets.MACOS_NOTARY_KEY_ID }}
@@ -202,11 +201,17 @@ jobs:
202201
203202 xcrun stapler staple "${{ github.workspace }}/install/projectM.app"
204203
205- - name : Package projectMSDL
206- run : |
207- # Get version from CMake
208- VERSION=$(grep "project(projectMSDL" frontend-sdl2/CMakeLists.txt | sed -E 's/.*VERSION ([0-9.]+).*/\1/')
204+ - name : Upload .app Bundle Artifact
205+ uses : actions/upload-artifact@v4
206+ with :
207+ name : projectMSDL-macOS-Universal-APP
208+ path : install/projectM.app/
209209
210+ - name : Create projectMSDL PKG Installer
211+ run : |
212+ # Get version from CMake cache
213+ VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)')
214+
210215 # Build component package from signed app
211216 pkgbuild \
212217 --root "${{ github.workspace }}/install" \
@@ -231,7 +236,7 @@ jobs:
231236
232237 rm "projectM-${VERSION}-macOS-universal-unsigned.pkg"
233238
234- - name : Notarize Package
239+ - name : Notarize PKG Installer
235240 env :
236241 API_KEY_ID : ${{ secrets.MACOS_NOTARY_KEY_ID }}
237242 API_ISSUER_ID : ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
@@ -249,8 +254,55 @@ jobs:
249254 # Clean up API key
250255 rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8
251256
252- - name : Upload Artifact
257+ - name : Upload PKG Installer Artifact
253258 uses : actions/upload-artifact@v4
254259 with :
255- name : projectMSDL-macOS-Universal
260+ name : projectMSDL-macOS-Universal-PKG
256261 path : projectM-*.pkg
262+
263+ - name : Create projectMSDL DMG Image
264+ run : |
265+ # Get version from CMake cache
266+ VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)')
267+
268+ # Install create-dmg
269+ brew install create-dmg
270+
271+ # Build and sign DMG image
272+ create-dmg \
273+ --volname "projectM Installer" \
274+ --volicon "frontend-sdl2/src/resources/icons/icon.icns" \
275+ --background "frontend-sdl2/src/resources/dmg_background.png" \
276+ --window-pos 200 120 \
277+ --window-size 800 400 \
278+ --icon-size 100 \
279+ --icon "projectM.app" 200 190 \
280+ --hide-extension "projectM.app" \
281+ --app-drop-link 600 185 \
282+ --codesign "Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" \
283+ "projectM-${VERSION}-macOS-universal.dmg" \
284+ "install/"
285+
286+ - name : Notarize DMG Installer
287+ env :
288+ API_KEY_ID : ${{ secrets.MACOS_NOTARY_KEY_ID }}
289+ API_ISSUER_ID : ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
290+ run : |
291+ DMG_FILE=$(ls projectM-*.dmg | head -1)
292+
293+ xcrun notarytool submit "$DMG_FILE" \
294+ --key ~/.private_keys/AuthKey_${API_KEY_ID}.p8 \
295+ --key-id "$API_KEY_ID" \
296+ --issuer "$API_ISSUER_ID" \
297+ --wait
298+
299+ xcrun stapler staple "$DMG_FILE"
300+
301+ # Clean up API key
302+ rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8
303+
304+ - name : Upload DMG Installer Artifact
305+ uses : actions/upload-artifact@v4
306+ with :
307+ name : projectMSDL-macOS-Universal-DMG
308+ path : projectM-*.dmg
0 commit comments