CMake Xcode compatibility adjustments

This commit is contained in:
Jack Andersen 2016-05-24 19:49:48 -10:00
parent 9527a219c7
commit d71f9f62b8
2 changed files with 79 additions and 67 deletions

View File

@ -21,50 +21,50 @@
@implementation ViewController @implementation ViewController
- (void)viewDidLoad { - (void)viewDidLoad {
[super viewDidLoad]; [super viewDidLoad];
#if 0 #if 0
AudioComponentDescription desc; AudioComponentDescription desc;
/* Supply the correct AudioComponentDescription based on your AudioUnit type, manufacturer and creator. /* Supply the correct AudioComponentDescription based on your AudioUnit type, manufacturer and creator.
You need to supply matching settings in the AUAppExtension info.plist under: You need to supply matching settings in the AUAppExtension info.plist under:
NSExtension NSExtension
NSExtensionAttributes NSExtensionAttributes
AudioComponents AudioComponents
Item 0 Item 0
type type
subtype subtype
manufacturer manufacturer
If you do not do this step, your AudioUnit will not work!!! If you do not do this step, your AudioUnit will not work!!!
*/ */
desc.componentType = kAudioUnitType_MusicDevice; desc.componentType = kAudioUnitType_MusicDevice;
desc.componentSubType = 'sin3'; desc.componentSubType = 'sin3';
desc.componentManufacturer = 'Demo'; desc.componentManufacturer = 'Demo';
desc.componentFlags = 0; desc.componentFlags = 0;
desc.componentFlagsMask = 0; desc.componentFlagsMask = 0;
[AUAudioUnit registerSubclass: AUv3InstrumentDemo.class asComponentDescription:desc name:@"Local InstrumentDemo" version: UINT32_MAX]; [AUAudioUnit registerSubclass: AUv3InstrumentDemo.class asComponentDescription:desc name:@"Local InstrumentDemo" version: UINT32_MAX];
playEngine = [[SimplePlayEngine alloc] initWithComponentType: desc.componentType componentsFoundCallback: nil]; playEngine = [[SimplePlayEngine alloc] initWithComponentType: desc.componentType componentsFoundCallback: nil];
[playEngine selectAudioUnitWithComponentDescription2:desc completionHandler:^{ [playEngine selectAudioUnitWithComponentDescription2:desc completionHandler:^{
[self connectParametersToControls]; [self connectParametersToControls];
}]; }];
#endif #endif
} }
-(void)loadView { -(void)loadView {
amuseVC = [[AudioUnitViewController alloc] initWithNibName:nil bundle:nil]; amuseVC = [[AudioUnitViewController alloc] initWithNibName:nil bundle:nil];
self.view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 200, 300)]; self.view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 200, 300)];
[self.view addSubview:amuseVC.view]; [self.view addSubview:amuseVC.view];
self.view.translatesAutoresizingMaskIntoConstraints = NO; self.view.translatesAutoresizingMaskIntoConstraints = NO;
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.view)]; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.view)];
[self.view addConstraints: constraints]; [self.view addConstraints: constraints];
constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.view)]; constraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.view)];
[self.view addConstraints: constraints]; [self.view addConstraints: constraints];
} }
@end @end

View File

