Skip to content

Commit

Permalink
Add macos12 guards for filesharing API
Browse files Browse the repository at this point in the history
File sharing was only added to macOS 12, trying to build on older
versions cause warnings:
virtualization.m:205:46: warning: 'setDirectorySharingDevices:' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZVirtualMachineConfiguration.h:116:79: note: 'setDirectorySharingDevices:' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:205:46: note: enclose 'setDirectorySharingDevices:' in an @available check to silence this warning
virtualization.m:586:5: warning: 'VZSharedDirectory' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZSharedDirectory.h:16:12: note: 'VZSharedDirectory' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:586:5: note: enclose 'VZSharedDirectory' in an @available check to silence this warning
virtualization.m:590:17: warning: 'VZSharedDirectory' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZSharedDirectory.h:16:12: note: 'VZSharedDirectory' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:590:17: note: enclose 'VZSharedDirectory' in an @available check to silence this warning
virtualization.m:603:14: warning: 'VZSingleDirectoryShare' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZSingleDirectoryShare.h:21:12: note: 'VZSingleDirectoryShare' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:603:14: note: enclose 'VZSingleDirectoryShare' in an @available check to silence this warning
virtualization.m:603:63: warning: 'VZSharedDirectory' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZSharedDirectory.h:16:12: note: 'VZSharedDirectory' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:603:63: note: enclose 'VZSharedDirectory' in an @available check to silence this warning
virtualization.m:614:14: warning: 'VZMultipleDirectoryShare' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZMultipleDirectoryShare.h:21:12: note: 'VZMultipleDirectoryShare' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:614:14: note: enclose 'VZMultipleDirectoryShare' in an @available check to silence this warning
virtualization.m:614:91: warning: 'VZSharedDirectory' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZSharedDirectory.h:16:12: note: 'VZSharedDirectory' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:614:91: note: enclose 'VZSharedDirectory' in an @available check to silence this warning
virtualization.m:625:5: warning: 'VZVirtioFileSystemDeviceConfiguration' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZVirtioFileSystemDeviceConfiguration.h:21:12: note: 'VZVirtioFileSystemDeviceConfiguration' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:625:5: note: enclose 'VZVirtioFileSystemDeviceConfiguration' in an @available check to silence this warning
virtualization.m:628:17: warning: 'VZVirtioFileSystemDeviceConfiguration' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZVirtioFileSystemDeviceConfiguration.h:21:12: note: 'VZVirtioFileSystemDeviceConfiguration' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:628:17: note: enclose 'VZVirtioFileSystemDeviceConfiguration' in an @available check to silence this warning
virtualization.m:638:7: warning: 'VZVirtioFileSystemDeviceConfiguration' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZVirtioFileSystemDeviceConfiguration.h:21:12: note: 'VZVirtioFileSystemDeviceConfiguration' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:638:7: note: enclose 'VZVirtioFileSystemDeviceConfiguration' in an @available check to silence this warning
virtualization.m:638:64: warning: 'VZDirectoryShare' is only available on macOS 12.0 or newer [-Wunguarded-availability-new]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Virtualization.framework/Headers/VZDirectoryShare.h:24:12: note: 'VZDirectoryShare' has been marked as being introduced in macOS 12.0 here, but the deployment target is macOS 11.0.0
virtualization.m:638:64: note: enclose 'VZDirectoryShare' in an @available check to silence this warning

This commit adds the suggested @available checks to avoid these
compilation warnings.
  • Loading branch information
cfergeau committed Jun 29, 2022
1 parent 1b2810d commit 91019b6
Showing 1 changed file with 35 additions and 15 deletions.
50 changes: 35 additions & 15 deletions virtualization.m
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,9 @@ void setStorageDevicesVZVirtualMachineConfiguration(void *config,
*/
void setDirectorySharingDevicesVZVirtualMachineConfiguration(void *config, void *directorySharingDevices)
{
[(VZVirtualMachineConfiguration *)config setDirectorySharingDevices:[(NSMutableArray *)directorySharingDevices copy]];
if (@available(macOS 12, *)) {
[(VZVirtualMachineConfiguration *)config setDirectorySharingDevices:[(NSMutableArray *)directorySharingDevices copy]];
}
}

/*!
Expand Down Expand Up @@ -583,13 +585,17 @@ void setNetworkDevicesVZMACAddress(void *config, void *macAddress)
*/
void* newVZSharedDirectory(const char *dirPath, bool readOnly)
{
VZSharedDirectory *ret;
@autoreleasepool {
NSString *dirPathNSString = [NSString stringWithUTF8String:dirPath];
NSURL *dirURL = [NSURL fileURLWithPath:dirPathNSString];
ret = [[VZSharedDirectory alloc] initWithURL:dirURL readOnly:(BOOL)readOnly];
if (@available(macOS 12, *)) {
VZSharedDirectory *ret;
@autoreleasepool {
NSString *dirPathNSString = [NSString stringWithUTF8String:dirPath];
NSURL *dirURL = [NSURL fileURLWithPath:dirPathNSString];
ret = [[VZSharedDirectory alloc] initWithURL:dirURL readOnly:(BOOL)readOnly];
}
return ret;
} else {
return nil;
}
return ret;
}

/*!
Expand All @@ -600,7 +606,11 @@ void setNetworkDevicesVZMACAddress(void *config, void *macAddress)
*/
void* newVZSingleDirectoryShare(void *sharedDirectory)
{
return [[VZSingleDirectoryShare alloc] initWithDirectory:(VZSharedDirectory *)sharedDirectory];
if (@available(macOS 12, *)) {
return [[VZSingleDirectoryShare alloc] initWithDirectory:(VZSharedDirectory *)sharedDirectory];
} else {
return nil;
}
}

/*!
Expand All @@ -611,7 +621,11 @@ void setNetworkDevicesVZMACAddress(void *config, void *macAddress)
*/
void* newVZMultipleDirectoryShare(void *sharedDirectories)
{
return [[VZMultipleDirectoryShare alloc] initWithDirectories:(NSDictionary<NSString *,VZSharedDirectory *> *)sharedDirectories];
if (@available(macOS 12, *)) {
return [[VZMultipleDirectoryShare alloc] initWithDirectories:(NSDictionary<NSString *,VZSharedDirectory *> *)sharedDirectories];
} else {
return nil;
}
}

/*!
Expand All @@ -622,20 +636,26 @@ void setNetworkDevicesVZMACAddress(void *config, void *macAddress)
*/
void* newVZVirtioFileSystemDeviceConfiguration(const char *tag)
{
VZVirtioFileSystemDeviceConfiguration *ret;
@autoreleasepool {
NSString *tagNSString = [NSString stringWithUTF8String:tag];
ret = [[VZVirtioFileSystemDeviceConfiguration alloc] initWithTag:tagNSString];
if (@available(macOS 12, *)) {
VZVirtioFileSystemDeviceConfiguration *ret;
@autoreleasepool {
NSString *tagNSString = [NSString stringWithUTF8String:tag];
ret = [[VZVirtioFileSystemDeviceConfiguration alloc] initWithTag:tagNSString];
}
return ret;
} else {
return nil;
}
return ret;
}

/*!
@abstract Sets share associated with this configuration.
*/
void setVZVirtioFileSystemDeviceConfigurationShare(void *config, void *share)
{
[(VZVirtioFileSystemDeviceConfiguration *)config setShare:(VZDirectoryShare *)share];
if (@available(macOS 12, *)) {
[(VZVirtioFileSystemDeviceConfiguration *)config setShare:(VZDirectoryShare *)share];
}
}

/*!
Expand Down

0 comments on commit 91019b6

Please sign in to comment.