From 40310e9de4a9477e1ae97aee777b1e3c18b17e5d Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 12:37:09 +0000 Subject: [PATCH 1/9] Don't hard-code bundle name --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4fe4b07e..614a9524 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -80,7 +80,7 @@ if (MACOS_BUNDLE) set(MACOSX_BUNDLE_ICON_FILE "cemu.icns") set(MACOSX_BUNDLE_GUI_IDENTIFIER "info.cemu.Cemu") - set(MACOSX_BUNDLE_BUNDLE_NAME "Cemu") + set(MACOSX_BUNDLE_BUNDLE_NAME "${OUTPUT_NAME}") set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${EMULATOR_VERSION_MAJOR}.${EMULATOR_VERSION_MINOR}.${EMULATOR_VERSION_PATCH}") set(MACOSX_BUNDLE_BUNDLE_VERSION "${EMULATOR_VERSION_MAJOR}.${EMULATOR_VERSION_MINOR}.${EMULATOR_VERSION_PATCH}") set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2024 Cemu Project") From cb9c6d22c042f0a44934fd6bb2621770fe9dd20f Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 12:41:08 +0000 Subject: [PATCH 2/9] Correctly change the rpath for libusb --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 614a9524..1fee7424 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -119,7 +119,7 @@ if (MACOS_BUNDLE) COMMAND ${CMAKE_COMMAND} ARGS -E copy "${LIBUSB_PATH}" "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/Frameworks/libusb-1.0.0.dylib" COMMAND ${CMAKE_COMMAND} ARGS -E copy "${CMAKE_SOURCE_DIR}/src/resource/update.sh" "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/update.sh" COMMAND bash -c "install_name_tool -add_rpath @executable_path/../Frameworks ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}" - COMMAND bash -c "install_name_tool -change ${LIBUSB_PATH} @executable_path/../Frameworks/libusb-1.0.0.dylib ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}") + COMMAND install_name_tool -change @rpath/libusb-1.0.0.dylib @executable_path/../Frameworks/libusb-1.0.0.dylib ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}) else() if(APPLE) find_library(MOLTENVK_LIBRARY From 8960443e868621f49e16738cd7e2ee060db9cd9c Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 12:45:56 +0000 Subject: [PATCH 3/9] Add entitlements file and codesign --- src/CMakeLists.txt | 3 ++- src/resource/cemu.macos.entitlements | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/resource/cemu.macos.entitlements diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1fee7424..1c6cadd7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -119,7 +119,8 @@ if (MACOS_BUNDLE) COMMAND ${CMAKE_COMMAND} ARGS -E copy "${LIBUSB_PATH}" "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/Frameworks/libusb-1.0.0.dylib" COMMAND ${CMAKE_COMMAND} ARGS -E copy "${CMAKE_SOURCE_DIR}/src/resource/update.sh" "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/update.sh" COMMAND bash -c "install_name_tool -add_rpath @executable_path/../Frameworks ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}" - COMMAND install_name_tool -change @rpath/libusb-1.0.0.dylib @executable_path/../Frameworks/libusb-1.0.0.dylib ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}) + COMMAND install_name_tool -change @rpath/libusb-1.0.0.dylib @executable_path/../Frameworks/libusb-1.0.0.dylib ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME} + COMMAND codesign --entitlements ${ENTITLEMENTS_FILE} --force --deep --preserve-metadata=entitlements,requirements,flags,runtime --sign - --timestamp --options runtime ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}) else() if(APPLE) find_library(MOLTENVK_LIBRARY diff --git a/src/resource/cemu.macos.entitlements b/src/resource/cemu.macos.entitlements new file mode 100644 index 00000000..a3164a83 --- /dev/null +++ b/src/resource/cemu.macos.entitlements @@ -0,0 +1,13 @@ + + + + com.apple.security.cs.disable-library-validation + + com.apple.security.get-task-allow + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + + \ No newline at end of file From 55aed97f80ae863a56f095af5a783563cf3ee333 Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 12:47:45 +0000 Subject: [PATCH 4/9] Move chmod step for setting update script permissions into cmake --- .github/workflows/build.yml | 3 +-- src/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af560d21..78293a78 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -279,10 +279,9 @@ jobs: - name: Prepare artifact run: | mkdir bin/Cemu_app - mv bin/Cemu_release.app bin/Cemu_app/Cemu.app + mv bin/Cemu.app bin/Cemu_app/Cemu.app mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist - chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh} ln -s /Applications bin/Cemu_app/Applications hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app" hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1c6cadd7..03e0ba86 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -120,6 +120,7 @@ if (MACOS_BUNDLE) COMMAND ${CMAKE_COMMAND} ARGS -E copy "${CMAKE_SOURCE_DIR}/src/resource/update.sh" "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/update.sh" COMMAND bash -c "install_name_tool -add_rpath @executable_path/../Frameworks ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}" COMMAND install_name_tool -change @rpath/libusb-1.0.0.dylib @executable_path/../Frameworks/libusb-1.0.0.dylib ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME} + COMMAND chmod a+x ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/update.sh COMMAND codesign --entitlements ${ENTITLEMENTS_FILE} --force --deep --preserve-metadata=entitlements,requirements,flags,runtime --sign - --timestamp --options runtime ${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/MacOS/${OUTPUT_NAME}) else() if(APPLE) From c6dc2aa16889b04446ac24fb5574ba3e26ce537a Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 12:49:50 +0000 Subject: [PATCH 5/9] Set output name to Cemu (not Cemu_release) if it is a release build --- .github/workflows/build.yml | 2 -- src/CMakeLists.txt | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 78293a78..fc2cba8e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -280,8 +280,6 @@ jobs: run: | mkdir bin/Cemu_app mv bin/Cemu.app bin/Cemu_app/Cemu.app - mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu - sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist ln -s /Applications bin/Cemu_app/Applications hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app" hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 03e0ba86..f96904a2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -70,7 +70,11 @@ endif() set_property(TARGET CemuBin PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") set_property(TARGET CemuBin PROPERTY WIN32_EXECUTABLE $>) -set(OUTPUT_NAME "Cemu_$>") +if(CMAKE_BUILD_TYPE STREQUAL "release") + set(OUTPUT_NAME "Cemu") +else() + set(OUTPUT_NAME "Cemu_$>") +endif() if (MACOS_BUNDLE) set_property(TARGET CemuBin PROPERTY MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resource/MacOSXBundleInfo.plist.in") From 611bc37cb99a8c0d4da2ce4639d80cb40a046461 Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:08:27 +0000 Subject: [PATCH 6/9] Add entitlements file property to cmake --- src/CMakeLists.txt | 1 + src/resource/cemu.macos.entitlements | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f96904a2..494de848 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -78,6 +78,7 @@ endif() if (MACOS_BUNDLE) set_property(TARGET CemuBin PROPERTY MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resource/MacOSXBundleInfo.plist.in") + set(ENTITLEMENTS_FILE "${CMAKE_SOURCE_DIR}/src/resource/cemu.macos.entitlements") set(RESOURCE_FILES "${CMAKE_SOURCE_DIR}/src/resource/cemu.icns") target_sources(CemuBin PRIVATE "${RESOURCE_FILES}") diff --git a/src/resource/cemu.macos.entitlements b/src/resource/cemu.macos.entitlements index a3164a83..0017e1a9 100644 --- a/src/resource/cemu.macos.entitlements +++ b/src/resource/cemu.macos.entitlements @@ -10,4 +10,4 @@ com.apple.security.cs.allow-unsigned-executable-memory - \ No newline at end of file + From e1a2cd1bd03d4bf05143dccb29fdb43d03464eb0 Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:44:24 +0000 Subject: [PATCH 7/9] Attempt to fix other platforms --- .github/workflows/build.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc2cba8e..bbd07187 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,9 +79,6 @@ jobs: run: | cmake --build build - - name: Prepare artifact - run: mv bin/Cemu_release bin/Cemu - - name: Upload artifact uses: actions/upload-artifact@v4 with: @@ -183,9 +180,6 @@ jobs: cd build cmake --build . --config ${{ env.BUILD_MODE }} - - name: Prepare artifact - run: Rename-Item bin/Cemu_release.exe Cemu.exe - - name: Build NSIS Installer shell: cmd run: | From e3c1b6066990a39f263cab9f5a113bda95a2e735 Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:46:13 +0000 Subject: [PATCH 8/9] Remove ninja as a dependency. It is already installed --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbd07187..1174db57 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -224,7 +224,7 @@ jobs: - name: "Install system dependencies" run: | brew update - brew install ninja nasm automake libtool + brew install nasm automake libtool - name: "Install molten-vk" run: | From b233cb56a6a7f70a67bdf2dc56e4725881955a18 Mon Sep 17 00:00:00 2001 From: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Date: Tue, 27 Jan 2026 17:29:28 +0000 Subject: [PATCH 9/9] Dynamically add copyright year to the app bundle --- src/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 494de848..63f1458a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -68,6 +68,8 @@ if(WIN32) ) endif() +string(TIMESTAMP CURRENT_YEAR "%Y" UTC) + set_property(TARGET CemuBin PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") set_property(TARGET CemuBin PROPERTY WIN32_EXECUTABLE $>) if(CMAKE_BUILD_TYPE STREQUAL "release") @@ -88,7 +90,7 @@ if (MACOS_BUNDLE) set(MACOSX_BUNDLE_BUNDLE_NAME "${OUTPUT_NAME}") set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${EMULATOR_VERSION_MAJOR}.${EMULATOR_VERSION_MINOR}.${EMULATOR_VERSION_PATCH}") set(MACOSX_BUNDLE_BUNDLE_VERSION "${EMULATOR_VERSION_MAJOR}.${EMULATOR_VERSION_MINOR}.${EMULATOR_VERSION_PATCH}") - set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2024 Cemu Project") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright © ${CURRENT_YEAR} Cemu Project") set(MACOSX_BUNDLE_CATEGORY "public.app-category.games") set(MACOSX_MINIMUM_SYSTEM_VERSION "12.0")