@@ -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,20 @@ 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+ -DCMAKE_BUILD_TYPE=Release \
147+ -DENABLE_FREETYPE=OFF \
148+ "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco;${GITHUB_WORKSPACE}/install-libsdl2" \
149+ "-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
150+ "-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
151+ -DENABLE_INSTALL_BDEPS=ON
152+ cmake --build cmake-build-frontend-sdl2 --parallel
153+ cmake --install cmake-build-frontend-sdl2 --prefix "${{ github.workspace }}/install"
154+
155155 - name : Sign Application Bundle
156156 run : |
157157 APP_PATH="${{ github.workspace }}/install/projectM.app"
@@ -180,7 +180,7 @@ jobs:
180180 # Verify
181181 codesign --verify --deep --strict "$APP_PATH"
182182
183- - name : Notarize Application
183+ - name : Notarize Application Bundle
184184 env :
185185 API_KEY_BASE64 : ${{ secrets.MACOS_NOTARY_API_KEY }}
186186 API_KEY_ID : ${{ secrets.MACOS_NOTARY_KEY_ID }}
@@ -202,11 +202,17 @@ jobs:
202202
203203 xcrun stapler staple "${{ github.workspace }}/install/projectM.app"
204204
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/')
205+ - name : Upload .app Bundle Artifact
206+ uses : actions/upload-artifact@v4
207+ with :
208+ name : projectMSDL-macOS-Universal-APP
209+ path : install/projectM.app/
209210
211+ - name : Create projectMSDL PKG Installer
212+ run : |
213+ # Get version from CMake cache
214+ VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)')
215+
210216 # Build component package from signed app
211217 pkgbuild \
212218 --root "${{ github.workspace }}/install" \
@@ -231,7 +237,7 @@ jobs:
231237
232238 rm "projectM-${VERSION}-macOS-universal-unsigned.pkg"
233239
234- - name : Notarize Package
240+ - name : Notarize PKG Installer
235241 env :
236242 API_KEY_ID : ${{ secrets.MACOS_NOTARY_KEY_ID }}
237243 API_ISSUER_ID : ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
@@ -249,8 +255,55 @@ jobs:
249255 # Clean up API key
250256 rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8
251257
252- - name : Upload Artifact
258+ - name : Upload PKG Installer Artifact
253259 uses : actions/upload-artifact@v4
254260 with :
255- name : projectMSDL-macOS-Universal
261+ name : projectMSDL-macOS-Universal-PKG
256262 path : projectM-*.pkg
263+
264+ - name : Create projectMSDL DMG Image
265+ run : |
266+ # Get version from CMake cache
267+ VERSION=$(grep 'CMAKE_PROJECT_VERSION:STATIC=' cmake-build-frontend-sdl2/CMakeCache.txt | grep -Eo '([0-9.]+)')
268+
269+ # Install create-dmg
270+ brew install create-dmg
271+
272+ # Build and sign DMG image
273+ create-dmg \
274+ --volname "projectM Installer" \
275+ --volicon "frontend-sdl2/src/resources/icons/icon.icns" \
276+ --background "frontend-sdl2/src/resources/dmg_background.png" \
277+ --window-pos 200 120 \
278+ --window-size 800 400 \
279+ --icon-size 100 \
280+ --icon "projectM.app" 200 190 \
281+ --hide-extension "projectM.app" \
282+ --app-drop-link 600 185 \
283+ --codesign "Developer ID Application: Mischa Spiegelmock (5926VBQM6Y)" \
284+ "projectM-${VERSION}-macOS-universal.dmg" \
285+ "install/"
286+
287+ - name : Notarize DMG Installer
288+ env :
289+ API_KEY_ID : ${{ secrets.MACOS_NOTARY_KEY_ID }}
290+ API_ISSUER_ID : ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
291+ run : |
292+ DMG_FILE=$(ls projectM-*.dmg | head -1)
293+
294+ xcrun notarytool submit "$DMG_FILE" \
295+ --key ~/.private_keys/AuthKey_${API_KEY_ID}.p8 \
296+ --key-id "$API_KEY_ID" \
297+ --issuer "$API_ISSUER_ID" \
298+ --wait
299+
300+ xcrun stapler staple "$DMG_FILE"
301+
302+ # Clean up API key
303+ rm -f ~/.private_keys/AuthKey_${API_KEY_ID}.p8
304+
305+ - name : Upload DMG Installer Artifact
306+ uses : actions/upload-artifact@v4
307+ with :
308+ name : projectMSDL-macOS-Universal-DMG
309+ path : projectM-*.dmg
0 commit comments