From d37d25b086a92c2a5df4b389c2b0b853578806d5 Mon Sep 17 00:00:00 2001 From: emiyl Date: Sun, 19 Apr 2026 13:18:35 +0100 Subject: [PATCH] Move update.sh to Cemu.app/Contents/Resources, move update.sh chmod to CMake, use proper CMake commands for rpaths --- .github/workflows/build.yml | 1 - src/CMakeLists.txt | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c66eb61b..66329d0a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -282,7 +282,6 @@ jobs: mv bin/Cemu_release.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} codesign --entitlements ${{github.workspace}}/src/resource/cemu.macos.entitlements --force --deep --preserve-metadata=entitlements,requirements,flags,runtime --sign - --timestamp --options runtime bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu ln -s /Applications bin/Cemu_app/Applications hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b7fd67fe..df9a8eec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -79,6 +79,12 @@ if(WIN32) ) endif() +if(APPLE AND CMAKE_GENERATOR STREQUAL "Xcode") + set_target_properties(CemuBin PROPERTIES + XCODE_ATTRIBUTE_ENABLE_DEBUG_DYLIB[variant=Debug] "YES" + ) +endif() + string(TIMESTAMP CURRENT_YEAR "%Y" UTC) set_property(TARGET CemuBin PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") @@ -127,12 +133,31 @@ if (MACOS_BUNDLE) message(FATAL_ERROR "failed to find libMoltenVK.dylib") endif () - add_custom_command (TARGET CemuBin POST_BUILD - COMMAND ${CMAKE_COMMAND} ARGS -E copy "${MOLTENVK_PATH}" "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app/Contents/Frameworks/libMoltenVK.dylib" - 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}) + set(APP_BUNDLE_DIR "${CMAKE_SOURCE_DIR}/bin/${OUTPUT_NAME}.app") + set(FRAMEWORKS_DIR "${APP_BUNDLE_DIR}/Contents/Frameworks") + set(RESOURCES_DIR "${APP_BUNDLE_DIR}/Contents/Resources") + + add_custom_command(TARGET CemuBin POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${MOLTENVK_PATH}" + "${FRAMEWORKS_DIR}/libMoltenVK.dylib" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${LIBUSB_PATH}" + "${FRAMEWORKS_DIR}/libusb-1.0.0.dylib" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${CMAKE_SOURCE_DIR}/src/resource/update.sh" + "${RESOURCES_DIR}/update.sh" + COMMAND ${CMAKE_COMMAND} -E chmod +x "${RESOURCES_DIR}/update.sh" + COMMAND install_name_tool + -change @rpath/libusb-1.0.0.dylib + @executable_path/../Frameworks/libusb-1.0.0.dylib + "$" + ) + + set_target_properties(CemuBin PROPERTIES + BUILD_WITH_INSTALL_RPATH TRUE + INSTALL_RPATH "@executable_path/../Frameworks" + ) else() if(APPLE) find_library(MOLTENVK_LIBRARY