diff --git a/CMakeLists.txt b/CMakeLists.txt index 739393c178..07950f8598 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,11 @@ cmake_minimum_required(VERSION 3.8) project(PPSSPP) enable_testing() +# This little macro lets you set any XCode specific property +macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) + set_property (TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) +endmacro(set_xcode_property) + #This is supposed to work but doesn't! if(NOT ANDROID) set(CMAKE_CXX_STANDARD 17) @@ -429,7 +434,11 @@ if(NOT MSVC) endif() if(IOS) - set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0") + if(IOS_APP_STORE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0") + else() + set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0") + endif() elseif(APPLE AND NOT CMAKE_CROSSCOMPILING) if(LIBRETRO AND ARM64) set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14") @@ -1317,6 +1326,7 @@ elseif(IOS AND NOT LIBRETRO) set_source_files_properties(ios/LocationHelper.mm PROPERTIES COMPILE_FLAGS -fobjc-arc) set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc) set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc) + set(TargetBin PPSSPP) elseif(IOS AND LIBRETRO) set(nativeExtraLibs ${nativeExtraLibs} "-framework GLKit") @@ -2829,17 +2839,34 @@ if(IOS AND NOT LIBRETRO) COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/ios/macbundle.sh" \"${APP_DIR_NAME}\" ) set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}) - set_target_properties(${TargetBin} PROPERTIES - MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/ios/PPSSPP-Info.plist" - RESOURCE "ios/Launch Screen.storyboard" - RESOURCE "ios/Settings.bundle" - RESOURCE "ext/vulkan/iOS/Frameworks" - XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} - XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "iPhone/iPad" - XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES - XCODE_ATTRIBUTE_ENABLE_BITCODE NO - XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-" - ) + if(IOS_APP_STORE) + # https://stackoverflow.com/questions/40664125/cmake-and-code-signing-in-xcode-8-for-ios-projects + set_target_properties(${TargetBin} PROPERTIES + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/ios/PPSSPP-AppStore.plist" + RESOURCE "ios/Launch Screen.storyboard" + RESOURCE "ios/Settings.bundle" + RESOURCE "ext/vulkan/iOS/Frameworks" + XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "iPhone/iPad" + XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES + XCODE_ATTRIBUTE_ENABLE_BITCODE NO + XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "97NS59EENG" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development" + XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic" + ) + else() + set_target_properties(${TargetBin} PROPERTIES + MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/ios/PPSSPP-Info.plist" + RESOURCE "ios/Launch Screen.storyboard" + RESOURCE "ios/Settings.bundle" + RESOURCE "ext/vulkan/iOS/Frameworks" + XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "iPhone/iPad" + XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES + XCODE_ATTRIBUTE_ENABLE_BITCODE NO + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-" + ) + endif() endif() if(MACOSX AND NOT IOS) diff --git a/b-appstore.sh b/b-appstore.sh index 079a4b2340..4a525cf152 100755 --- a/b-appstore.sh +++ b/b-appstore.sh @@ -2,7 +2,8 @@ mkdir build-ios pushd build-ios -cmake .. -DIOS_APP_STORE=ON -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake -DIOS_PLATFORM=OS -GXcode + +cmake .. -DIOS_APP_STORE=ON -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake -DDEVELOPMENT_TEAM_ID=97NS59EENG -DIOS_PLATFORM=OS -GXcode # TODO: Get a MoltenVK somewhere. #cp ../MoltenVK/iOS/Frameworks/libMoltenVK.dylib PPSSPP.app/Frameworks popd diff --git a/ios/PPSSPP-AppStore.plist b/ios/PPSSPP-AppStore.plist new file mode 100644 index 0000000000..b97b089486 --- /dev/null +++ b/ios/PPSSPP-AppStore.plist @@ -0,0 +1,204 @@ + + + + + UISupportsDocumentBrowser + + NSLocationWhenInUseUsageDescription + Your location may be used to emulate Go!Explore, a GPS accessory + NSCameraUsageDescription + Your camera may be used to emulate Go!Cam, a camera accessory + NSMicrophoneUsageDescription + Your microphone may be used to emulate Go!Cam/Talkman, a microphone accessory + CFBundleDisplayName + PPSSPP + CFBundleExecutable + PPSSPP + CFBundleIdentifier + org.ppsspp.ppsspp-free + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + PPSSPP + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIViewControllerBasedStatusBarAppearance + + UIRequiredDeviceCapabilities + + arm64 + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CFBundleIconFiles + + assets/Icon-72.png + assets/Icon-72@2x.png + assets/Icon.png + assets/Icon@2x.png + + UILaunchImageFile + Default.png + UIFileSharingEnabled + + UIDeviceFamily + + 1 + 2 + + UILaunchStoryboardName + Launch Screen + CFBundleDocumentTypes + + + CFBundleTypeIconFiles + + CFBundleTypeName + ISO File + LSHandlerRank + Owner + LSItemContentTypes + + ppsspp.iso + + + + CFBundleTypeIconFiles + + CFBundleTypeName + CSO File + LSHandlerRank + Owner + LSItemContentTypes + + ppsspp.cso + + + + CFBundleTypeIconFiles + + CFBundleTypeName + ELF File + LSHandlerRank + Owner + LSItemContentTypes + + ppsspp.elf + + + + CFBundleTypeIconFiles + + CFBundleTypeName + PBP File + LSHandlerRank + Owner + LSItemContentTypes + + ppsspp.pbp + + + + UTExportedTypeDeclarations + + + UTTypeConformsTo + + public.data + public.iso-image + + UTTypeDescription + ISO File + UTTypeIconFiles + + UTTypeIdentifier + ppsspp.iso + UTTypeTagSpecification + + public.filename-extension + + iso + + + + + UTTypeConformsTo + + public.data + dyn.ah62d4rv4ge80g65t + + UTTypeDescription + CSO File + UTTypeIconFiles + + UTTypeIdentifier + ppsspp.cso + UTTypeTagSpecification + + public.filename-extension + + cso + + + + + UTTypeConformsTo + + public.data + dyn.ah62d4rv4ge80n5dg + + UTTypeDescription + ELF File + UTTypeIconFiles + + UTTypeIdentifier + ppsspp.elf + UTTypeTagSpecification + + public.filename-extension + + elf + + + + + UTTypeConformsTo + + public.data + dyn.ah62d4rv4ge81a2xu + + UTTypeDescription + PBP File + UTTypeIconFiles + + UTTypeIdentifier + ppsspp.pbp + UTTypeTagSpecification + + public.filename-extension + + pbp + + + + + +