@ -93,22 +93,6 @@ if(TARGET boo)
endforeach() endforeach()
if(EXISTS "${PROV_PROFILE}") if(EXISTS "${PROV_PROFILE}")
# Containing App
add_executable(amuse-au-container MACOSX_BUNDLE AudioUnit/AmuseContainingApp.mm
AudioUnit/AudioUnitBackend.hpp AudioUnit/AudioUnitBackend.mm
AudioUnit/AudioUnitViewController.hpp AudioUnit/AudioUnitViewController.mm)
set_source_files_properties(AudioUnit/AudioUnitBackend.mm AudioUnit/AudioUnitViewController.mm
AudioUnit/AmuseContainingApp.mm
PROPERTIES COMPILE_FLAGS -fobjc-arc)
target_link_libraries(amuse-au-container amuse boo soxr ${AUDIOUNIT_LIBRARY} ${COREAUDIOKIT_LIBRARY}
${AVFOUNDATION_LIBRARY} ${BOO_SYS_LIBS} logvisor)
set_target_properties(amuse-au-container PROPERTIES
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/ContainerInfo.plist"
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/Amuse.entitlements")
set(APPLE_BUNDLE_ID "io.github.axiodl.Amuse")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/Amuse.entitlements.in
${CMAKE_CURRENT_BINARY_DIR}/AmuseContainer.entitlements)
# Extension App # Extension App
add_executable(amuse-au MACOSX_BUNDLE AudioUnit/AudioUnitBackend.hpp AudioUnit/AudioUnitBackend.mm add_executable(amuse-au MACOSX_BUNDLE AudioUnit/AudioUnitBackend.hpp AudioUnit/AudioUnitBackend.mm
@ -123,20 +107,48 @@ if(TARGET boo)
set_target_properties(amuse-au PROPERTIES set_target_properties(amuse-au PROPERTIES
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/ExtensionInfo.plist" MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/ExtensionInfo.plist"
BUNDLE_EXTENSION "appex" BUNDLE TRUE BUNDLE_EXTENSION "appex" BUNDLE TRUE
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/Amuse.entitlements" XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_BINARY_DIR}/AmuseExtension.entitlements"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${APPLE_DEV_ID}"
LINK_FLAGS "-e _NSExtensionMain -fobjc-arc -fobjc-link-runtime -fapplication-extension") LINK_FLAGS "-e _NSExtensionMain -fobjc-arc -fobjc-link-runtime -fapplication-extension")
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/amuse-au.app/Contents/embedded.provisionprofile" INPUT "${PROV_PROFILE}")
install(CODE "file(REMOVE_RECURSE \"${CMAKE_CURRENT_BINARY_DIR}/amuse-au-container.app/Contents/PlugIns/amuse-au.appex\")") # Containing App
install(CODE "file(COPY \"${CMAKE_CURRENT_BINARY_DIR}/amuse-au.app/\" DESTINATION add_executable(amuse-au-container MACOSX_BUNDLE AudioUnit/AmuseContainingApp.mm
\"${CMAKE_CURRENT_BINARY_DIR}/amuse-au-container.app/Contents/PlugIns/amuse-au.appex\" PATTERN AudioUnit/AudioUnitBackend.hpp AudioUnit/AudioUnitBackend.mm
\"${CMAKE_CURRENT_BINARY_DIR}/amuse-au.app/*\")") AudioUnit/AudioUnitViewController.hpp AudioUnit/AudioUnitViewController.mm)
install(CODE "message(STATUS \"Codesigning: amuse-au\")\nexecute_process(COMMAND codesign --force --sign set_source_files_properties(AudioUnit/AudioUnitBackend.mm AudioUnit/AudioUnitViewController.mm
\"${APPLE_DEV_ID}\" --entitlements \"${CMAKE_CURRENT_BINARY_DIR}/AmuseExtension.entitlements\" AudioUnit/AmuseContainingApp.mm
\"${CMAKE_CURRENT_BINARY_DIR}/amuse-au-container.app/Contents/PlugIns/amuse-au.appex\")") PROPERTIES COMPILE_FLAGS -fobjc-arc)
install(CODE "message(STATUS \"Codesigning: amuse-au-container\")\nexecute_process(COMMAND codesign --force --sign target_link_libraries(amuse-au-container amuse boo soxr ${AUDIOUNIT_LIBRARY} ${COREAUDIOKIT_LIBRARY}
\"${APPLE_DEV_ID}\" --entitlements \"${CMAKE_CURRENT_BINARY_DIR}/AmuseContainer.entitlements\" ${AVFOUNDATION_LIBRARY} ${BOO_SYS_LIBS} logvisor)
\"${CMAKE_CURRENT_BINARY_DIR}/amuse-au-container.app\")")
set(APPLE_BUNDLE_ID "io.github.axiodl.Amuse")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/Amuse.entitlements.in
${CMAKE_CURRENT_BINARY_DIR}/AmuseContainer.entitlements)
set_target_properties(amuse-au-container PROPERTIES
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/AudioUnit/ContainerInfo.plist"
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_BINARY_DIR}/AmuseContainer.entitlements"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${APPLE_DEV_ID}")
add_custom_command(TARGET amuse-au POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${PROV_PROFILE}" "$<TARGET_FILE_DIR:amuse-au>/../embedded.provisionprofile"
COMMAND ${CMAKE_COMMAND} -E remove_directory "$<TARGET_FILE_DIR:amuse-au-container>/../PlugIns/amuse-au.appex"
COMMAND ${CMAKE_COMMAND} -E copy_directory "$<TARGET_FILE_DIR:amuse-au>/../.."
"$<TARGET_FILE_DIR:amuse-au-container>/../PlugIns/amuse-au.appex"
COMMAND codesign --force --sign
${APPLE_DEV_ID} --entitlements "${CMAKE_CURRENT_BINARY_DIR}/AmuseExtension.entitlements"
"$<TARGET_FILE_DIR:amuse-au-container>/../PlugIns/amuse-au.appex"
COMMAND codesign --force --sign ${APPLE_DEV_ID}
"$<TARGET_FILE_DIR:amuse-au-container>/../.."
VERBATIM
)
add_custom_command(TARGET amuse-au-container POST_BUILD
COMMAND codesign --force --sign
${APPLE_DEV_ID} "$<TARGET_FILE_DIR:amuse-au-container>/../.."
VERBATIM
)
else() else()
message(WARNING "Unable to find developer provision profile; skipping Amuse-AU") message(WARNING "Unable to find developer provision profile; skipping Amuse-AU")