From 6b524a6c1fd8867eaf2bc6fb12bffae816376e86 Mon Sep 17 00:00:00 2001 From: Tommy Li Date: Sun, 22 Dec 2019 21:20:57 -0600 Subject: [PATCH] Add CMake instructions to copy default resources to app bundle, and add mounting points for those resources. --- Xcode/StepMania.entitlements | 14 ++++++++++++++ src/CMakeLists.txt | 19 +++++++++++++++++++ src/arch/ArchHooks/ArchHooks_MacOSX.mm | 19 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 Xcode/StepMania.entitlements diff --git a/Xcode/StepMania.entitlements b/Xcode/StepMania.entitlements new file mode 100644 index 0000000000..a98af77462 --- /dev/null +++ b/Xcode/StepMania.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.device.usb + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index aadde32fd7..9d4a374112 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -251,6 +251,25 @@ elseif(APPLE) "NO" XCODE_ATTRIBUTE_LIBRARY_SEARCH_PATHS "${SM_XCODE_DIR}/Libraries") + # XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS + # "${SM_XCODE_DIR}/StepMania.entitlements") + + set(APPLE_BUNDLE_RESOURCES + "${SM_ROOT_DIR}/Announcers" + "${SM_ROOT_DIR}/BackgroundEffects" + "${SM_ROOT_DIR}/BackgroundTransitions" + "${SM_ROOT_DIR}/BGAnimations" + "${SM_ROOT_DIR}/Characters" + "${SM_ROOT_DIR}/Courses" + "${SM_ROOT_DIR}/Data" + "${SM_ROOT_DIR}/NoteSkins" + "${SM_ROOT_DIR}/Scripts" + "${SM_ROOT_DIR}/Songs" + "${SM_ROOT_DIR}/Themes" + ) + + target_sources("${SM_EXE_NAME}" PUBLIC ${APPLE_BUNDLE_RESOURCES}) + set_source_files_properties(${APPLE_BUNDLE_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) sm_add_compile_definition("${SM_EXE_NAME}" _XOPEN_SOURCE) diff --git a/src/arch/ArchHooks/ArchHooks_MacOSX.mm b/src/arch/ArchHooks/ArchHooks_MacOSX.mm index def9a1b7a5..f5c546b1d9 100644 --- a/src/arch/ArchHooks/ArchHooks_MacOSX.mm +++ b/src/arch/ArchHooks/ArchHooks_MacOSX.mm @@ -360,6 +360,25 @@ void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable ) // /Logs -> ~/Library/Logs/PRODUCT_ID PathForFolderType( dir, kDomainLibraryFolderType ); FILEMAN->Mount( "dir", ssprintf("%s/Logs/" PRODUCT_ID, dir), "/Logs" ); + + NSString* resourcePath = [[NSBundle mainBundle] resourcePath]; + if( resourcePath ) + { + const char* resourcePathUTF8String = [resourcePath UTF8String]; + FILEMAN->Mount( "dir", ssprintf("%s/Announcers", resourcePathUTF8String), "/Announcers" ); + FILEMAN->Mount( "dir", ssprintf("%s/BGAnimations", resourcePathUTF8String), "/BGAnimations" ); + FILEMAN->Mount( "dir", ssprintf("%s/BackgroundEffects", resourcePathUTF8String), "/BackgroundEffects" ); + FILEMAN->Mount( "dir", ssprintf("%s/BackgroundTransitions", resourcePathUTF8String), "/BackgroundTransitions" ); + FILEMAN->Mount( "dir", ssprintf("%s/CDTitles", resourcePathUTF8String), "/CDTitles" ); + FILEMAN->Mount( "dir", ssprintf("%s/Characters", resourcePathUTF8String), "/Characters" ); + FILEMAN->Mount( "dir", ssprintf("%s/Courses", resourcePathUTF8String), "/Courses" ); + FILEMAN->Mount( "dir", ssprintf("%s/NoteSkins", resourcePathUTF8String), "/NoteSkins" ); + FILEMAN->Mount( "dir", ssprintf("%s/Packages", resourcePathUTF8String), "/" + SpecialFiles::USER_PACKAGES_DIR ); + FILEMAN->Mount( "dir", ssprintf("%s/Songs", resourcePathUTF8String), "/Songs" ); + FILEMAN->Mount( "dir", ssprintf("%s/RandomMovies", resourcePathUTF8String), "/RandomMovies" ); + FILEMAN->Mount( "dir", ssprintf("%s/Themes", resourcePathUTF8String), "/Themes" ); + FILEMAN->Mount( "dir", ssprintf("%s/Data", resourcePathUTF8String), "/Data" ); + } // /Desktop -> /Users//Desktop/PRODUCT_ID // PathForFolderType( dir, kDesktopFolderType );