mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
macOS: Initial support for macOS 11 and arm64
This commit is contained in:
parent
f5400b5764
commit
b27017a5e3
8 changed files with 36 additions and 13 deletions
|
|
@ -119,6 +119,11 @@ provisioning profiles, which is achieved by passing the `-allowProvisioningUpdat
|
||||||
|
|
||||||
cmake --build build-ios --target <targetName> -- -allowProvisioningUpdates
|
cmake --build build-ios --target <targetName> -- -allowProvisioningUpdates
|
||||||
|
|
||||||
|
### Building universal binaries for macOS
|
||||||
|
|
||||||
|
Building universal binaries that will run on both arm64 and x86_64 can be achieved by
|
||||||
|
configuring the CMake project with `"-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64"`.
|
||||||
|
|
||||||
### A note about compile definitions
|
### A note about compile definitions
|
||||||
|
|
||||||
Module options and plugin options that would previously have been set in the Projucer can be set on
|
Module options and plugin options that would previously have been set in the Projucer can be set on
|
||||||
|
|
|
||||||
|
|
@ -425,13 +425,23 @@ bool JUCE_CALLTYPE Process::openDocument (const String& fileName, const String&
|
||||||
StringArray params;
|
StringArray params;
|
||||||
params.addTokens (parameters, true);
|
params.addTokens (parameters, true);
|
||||||
|
|
||||||
NSMutableDictionary* dict = [[NSMutableDictionary new] autorelease];
|
|
||||||
|
|
||||||
NSMutableArray* paramArray = [[NSMutableArray new] autorelease];
|
NSMutableArray* paramArray = [[NSMutableArray new] autorelease];
|
||||||
|
|
||||||
for (int i = 0; i < params.size(); ++i)
|
for (int i = 0; i < params.size(); ++i)
|
||||||
[paramArray addObject: juceStringToNS (params[i])];
|
[paramArray addObject: juceStringToNS (params[i])];
|
||||||
|
|
||||||
|
#if (defined MAC_OS_X_VERSION_10_15) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_15
|
||||||
|
auto config = [NSWorkspaceOpenConfiguration configuration];
|
||||||
|
[config setCreatesNewApplicationInstance: YES];
|
||||||
|
config.arguments = paramArray;
|
||||||
|
|
||||||
|
[workspace openApplicationAtURL: filenameAsURL
|
||||||
|
configuration: config
|
||||||
|
completionHandler: nil];
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
NSMutableDictionary* dict = [[NSMutableDictionary new] autorelease];
|
||||||
|
|
||||||
[dict setObject: paramArray
|
[dict setObject: paramArray
|
||||||
forKey: nsStringLiteral ("NSWorkspaceLaunchConfigurationArguments")];
|
forKey: nsStringLiteral ("NSWorkspaceLaunchConfigurationArguments")];
|
||||||
|
|
||||||
|
|
@ -439,6 +449,7 @@ bool JUCE_CALLTYPE Process::openDocument (const String& fileName, const String&
|
||||||
options: NSWorkspaceLaunchDefault | NSWorkspaceLaunchNewInstance
|
options: NSWorkspaceLaunchDefault | NSWorkspaceLaunchNewInstance
|
||||||
configuration: dict
|
configuration: dict
|
||||||
error: nil];
|
error: nil];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file.exists())
|
if (file.exists())
|
||||||
|
|
|
||||||
|
|
@ -137,9 +137,8 @@ SystemStats::OperatingSystemType SystemStats::getOperatingSystemType()
|
||||||
StringArray parts;
|
StringArray parts;
|
||||||
parts.addTokens (getOSXVersion(), ".", StringRef());
|
parts.addTokens (getOSXVersion(), ".", StringRef());
|
||||||
|
|
||||||
jassert (parts[0].getIntValue() == 10);
|
|
||||||
const int major = parts[1].getIntValue();
|
const int major = parts[1].getIntValue();
|
||||||
jassert (major > 2);
|
jassert ((parts[0].getIntValue() == 10 && major > 2) || parts[0].getIntValue() == 11);
|
||||||
|
|
||||||
return (OperatingSystemType) (major + MacOSX_10_4 - 4);
|
return (OperatingSystemType) (major + MacOSX_10_4 - 4);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -208,11 +208,6 @@ ReturnValue ObjCMsgSendSuper (struct objc_super* s, SEL sel, Params... params)
|
||||||
// These hacks are a workaround for newer Xcode builds which by default prevent calls to these objc functions..
|
// These hacks are a workaround for newer Xcode builds which by default prevent calls to these objc functions..
|
||||||
typedef id (*MsgSendSuperFn) (struct objc_super*, SEL, ...);
|
typedef id (*MsgSendSuperFn) (struct objc_super*, SEL, ...);
|
||||||
inline MsgSendSuperFn getMsgSendSuperFn() noexcept { return (MsgSendSuperFn) (void*) objc_msgSendSuper; }
|
inline MsgSendSuperFn getMsgSendSuperFn() noexcept { return (MsgSendSuperFn) (void*) objc_msgSendSuper; }
|
||||||
|
|
||||||
#if ! JUCE_IOS
|
|
||||||
typedef double (*MsgSendFPRetFn) (id, SEL op, ...);
|
|
||||||
inline MsgSendFPRetFn getMsgSendFPRetFn() noexcept { return (MsgSendFPRetFn) (void*) objc_msgSend_fpret; }
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
|
||||||
|
|
@ -66,12 +66,14 @@ namespace juce
|
||||||
@see jassert()
|
@see jassert()
|
||||||
*/
|
*/
|
||||||
#define JUCE_BREAK_IN_DEBUGGER { ::kill (0, SIGTRAP); }
|
#define JUCE_BREAK_IN_DEBUGGER { ::kill (0, SIGTRAP); }
|
||||||
|
#elif JUCE_MAC && JUCE_CLANG && JUCE_ARM
|
||||||
|
#define JUCE_BREAK_IN_DEBUGGER { __builtin_debugtrap(); }
|
||||||
#elif JUCE_MSVC
|
#elif JUCE_MSVC
|
||||||
#ifndef __INTEL_COMPILER
|
#ifndef __INTEL_COMPILER
|
||||||
#pragma intrinsic (__debugbreak)
|
#pragma intrinsic (__debugbreak)
|
||||||
#endif
|
#endif
|
||||||
#define JUCE_BREAK_IN_DEBUGGER { __debugbreak(); }
|
#define JUCE_BREAK_IN_DEBUGGER { __debugbreak(); }
|
||||||
#elif JUCE_GCC || JUCE_MAC
|
#elif JUCE_INTEL && (JUCE_GCC || JUCE_MAC)
|
||||||
#if JUCE_NO_INLINE_ASM
|
#if JUCE_NO_INLINE_ASM
|
||||||
#define JUCE_BREAK_IN_DEBUGGER { }
|
#define JUCE_BREAK_IN_DEBUGGER { }
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,8 @@ public:
|
||||||
MacOSX_10_12 = MacOSX | 12,
|
MacOSX_10_12 = MacOSX | 12,
|
||||||
MacOSX_10_13 = MacOSX | 13,
|
MacOSX_10_13 = MacOSX | 13,
|
||||||
MacOSX_10_14 = MacOSX | 14,
|
MacOSX_10_14 = MacOSX | 14,
|
||||||
|
MacOSX_10_15 = MacOSX | 15,
|
||||||
|
MacOSX_11_0 = MacOSX | 16,
|
||||||
|
|
||||||
Win2000 = Windows | 1,
|
Win2000 = Windows | 1,
|
||||||
WinXP = Windows | 2,
|
WinXP = Windows | 2,
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,11 @@ private:
|
||||||
{
|
{
|
||||||
if (notification.userInfo != nil)
|
if (notification.userInfo != nil)
|
||||||
{
|
{
|
||||||
NSUserNotification* userNotification = [notification.userInfo objectForKey: nsStringLiteral ("NSApplicationLaunchUserNotificationKey")];
|
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations")
|
||||||
|
// NSUserNotification is deprecated from macOS 11, but there doesn't seem to be a
|
||||||
|
// replacement for NSApplicationLaunchUserNotificationKey returning a non-deprecated type
|
||||||
|
NSUserNotification* userNotification = notification.userInfo[NSApplicationLaunchUserNotificationKey];
|
||||||
|
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||||
|
|
||||||
if (userNotification != nil && userNotification.userInfo != nil)
|
if (userNotification != nil && userNotification.userInfo != nil)
|
||||||
didReceiveRemoteNotification (self, nil, [NSApplication sharedApplication], userNotification.userInfo);
|
didReceiveRemoteNotification (self, nil, [NSApplication sharedApplication], userNotification.userInfo);
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,11 @@
|
||||||
==============================================================================
|
==============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@interface NSEvent (DeviceDelta)
|
||||||
|
- (float)deviceDeltaX;
|
||||||
|
- (float)deviceDeltaY;
|
||||||
|
@end
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
#if defined (MAC_OS_X_VERSION_10_8) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8) \
|
#if defined (MAC_OS_X_VERSION_10_8) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8) \
|
||||||
&& USE_COREGRAPHICS_RENDERING && JUCE_COREGRAPHICS_DRAW_ASYNC
|
&& USE_COREGRAPHICS_RENDERING && JUCE_COREGRAPHICS_DRAW_ASYNC
|
||||||
|
|
@ -680,8 +685,8 @@ public:
|
||||||
}
|
}
|
||||||
else if ([ev respondsToSelector: @selector (deviceDeltaX)])
|
else if ([ev respondsToSelector: @selector (deviceDeltaX)])
|
||||||
{
|
{
|
||||||
wheel.deltaX = checkDeviceDeltaReturnValue ((float) getMsgSendFPRetFn() (ev, @selector (deviceDeltaX)));
|
wheel.deltaX = checkDeviceDeltaReturnValue ([ev deviceDeltaX]);
|
||||||
wheel.deltaY = checkDeviceDeltaReturnValue ((float) getMsgSendFPRetFn() (ev, @selector (deviceDeltaY)));
|
wheel.deltaY = checkDeviceDeltaReturnValue ([ev deviceDeltaY]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@catch (...)
|
@catch (...)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue