From 6465ffa57d5bca1ea640a308f7c892a7a9e296ea Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Sun, 22 Oct 2006 07:16:29 +0000 Subject: [PATCH] Start lilypond generation code --- Resources/Info.plist | 14 +++ Resources/Templates/default.lyt | 33 +++++++ Sources/VLDocument.h | 1 + Sources/VLDocument.mm | 25 +++++- Sources/VLLilypondDocument.h | 16 ++++ Sources/VLLilypondDocument.mm | 102 ++++++++++++++++++++++ Sources/VLXMLDocument.h | 4 +- Sources/VLXMLDocument.mm | 4 +- Tests/TVLLilypond.mm | 27 ++++++ Vocalese.xcodeproj/project.pbxproj | 134 +++++++++++++++++++++++++++++ 10 files changed, 354 insertions(+), 6 deletions(-) create mode 100644 Resources/Templates/default.lyt create mode 100644 Sources/VLLilypondDocument.h create mode 100644 Sources/VLLilypondDocument.mm create mode 100644 Tests/TVLLilypond.mm diff --git a/Resources/Info.plist b/Resources/Info.plist index 2f134c1..527f9bc 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -28,6 +28,20 @@ NSPersistentStoreTypeKey XML + + CFBundleTypeExtensions + + ly + + CFBundleTypeName + Lilypond + CFBundleTypeRole + None + LSTypeIsPackage + + NSPersistentStoreTypeKey + XML + CFBundleExecutable Vocalese diff --git a/Resources/Templates/default.lyt b/Resources/Templates/default.lyt new file mode 100644 index 0000000..bc32e0d --- /dev/null +++ b/Resources/Templates/default.lyt @@ -0,0 +1,33 @@ +\version "1.8.0" + +\header { + title = "<{TITLE}>" + poet = "<{POET}>" + composer= "<{COMPOSER}>" + arranger = "<{ARRANGER}>" + tagline = #(string-append "Vocalese <{VLVERSION}> / Lilypond" (lilypond-version)) +} + +\paper { + #(set-paper-size "<{PAPERSIZE}>") + indent = 0.0\cm + pagenumber = no + page-top-space = #.1 + <{FORMATTING}> +} + +#(set-global-staff-size <{STAFFSIZE}>) + +\score { + << + \context ChordNames \chords { \override ChordName #'font-size = #6 + <{CHORDS}> + } + \context Voice = "mel" { + \time <{TIME}> + \key <{KEY}> + <{NOTES}> + } + \lyricsto "mel" \new Lyrics { <{LYRICS}> } + >> +} diff --git a/Sources/VLDocument.h b/Sources/VLDocument.h index 5f2077f..18584e6 100644 --- a/Sources/VLDocument.h +++ b/Sources/VLDocument.h @@ -26,6 +26,7 @@ { VLSong * song; VLEditable *editTarget; + NSString * lilypondTemplate; } - (VLSong *) song; diff --git a/Sources/VLDocument.mm b/Sources/VLDocument.mm index 79c6723..ef2314a 100644 --- a/Sources/VLDocument.mm +++ b/Sources/VLDocument.mm @@ -7,6 +7,8 @@ // #import "VLDocument.h" +#import "VLXMLDocument.h" +#import "VLLilypondDocument.h" @implementation VLEditable @@ -48,8 +50,9 @@ // Add your subclass-specific initialization here. // If an error occurs here, send a [self release] message and return nil. - song = new VLSong; - editTarget = nil; + song = new VLSong; + editTarget = nil; + lilypondTemplate = @"default"; } return self; } @@ -128,4 +131,22 @@ [controller setShouldCloseDocument:YES]; } +- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError +{ + if ([typeName isEqual:@"Song"]) + return [self XMLDataWithError:outError]; + else if ([typeName isEqual:@"Lilypond"]) + return [self lilypondDataWithError:outError]; + else + return nil; +} + +- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError +{ + if ([typeName isEqual:@"Song"]) + return [self readFromXMLData:data error:outError]; + else + return NO; +} + @end diff --git a/Sources/VLLilypondDocument.h b/Sources/VLLilypondDocument.h new file mode 100644 index 0000000..2afa1e7 --- /dev/null +++ b/Sources/VLLilypondDocument.h @@ -0,0 +1,16 @@ +// +// VLLilypondDocument.h +// Vocalese +// +// Created by Matthias Neeracher on 10/20/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +#import +#import "VLDocument.h" + +@interface VLDocument (Lilypond) + +- (NSData *)lilypondDataWithError:(NSError **)outError; + +@end diff --git a/Sources/VLLilypondDocument.mm b/Sources/VLLilypondDocument.mm new file mode 100644 index 0000000..a9212f1 --- /dev/null +++ b/Sources/VLLilypondDocument.mm @@ -0,0 +1,102 @@ +// +// VLLilypondDocument.mm +// Vocalese +// +// Created by Matthias Neeracher on 10/20/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +#import "VLLilypondDocument.h" + +@interface NSMutableString (VLLilypond) + +- (void) substituteMacro:(NSString *)macro withValue:(NSString *)value; +- (void) purgeMacros; + +@end + +@implementation NSMutableString (VLLilypond) + +- (void) substituteMacro:(NSString *)m withValue:(NSString *)value +{ + NSString * macro = [NSString stringWithFormat:@"<{%@}>", m]; + NSRange range = + [value rangeOfCharacterFromSet: + [NSCharacterSet characterSetWithCharactersInString:@"\n"]]; + BOOL hasEOL= range.location != NSNotFound; + + for (range = [self rangeOfString:macro]; + range.location != NSNotFound; + range = [self rangeOfString:macro] + ) { + if (hasEOL) { + // + // Multi line substitution, figure out a prefix + // + NSRange prefix, suffix; + NSRange line = [self lineRangeForRange:range]; + suffix.location = range.location+range.length; + suffix.length = line.location+line.length-suffix.location; + prefix.location = line.location; + prefix.length = range.location-prefix.location; + NSString * pfxStr = [self substringWithRange:prefix]; + NSString * nonBlank = + [pfxStr stringByTrimmingCharactersInSet: + [NSCharacterSet whitespaceCharacterSet]]; + NSString * sfxStr = + [[self substringWithRange:suffix] + stringByTrimmingCharactersInSet: + [NSCharacterSet whitespaceCharacterSet]]; + if ([nonBlank length]) { + NSRange nb = [pfxStr rangeOfString:nonBlank]; + prefix.length = nb.location - prefix.location; + pfxStr = + [[self substringWithRange:prefix] + stringByAppendingString:@" "]; + sfxStr = [NSString stringWithFormat:@"\n%@", pfxStr]; + } else { + range = line; + } + NSArray * lines = [value componentsSeparatedByString:@"\n"]; + value = + [NSString stringWithFormat:@"%@%@%@", pfxStr, + [lines componentsJoinedByString: + [@"\n" stringByAppendingString:pfxStr]], + sfxStr]; + } + [self replaceCharactersInRange:range withString:value]; + } +} + +- (void) purgeMacros +{ + for (NSRange range = [self rangeOfString:@"<{"]; + range.location != NSNotFound; + range = [self rangeOfString:@"<{"] + ) + [self replaceCharactersInRange:[self lineRangeForRange:range] + withString: @""]; +} + +@end + +@implementation VLDocument (Lilypond) + +- (NSData *)lilypondDataWithError:(NSError **)outError +{ + NSBundle * bndl = [NSBundle mainBundle]; + NSString * tmpl = + [bndl pathForResource:lilypondTemplate + ofType:@"lyt" inDirectory:@"Templates"]; + NSStringEncoding enc = NSUTF8StringEncoding; + NSError * err; + NSMutableString * ly = + [[NSString stringWithContentsOfFile:tmpl encoding:enc error:&err] + mutableCopy]; + [ly substituteMacro:@"VLVERSION" withValue: + [bndl objectForInfoDictionaryKey:@"CFBundleVersion"]]; + [ly purgeMacros]; + return [ly dataUsingEncoding:enc]; +} + +@end diff --git a/Sources/VLXMLDocument.h b/Sources/VLXMLDocument.h index 8a45051..12a59c1 100644 --- a/Sources/VLXMLDocument.h +++ b/Sources/VLXMLDocument.h @@ -11,7 +11,7 @@ @interface VLDocument (XML) -- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError; -- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError; +- (NSData *)XMLDataWithError:(NSError **)outError; +- (BOOL)readFromXMLData:(NSData *)data error:(NSError **)outError; @end diff --git a/Sources/VLXMLDocument.mm b/Sources/VLXMLDocument.mm index 12b4d25..2239b3d 100644 --- a/Sources/VLXMLDocument.mm +++ b/Sources/VLXMLDocument.mm @@ -194,7 +194,7 @@ const char * sSteps = "C DbD EbE F GbG AbA BbB "; } } -- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError +- (NSData *)XMLDataWithError:(NSError **)outError { NSXMLElement * partList = [NSXMLNode elementWithName:@"part-list"]; [partList addChild: [self scorePartWithID:@"HARM" name:@"Chords"]]; @@ -359,7 +359,7 @@ int8_t sStepToPitch[] = { } } -- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError +- (BOOL)readFromXMLData:(NSData *)data error:(NSError **)outError { NSXMLDocument * doc = [[NSXMLDocument alloc] initWithData:data options:0 diff --git a/Tests/TVLLilypond.mm b/Tests/TVLLilypond.mm new file mode 100644 index 0000000..f3bafbc --- /dev/null +++ b/Tests/TVLLilypond.mm @@ -0,0 +1,27 @@ +/* + * TVLLilypond.mm + * Vocalese + * + * Created by Matthias Neeracher on 12/19/05. + * Copyright 2006 __MyCompanyName__. All rights reserved. + * + */ + +#include "VLModel.h" +#include "VLDocument.h" + +int main(int, char *const argv[]) +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + VLDocument * doc = [[VLDocument alloc] init]; + NSString * file = [NSString stringWithUTF8String:argv[1]]; + NSError * err; + [doc readFromURL:[NSURL fileURLWithPath:file] ofType:@"Song" error:&err]; + [doc writeToURL:[NSURL fileURLWithPath: + [[file stringByDeletingPathExtension] + stringByAppendingPathExtension:@"ly"]] + ofType:@"Lilypond" error:&err]; + [pool release]; + + exit(0); +} diff --git a/Vocalese.xcodeproj/project.pbxproj b/Vocalese.xcodeproj/project.pbxproj index 49571b4..9a484bf 100644 --- a/Vocalese.xcodeproj/project.pbxproj +++ b/Vocalese.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ 952CBBB5095FD34F00434E43 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 952CBBB3095FD34F00434E43 /* AudioUnit.framework */; }; 952CBBB6095FD37300434E43 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; 952DCD78096BBB11001C2316 /* VLSheetViewChords.mm in Sources */ = {isa = PBXBuildFile; fileRef = 952DCD77096BBB11001C2316 /* VLSheetViewChords.mm */; }; + 953722670AE9F0E100B6E483 /* VLLilypondDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 953722660AE9F0E100B6E483 /* VLLilypondDocument.mm */; }; 95498DBD0AE3812F006B5F81 /* VLSoundSched.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95498DBC0AE3812F006B5F81 /* VLSoundSched.mm */; }; 955E58E5095658AB0045FDA5 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; 955E59610957C1400045FDA5 /* TVLChord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E59600957C1400045FDA5 /* TVLChord.cpp */; }; @@ -34,6 +35,13 @@ 95B3E1A70960E58B000E9C0D /* Music in Resources */ = {isa = PBXBuildFile; fileRef = 95B3E1980960E58B000E9C0D /* Music */; }; 95B66658096BCA1F00FE18C9 /* VLSheetViewNotes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */; }; 95BDA15909540BF1009F9D65 /* VLSheetView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95BDA15809540BF1009F9D65 /* VLSheetView.mm */; }; + 95E04DA70AEB486E006F30A0 /* TVLLilypond.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95E04DA60AEB486E006F30A0 /* TVLLilypond.mm */; }; + 95E04DA80AEB4878006F30A0 /* VLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* VLDocument.mm */; }; + 95E04DA90AEB487A006F30A0 /* VLLilypondDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 953722660AE9F0E100B6E483 /* VLLilypondDocument.mm */; }; + 95E04DAA0AEB487E006F30A0 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; + 95E04DAB0AEB4886006F30A0 /* VLXMLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */; }; + 95E04DC70AEB4B57006F30A0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; + 95E04DCE0AEB4D9B006F30A0 /* Templates in Resources */ = {isa = PBXBuildFile; fileRef = 95E04DCA0AEB4D9B006F30A0 /* Templates */; }; 95F5F50F0ADCC433003980B2 /* VLXMLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */; }; 95F5F5340ADCCFBB003980B2 /* DTD in Resources */ = {isa = PBXBuildFile; fileRef = 95F5F51E0ADCCFBB003980B2 /* DTD */; }; /* End PBXBuildFile section */ @@ -61,6 +69,8 @@ 952CBBB3095FD34F00434E43 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; 952DCD76096BBB11001C2316 /* VLSheetViewChords.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLSheetViewChords.h; path = Sources/VLSheetViewChords.h; sourceTree = ""; }; 952DCD77096BBB11001C2316 /* VLSheetViewChords.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetViewChords.mm; path = Sources/VLSheetViewChords.mm; sourceTree = ""; }; + 953722650AE9F0E100B6E483 /* VLLilypondDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLLilypondDocument.h; path = Sources/VLLilypondDocument.h; sourceTree = ""; }; + 953722660AE9F0E100B6E483 /* VLLilypondDocument.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLLilypondDocument.mm; path = Sources/VLLilypondDocument.mm; sourceTree = ""; }; 95498DBB0AE3812F006B5F81 /* VLSoundSched.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLSoundSched.h; path = Sources/VLSoundSched.h; sourceTree = ""; }; 95498DBC0AE3812F006B5F81 /* VLSoundSched.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSoundSched.mm; path = Sources/VLSoundSched.mm; sourceTree = ""; }; 955E58E3095658AB0045FDA5 /* VLModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLModel.h; path = Sources/VLModel.h; sourceTree = ""; }; @@ -77,6 +87,9 @@ 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetViewNotes.mm; path = Sources/VLSheetViewNotes.mm; sourceTree = ""; }; 95BDA15709540BF1009F9D65 /* VLSheetView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLSheetView.h; path = Sources/VLSheetView.h; sourceTree = ""; }; 95BDA15809540BF1009F9D65 /* VLSheetView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetView.mm; path = Sources/VLSheetView.mm; sourceTree = ""; }; + 95E04DA00AEB4837006F30A0 /* TVLLilypond */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TVLLilypond; sourceTree = BUILT_PRODUCTS_DIR; }; + 95E04DA60AEB486E006F30A0 /* TVLLilypond.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = TVLLilypond.mm; path = Tests/TVLLilypond.mm; sourceTree = ""; }; + 95E04DCA0AEB4D9B006F30A0 /* Templates */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Templates; path = Resources/Templates; sourceTree = ""; }; 95F5F50D0ADCC433003980B2 /* VLXMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLXMLDocument.h; path = Sources/VLXMLDocument.h; sourceTree = ""; }; 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLXMLDocument.mm; path = Sources/VLXMLDocument.mm; sourceTree = ""; }; 95F5F51E0ADCCFBB003980B2 /* DTD */ = {isa = PBXFileReference; lastKnownFileType = folder; name = DTD; path = Resources/DTD; sourceTree = ""; }; @@ -116,6 +129,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 95E04D9E0AEB4837006F30A0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 95E04DC70AEB4B57006F30A0 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -146,6 +167,7 @@ 955E595C0957C0FC0045FDA5 /* TVLChord */, 952CBB98095FD19D00434E43 /* TVLSoundOut */, 959408A0096922CA007CCCF8 /* TVLEdit */, + 95E04DA00AEB4837006F30A0 /* TVLLilypond */, ); name = Products; sourceTree = ""; @@ -183,6 +205,8 @@ 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */, 95F5F50D0ADCC433003980B2 /* VLXMLDocument.h */, 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */, + 953722650AE9F0E100B6E483 /* VLLilypondDocument.h */, + 953722660AE9F0E100B6E483 /* VLLilypondDocument.mm */, ); name = Classes; sourceTree = ""; @@ -199,6 +223,7 @@ 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 95E04DCA0AEB4D9B006F30A0 /* Templates */, 9593E4E60AE0ED1F00035816 /* vlsong.icns */, 9593E4E70AE0ED1F00035816 /* vocalese.icns */, 95F5F51E0ADCCFBB003980B2 /* DTD */, @@ -224,6 +249,7 @@ 955E59560957C0C50045FDA5 /* Tests */ = { isa = PBXGroup; children = ( + 95E04DA60AEB486E006F30A0 /* TVLLilypond.mm */, 959408AC096922EA007CCCF8 /* TVLEdit.cpp */, 952CBB9E095FD1D900434E43 /* TVLSoundOut.cpp */, 955E59600957C1400045FDA5 /* TVLChord.cpp */, @@ -300,6 +326,22 @@ productReference = 959408A0096922CA007CCCF8 /* TVLEdit */; productType = "com.apple.product-type.tool"; }; + 95E04D9F0AEB4837006F30A0 /* TVLLilypond */ = { + isa = PBXNativeTarget; + buildConfigurationList = 95E04DA20AEB485A006F30A0 /* Build configuration list for PBXNativeTarget "TVLLilypond" */; + buildPhases = ( + 95E04D9D0AEB4837006F30A0 /* Sources */, + 95E04D9E0AEB4837006F30A0 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TVLLilypond; + productName = TVLLilypond; + productReference = 95E04DA00AEB4837006F30A0 /* TVLLilypond */; + productType = "com.apple.product-type.tool"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -317,6 +359,7 @@ 955E595B0957C0FC0045FDA5 /* TVLChord */, 952CBB97095FD19D00434E43 /* TVLSoundOut */, 9594089F096922CA007CCCF8 /* TVLEdit */, + 95E04D9F0AEB4837006F30A0 /* TVLLilypond */, ); }; /* End PBXProject section */ @@ -334,6 +377,7 @@ 95F5F5340ADCCFBB003980B2 /* DTD in Resources */, 9593E4E80AE0ED1F00035816 /* vlsong.icns in Resources */, 9593E4E90AE0ED1F00035816 /* vocalese.icns in Resources */, + 95E04DCE0AEB4D9B006F30A0 /* Templates in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -353,6 +397,7 @@ 95B66658096BCA1F00FE18C9 /* VLSheetViewNotes.mm in Sources */, 95F5F50F0ADCC433003980B2 /* VLXMLDocument.mm in Sources */, 95498DBD0AE3812F006B5F81 /* VLSoundSched.mm in Sources */, + 953722670AE9F0E100B6E483 /* VLLilypondDocument.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -384,6 +429,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 95E04D9D0AEB4837006F30A0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 95E04DA70AEB486E006F30A0 /* TVLLilypond.mm in Sources */, + 95E04DA80AEB4878006F30A0 /* VLDocument.mm in Sources */, + 95E04DA90AEB487A006F30A0 /* VLLilypondDocument.mm in Sources */, + 95E04DAA0AEB487E006F30A0 /* VLModel.cpp in Sources */, + 95E04DAB0AEB4886006F30A0 /* VLXMLDocument.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ @@ -699,6 +756,73 @@ }; name = Default; }; + 95E04DA30AEB485A006F30A0 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + AppKit, + ); + PREBINDING = NO; + PRODUCT_NAME = TVLLilypond; + ZERO_LINK = YES; + }; + name = Development; + }; + 95E04DA40AEB485A006F30A0 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Sources/Vocalese_Prefix.pch; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + AppKit, + ); + PREBINDING = NO; + PRODUCT_NAME = TVLLilypond; + ZERO_LINK = NO; + }; + name = Deployment; + }; + 95E04DA50AEB485A006F30A0 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Sources/Vocalese_Prefix.pch; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + AppKit, + ); + PREBINDING = NO; + PRODUCT_NAME = TVLLilypond; + ZERO_LINK = YES; + }; + name = Default; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -752,6 +876,16 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; + 95E04DA20AEB485A006F30A0 /* Build configuration list for PBXNativeTarget "TVLLilypond" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 95E04DA30AEB485A006F30A0 /* Development */, + 95E04DA40AEB485A006F30A0 /* Deployment */, + 95E04DA50AEB485A006F30A0 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; /* End XCConfigurationList section */ }; rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */;