Import into git
This commit is contained in:
commit
1ac855bf6e
79
FakeBooker.1
Normal file
79
FakeBooker.1
Normal file
|
@ -0,0 +1,79 @@
|
|||
.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
|
||||
.\"See Also:
|
||||
.\"man mdoc.samples for a complete listing of options
|
||||
.\"man mdoc for the short list of editing options
|
||||
.\"/usr/share/misc/mdoc.template
|
||||
.Dd 9/20/06 \" DATE
|
||||
.Dt FakeBooker 1 \" Program name and manual section number
|
||||
.Os Darwin
|
||||
.Sh NAME \" Section Header - required - don't modify
|
||||
.Nm FakeBooker,
|
||||
.\" The following lines are read in generating the apropos(man -k) database. Use only key
|
||||
.\" words here as the database is built based on the words here and in the .ND line.
|
||||
.Nm Other_name_for_same_program(),
|
||||
.Nm Yet another name for the same program.
|
||||
.\" Use .Nm macro to designate other names for the documented program.
|
||||
.Nd This line parsed for whatis database.
|
||||
.Sh SYNOPSIS \" Section Header - required - don't modify
|
||||
.Nm
|
||||
.Op Fl abcd \" [-abcd]
|
||||
.Op Fl a Ar path \" [-a path]
|
||||
.Op Ar file \" [file]
|
||||
.Op Ar \" [file ...]
|
||||
.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
|
||||
arg2 ... \" Arguments
|
||||
.Sh DESCRIPTION \" Section Header - required - don't modify
|
||||
Use the .Nm macro to refer to your program throughout the man page like such:
|
||||
.Nm
|
||||
Underlining is accomplished with the .Ar macro like this:
|
||||
.Ar underlined text .
|
||||
.Pp \" Inserts a space
|
||||
A list of items with descriptions:
|
||||
.Bl -tag -width -indent \" Begins a tagged list
|
||||
.It item a \" Each item preceded by .It macro
|
||||
Description of item a
|
||||
.It item b
|
||||
Description of item b
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
A list of flags and their descriptions:
|
||||
.Bl -tag -width -indent \" Differs from above in tag removed
|
||||
.It Fl a \"-a flag as a list item
|
||||
Description of -a flag
|
||||
.It Fl b
|
||||
Description of -b flag
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
.\" .Sh ENVIRONMENT \" May not be needed
|
||||
.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_1
|
||||
.\" Description of ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_2
|
||||
.\" Description of ENV_VAR_2
|
||||
.\" .El
|
||||
.Sh FILES \" File used or created by the topic of the man page
|
||||
.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
|
||||
.It Pa /usr/share/file_name
|
||||
FILE_1 description
|
||||
.It Pa /Users/joeuser/Library/really_long_file_name
|
||||
FILE_2 description
|
||||
.El \" Ends the list
|
||||
.\" .Sh DIAGNOSTICS \" May not be needed
|
||||
.\" .Bl -diag
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .El
|
||||
.Sh SEE ALSO
|
||||
.\" List links in ascending order by section, alphabetically within a section.
|
||||
.\" Please do not reference files that do not exist without filing a bug report
|
||||
.Xr a 1 ,
|
||||
.Xr b 1 ,
|
||||
.Xr c 1 ,
|
||||
.Xr a 2 ,
|
||||
.Xr b 2 ,
|
||||
.Xr a 3 ,
|
||||
.Xr b 3
|
||||
.\" .Sh BUGS \" Document known, unremedied bugs
|
||||
.\" .Sh HISTORY \" Document history if command behaves in a unique manner
|
281
FakeBooker.mm
Normal file
281
FakeBooker.mm
Normal file
|
@ -0,0 +1,281 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
#import <Quartz/Quartz.h>
|
||||
|
||||
#include <list>
|
||||
#include <algorithm>
|
||||
#include <stdio.h>
|
||||
|
||||
struct FBDoc {
|
||||
NSString * fDocName;
|
||||
CGPDFDocumentRef fDocument;
|
||||
NSString * fLabel;
|
||||
size_t fStartPage;
|
||||
size_t fNumPages;
|
||||
bool fKeepWithPrev;
|
||||
bool fKeepWithNext;
|
||||
|
||||
FBDoc(NSString * line);
|
||||
FBDoc(NSString * docName, CGPDFDocumentRef doc, NSString * line = nil);
|
||||
~FBDoc();
|
||||
};
|
||||
|
||||
FBDoc::FBDoc(NSString * line)
|
||||
: fDocName(nil), fDocument(nil), fLabel([line retain])
|
||||
{
|
||||
}
|
||||
|
||||
FBDoc::FBDoc(NSString * name, CGPDFDocumentRef doc, NSString * line)
|
||||
: fDocName(name), fDocument(doc), fLabel(line),
|
||||
fStartPage(0), fKeepWithPrev(false), fKeepWithNext(false)
|
||||
{
|
||||
fNumPages = CGPDFDocumentGetNumberOfPages(doc);
|
||||
}
|
||||
|
||||
typedef std::list<FBDoc *> FBDocList;
|
||||
|
||||
size_t gNextPage = 1;
|
||||
FBDocList gIndexList;
|
||||
FILE * gIndex;
|
||||
CGContextRef gBookContext;
|
||||
CFURLRef gBookURL;
|
||||
|
||||
void AddVerbatimLine(NSString * line)
|
||||
{
|
||||
gIndexList.push_back(new FBDoc(line));
|
||||
}
|
||||
|
||||
void AddDocument(NSString * docPath, NSString * label, bool keepWithPrev)
|
||||
{
|
||||
CGPDFDocumentRef doc = nil;
|
||||
|
||||
if (docPath) {
|
||||
NSURL * url = [NSURL fileURLWithPath:docPath];
|
||||
|
||||
doc = CGPDFDocumentCreateWithURL((CFURLRef)url);
|
||||
if (!doc) {
|
||||
fprintf(stderr, "Can't read PDF document %s\n", [docPath UTF8String]);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
FBDoc * fbDoc = new FBDoc(docPath, doc, label);
|
||||
|
||||
if (keepWithPrev)
|
||||
if (FBDoc * prev = gIndexList.back())
|
||||
prev->fKeepWithNext = fbDoc->fKeepWithPrev = true;
|
||||
|
||||
gIndexList.push_back(fbDoc);
|
||||
}
|
||||
|
||||
void SelectDocument(FBDoc * doc)
|
||||
{
|
||||
const float kFontSize = 20.0f;
|
||||
const float kXROff = -40.0f;
|
||||
const float kXLOff = 20.0f;
|
||||
const float kYOff = 20.0f;
|
||||
|
||||
if (!gBookContext) {
|
||||
CGRect mediaBox = CGPDFDocumentGetMediaBox(doc->fDocument, 1);
|
||||
mediaBox.origin.x = mediaBox.origin.y = 0.0f;
|
||||
gBookContext = CGPDFContextCreateWithURL(gBookURL, &mediaBox, NULL);
|
||||
}
|
||||
doc->fStartPage = gNextPage;
|
||||
for (size_t i = 0; i++ < doc->fNumPages; ) {
|
||||
CGRect pageRect = CGPDFDocumentGetMediaBox(doc->fDocument, i);
|
||||
CGContextBeginPage(gBookContext, &pageRect);
|
||||
CGContextDrawPDFDocument(gBookContext, pageRect, doc->fDocument, i);
|
||||
if (gNextPage > 1) {
|
||||
CGContextSetTextMatrix(gBookContext, CGAffineTransformIdentity);
|
||||
CGContextSelectFont(gBookContext, "MarkerFelt-Thin", kFontSize,
|
||||
kCGEncodingMacRoman);
|
||||
char pageNum[5];
|
||||
sprintf(pageNum, "%d", gNextPage);
|
||||
const float xPos = pageRect.origin.x
|
||||
+ (gNextPage&1) ? (pageRect.size.width+kXROff) : kXLOff;
|
||||
const float yPos = pageRect.origin.y+kYOff;
|
||||
CGContextShowTextAtPoint(gBookContext, xPos, yPos,
|
||||
pageNum, strlen(pageNum));
|
||||
}
|
||||
++gNextPage;
|
||||
CGContextEndPage(gBookContext);
|
||||
}
|
||||
}
|
||||
|
||||
void AssembleBook()
|
||||
{
|
||||
FBDocList::iterator i = gIndexList.begin();
|
||||
|
||||
while (i != gIndexList.end()) {
|
||||
if ((*i)->fStartPage || !(*i)->fNumPages) {
|
||||
++i; // Already mapped, skip
|
||||
} else if (gNextPage & 1) {
|
||||
//
|
||||
// Odd-numbered page, search for next unmapped single page song
|
||||
//
|
||||
for (FBDocList::iterator j=i; j != gIndexList.end(); ++j)
|
||||
if (!(*j)->fStartPage && (*j)->fNumPages == 1
|
||||
&& !(*j)->fKeepWithNext && !(*j)->fKeepWithPrev
|
||||
) {
|
||||
SelectDocument(*j);
|
||||
|
||||
if (j==i)
|
||||
++i;
|
||||
|
||||
goto found_odd_song;
|
||||
}
|
||||
abort();
|
||||
found_odd_song:
|
||||
;
|
||||
} else {
|
||||
//
|
||||
// Even-numbered page, search for multi-page songs or at least two
|
||||
// single page ones.
|
||||
//
|
||||
if ((*i)->fNumPages == 1) {
|
||||
FBDocList::iterator j = i;
|
||||
while (++j != gIndexList.end())
|
||||
if ((*j)->fStartPage || !(*j)->fNumPages) {
|
||||
continue; // Already used, try next one
|
||||
} else if ((*j)->fNumPages > 1 || (*j)->fKeepWithNext) {
|
||||
break; // Found multi-page, fail
|
||||
} else {
|
||||
//
|
||||
// Found two single page documents to combine
|
||||
//
|
||||
SelectDocument(*i);
|
||||
++i;
|
||||
SelectDocument(*j);
|
||||
if (j==i)
|
||||
++j;
|
||||
goto found_even_song;
|
||||
}
|
||||
if (j == gIndexList.end()) {
|
||||
//
|
||||
// At end, use single page
|
||||
//
|
||||
SelectDocument(*i);
|
||||
++i;
|
||||
|
||||
goto found_even_song;
|
||||
}
|
||||
}
|
||||
for (FBDocList::iterator j=i; j != gIndexList.end(); ++j)
|
||||
if (!(*j)->fStartPage
|
||||
&& ((*j)->fNumPages > 1 || (*j)->fKeepWithNext)
|
||||
) {
|
||||
SelectDocument(*j);
|
||||
|
||||
if (j==i)
|
||||
++i;
|
||||
while (++j != gIndexList.end() && (*j)->fKeepWithPrev)
|
||||
SelectDocument(*j);
|
||||
|
||||
goto found_even_song;
|
||||
}
|
||||
abort();
|
||||
found_even_song:
|
||||
;
|
||||
}
|
||||
}
|
||||
if (gBookContext)
|
||||
CGContextRelease(gBookContext);
|
||||
}
|
||||
|
||||
void PrintIndexLine(FBDoc * line)
|
||||
{
|
||||
if (line->fLabel) {
|
||||
NSString * s;
|
||||
|
||||
if (line->fDocument)
|
||||
s = [NSString stringWithFormat:line->fLabel, line->fStartPage];
|
||||
else
|
||||
s = line->fLabel;
|
||||
|
||||
NSData * d = [s dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
fwrite([d bytes], 1, [d length], gIndex);
|
||||
fputc('\n', gIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void PrintIndex()
|
||||
{
|
||||
std::for_each(gIndexList.begin(), gIndexList.end(), PrintIndexLine);
|
||||
}
|
||||
|
||||
void ProcessIndex(NSString * inIdx)
|
||||
{
|
||||
bool inPrePostLude = true;
|
||||
NSEnumerator * lines = [[inIdx componentsSeparatedByString:@"\n"]
|
||||
objectEnumerator];
|
||||
NSCharacterSet * nonBlank = [[NSCharacterSet whitespaceCharacterSet]
|
||||
invertedSet];
|
||||
while (NSString * line = [lines nextObject]) {
|
||||
NSScanner * lineScanner = [NSScanner scannerWithString:line];
|
||||
if ([lineScanner scanString:@"%%" intoString:nil]
|
||||
&& [lineScanner isAtEnd]
|
||||
) {
|
||||
//
|
||||
// Separate with %% lines
|
||||
//
|
||||
inPrePostLude = !inPrePostLude;
|
||||
} else if (inPrePostLude) {
|
||||
//
|
||||
// Verbatim copy to output
|
||||
//
|
||||
AddVerbatimLine(line);
|
||||
} else {
|
||||
//
|
||||
// In index proper
|
||||
//
|
||||
NSString * doc;
|
||||
NSString * label = nil;
|
||||
bool keepWithPrev = false;
|
||||
[lineScanner setScanLocation:0];
|
||||
if ([lineScanner scanString:@"%" intoString:nil]) {
|
||||
continue; // Comment line, skip
|
||||
} else if ([lineScanner scanString:@"-" intoString:nil]) {
|
||||
doc = nil; // No document
|
||||
} else {
|
||||
if ([lineScanner scanString:@"+" intoString:nil])
|
||||
keepWithPrev = true;
|
||||
if (![lineScanner scanCharactersFromSet:nonBlank intoString:&doc])
|
||||
continue; // Blank line, skip
|
||||
}
|
||||
label = [line substringFromIndex:[lineScanner scanLocation]];
|
||||
AddDocument(doc, label, keepWithPrev);
|
||||
}
|
||||
}
|
||||
AssembleBook();
|
||||
PrintIndex();
|
||||
}
|
||||
|
||||
int main (int argc, const char * argv[])
|
||||
{
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
if (!argv[1]) {
|
||||
fprintf(stderr, "Usage: FakeBooker <index.idx>\n");
|
||||
exit(1);
|
||||
}
|
||||
NSString * index = [NSString stringWithUTF8String:argv[1]];
|
||||
NSString * idxBase = [index stringByDeletingPathExtension];
|
||||
NSString * idx = [NSString stringWithContentsOfFile:index];
|
||||
if (!idx) {
|
||||
fprintf(stderr, "Index file `%s' can't be read.\n", argv[1]);
|
||||
exit(2);
|
||||
}
|
||||
NSString * toc = [idxBase stringByAppendingString:@"_index.pdf"];
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:toc])
|
||||
AddDocument(toc, nil, false);
|
||||
gIndex = fopen([[[toc stringByDeletingPathExtension]
|
||||
stringByAppendingPathExtension:@"tex"]
|
||||
UTF8String], "w");
|
||||
gBookURL = (CFURLRef)[NSURL fileURLWithPath:
|
||||
[idxBase stringByAppendingPathExtension:@"pdf"]];
|
||||
ProcessIndex(idx);
|
||||
|
||||
[pool release];
|
||||
return 0;
|
||||
}
|
232
FakeBooker.xcodeproj/project.pbxproj
Normal file
232
FakeBooker.xcodeproj/project.pbxproj
Normal file
|
@ -0,0 +1,232 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 44;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
8DD76F9A0486AA7600D96B5E /* FakeBooker.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* FakeBooker.mm */; settings = {ATTRIBUTES = (); }; };
|
||||
8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
|
||||
8DD76F9F0486AA7600D96B5E /* FakeBooker.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859EA3029092ED04C91782 /* FakeBooker.1 */; };
|
||||
95C2FC690AC4A35B008CB1FA /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2FC680AC4A35B008CB1FA /* ApplicationServices.framework */; };
|
||||
95C732200AC26690005FD7F5 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C7321F0AC26690005FD7F5 /* Quartz.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 8;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
8DD76F9F0486AA7600D96B5E /* FakeBooker.1 in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
08FB7796FE84155DC02AAC07 /* FakeBooker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FakeBooker.mm; sourceTree = "<group>"; };
|
||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
32A70AAB03705E1F00C91783 /* FakeBooker_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FakeBooker_Prefix.pch; sourceTree = "<group>"; };
|
||||
8DD76FA10486AA7600D96B5E /* FakeBooker */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = FakeBooker; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95C2FC680AC4A35B008CB1FA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
|
||||
95C7321F0AC26690005FD7F5 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
|
||||
C6859EA3029092ED04C91782 /* FakeBooker.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = FakeBooker.1; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */,
|
||||
95C732200AC26690005FD7F5 /* Quartz.framework in Frameworks */,
|
||||
95C2FC690AC4A35B008CB1FA /* ApplicationServices.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
08FB7794FE84155DC02AAC07 /* FakeBooker */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB7795FE84155DC02AAC07 /* Source */,
|
||||
C6859EA2029092E104C91782 /* Documentation */,
|
||||
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||
);
|
||||
name = FakeBooker;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB7795FE84155DC02AAC07 /* Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32A70AAB03705E1F00C91783 /* FakeBooker_Prefix.pch */,
|
||||
08FB7796FE84155DC02AAC07 /* FakeBooker.mm */,
|
||||
);
|
||||
name = Source;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
95C2FC680AC4A35B008CB1FA /* ApplicationServices.framework */,
|
||||
95C7321F0AC26690005FD7F5 /* Quartz.framework */,
|
||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */,
|
||||
);
|
||||
name = "External Frameworks and Libraries";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8DD76FA10486AA7600D96B5E /* FakeBooker */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C6859EA2029092E104C91782 /* Documentation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C6859EA3029092ED04C91782 /* FakeBooker.1 */,
|
||||
);
|
||||
name = Documentation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8DD76F960486AA7600D96B5E /* FakeBooker */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "FakeBooker" */;
|
||||
buildPhases = (
|
||||
8DD76F990486AA7600D96B5E /* Sources */,
|
||||
8DD76F9B0486AA7600D96B5E /* Frameworks */,
|
||||
8DD76F9E0486AA7600D96B5E /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = FakeBooker;
|
||||
productInstallPath = "$(HOME)/bin";
|
||||
productName = FakeBooker;
|
||||
productReference = 8DD76FA10486AA7600D96B5E /* FakeBooker */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
};
|
||||
buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "FakeBooker" */;
|
||||
compatibilityVersion = "Xcode 3.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* FakeBooker */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8DD76F960486AA7600D96B5E /* FakeBooker */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8DD76F990486AA7600D96B5E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8DD76F9A0486AA7600D96B5E /* FakeBooker.mm in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1DEB927508733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = FakeBooker_Prefix.pch;
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
PRODUCT_NAME = FakeBooker;
|
||||
SDKROOT = macosx;
|
||||
ZERO_LINK = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927608733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = FakeBooker_Prefix.pch;
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
PRODUCT_NAME = FakeBooker;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1DEB927908733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927A08733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "FakeBooker" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB927508733DD40010E9CD /* Debug */,
|
||||
1DEB927608733DD40010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "FakeBooker" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB927908733DD40010E9CD /* Debug */,
|
||||
1DEB927A08733DD40010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
|
||||
}
|
7
FakeBooker_Prefix.pch
Normal file
7
FakeBooker_Prefix.pch
Normal file
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'FakeBooker' target in the 'FakeBooker' project.
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user