diff --git a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj index 7ea7eb394..b59f3c972 100644 --- a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj +++ b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj @@ -7,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 25BFA0892CF956FD0085F3E4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E80AA622CD7122800029585 /* GameController.framework */; }; + 4E6715ED2CFEEB6D00425F0C /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E80AA622CD7122800029585 /* GameController.framework */; }; 4E80AA212CD705DD00029585 /* SDL in Frameworks */ = {isa = PBXBuildFile; productRef = 4E80AA202CD705DD00029585 /* SDL */; }; /* End PBXBuildFile section */ @@ -58,11 +58,51 @@ }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ +/* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + 4E6715F12CFEEB6E00425F0C /* Exceptions for "MeloNX" folder in "Embed Libraries" phase from "MeloNX" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + "Dependencies/Dynamic Libraries/Ryujinx.Headless.SDL2.dylib" = (CodeSignOnCopy, ); + "Dependencies/Dynamic Libraries/libMoltenVK.dylib" = (CodeSignOnCopy, ); + "Dependencies/Dynamic Libraries/libavcodec.dylib" = (CodeSignOnCopy, ); + "Dependencies/Dynamic Libraries/libavutil.dylib" = (CodeSignOnCopy, ); + Dependencies/XCFrameworks/MoltenVK.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/SDL2.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libSPIRV.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libavcodec.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libavfilter.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libavformat.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libavutil.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libswresample.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libswscale.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + Dependencies/XCFrameworks/libteakra.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 4E80AA092CD6FAA800029585 /* Embed Libraries */; + membershipExceptions = ( + "Dependencies/Dynamic Libraries/libavcodec.dylib", + "Dependencies/Dynamic Libraries/libavutil.dylib", + "Dependencies/Dynamic Libraries/libMoltenVK.dylib", + "Dependencies/Dynamic Libraries/Ryujinx.Headless.SDL2.dylib", + Dependencies/XCFrameworks/libavcodec.xcframework, + Dependencies/XCFrameworks/libavfilter.xcframework, + Dependencies/XCFrameworks/libavformat.xcframework, + Dependencies/XCFrameworks/libavutil.xcframework, + Dependencies/XCFrameworks/libSPIRV.xcframework, + Dependencies/XCFrameworks/libswresample.xcframework, + Dependencies/XCFrameworks/libswscale.xcframework, + Dependencies/XCFrameworks/libteakra.xcframework, + Dependencies/XCFrameworks/MoltenVK.xcframework, + Dependencies/XCFrameworks/SDL2.xcframework, + ); + }; +/* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ 4E80A98F2CD6F54500029585 /* MeloNX */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( 4E80AA1D2CD7015100029585 /* Exceptions for "MeloNX" folder in "MeloNX" target */, + 4E6715F12CFEEB6E00425F0C /* Exceptions for "MeloNX" folder in "Embed Libraries" phase from "MeloNX" target */, ); path = MeloNX; sourceTree = ""; @@ -84,8 +124,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4E6715ED2CFEEB6D00425F0C /* GameController.framework in Frameworks */, 4E80AA212CD705DD00029585 /* SDL in Frameworks */, - 25BFA0892CF956FD0085F3E4 /* GameController.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -534,6 +574,10 @@ "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", ); MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; @@ -644,6 +688,10 @@ "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", ); MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; diff --git a/src/Ryujinx.Memory/MemoryManagementUnix.cs b/src/Ryujinx.Memory/MemoryManagementUnix.cs index a33ed7967..9c438ba3e 100644 --- a/src/Ryujinx.Memory/MemoryManagementUnix.cs +++ b/src/Ryujinx.Memory/MemoryManagementUnix.cs @@ -63,6 +63,12 @@ namespace Ryujinx.Memory throw new SystemException(Marshal.GetLastPInvokeErrorMessage()); } + + if (OperatingSystem.IsIOS() && forJit) + { + MachJitWorkaround.ReallocateAreaWithOwnership(ptr, (int)size); + } + if (!_allocations.TryAdd(ptr, size)) { // This should be impossible, kernel shouldn't return an already mapped address. @@ -76,7 +82,7 @@ namespace Ryujinx.Memory { MmapProts prot = MmapProts.PROT_READ | MmapProts.PROT_WRITE; - if (OperatingSystem.IsMacOSVersionAtLeast(10, 14) && forJit) + if (OperatingSystem.IsMacOSVersionAtLeast(10, 14) || OperatingSystem.IsIOS() && forJit) { prot |= MmapProts.PROT_EXEC; }