Skip to content

Commit

Permalink
Add PBXBuildFile/PBXFileReference from the synchronized groups
Browse files Browse the repository at this point in the history
  • Loading branch information
gcasa committed Nov 21, 2024
1 parent 3d032b4 commit 1d3181f
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 31 deletions.
18 changes: 13 additions & 5 deletions XCode/PBXFileReference.m
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ + (NSString *) fileTypeFromPath: (NSString *)path
{
result = @"file.gorm"; // GS specific
}
else if ([ext isEqualToString: @"entitlements"])
{
result = @"text.plist.entitlements";
}

return result;
}
Expand Down Expand Up @@ -125,19 +129,23 @@ + (NSString *) extForFileType: (NSString *)type
{
result = @"app";
}
if ([type isEqualToString: @"file.xib"])
else if ([type isEqualToString: @"file.xib"])
{
result = @"xib";
}
if ([type isEqualToString: @"file.nib"])
else if ([type isEqualToString: @"file.nib"])
{
result = @"nib";
}
if ([type isEqualToString: @"file.gorm"])
else if ([type isEqualToString: @"file.gorm"])
{
result = @"gorm"; // GS specific
result = @"gorm";
}

else if ([type isEqualToString: @"text.plist.entitlements"])
{
result = @"entitlements";
}

return result;
}

Expand Down
50 changes: 29 additions & 21 deletions XCode/PBXFileSystemSynchronizedRootGroup.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,51 +26,59 @@
#import "PBXFileSystemSynchronizedRootGroup.h"
#import "PBXFileReference.h"
#import "PBXBuildFile.h"
#import "NSString+PBXAdditions.h"

@implementation PBXFileSystemSynchronizedRootGroup

- (NSMutableArray *) synchronizedChildren
{
NSFileManager *fm = [NSFileManager defaultManager];
BOOL isDirectory;
NSDirectoryEnumerator *den = [fm enumeratorAtPath: _path];
NSMutableArray *result = [NSMutableArray array];
NSString *filePath = nil;
NSMutableArray *fp = [NSMutableArray array];

if ([fm fileExistsAtPath: _path isDirectory: &isDirectory]
&& isDirectory == YES)
while ((filePath = [den nextObject]) != nil)
{
NSError *error = nil;
NSArray *files = [fm contentsOfDirectoryAtPath: _path error: &error];

if (error == nil)
BOOL isDir = NO;
NSString *fullPath = [_path stringByAppendingPathComponent: filePath];
if ([fm fileExistsAtPath: fullPath isDirectory: &isDir] && isDir == NO)
{
NSEnumerator *en = [files objectEnumerator];
NSString *path = nil;
PBXBuildFile *buildFile = [[PBXBuildFile alloc] init];
PBXFileReference *fileRef = nil;
NSString *fpc = [filePath firstPathComponent];
NSString *path = filePath;

while ((path = [en nextObject]) != nil)
AUTORELEASE(buildFile);

if ([[fpc pathExtension] isEqualToString: @"xcassets"])
{
PBXBuildFile *buildFile = [[PBXBuildFile alloc] init];
PBXFileReference *fileRef = [[PBXFileReference alloc] initWithPath: path];
path = fpc;
}

AUTORELEASE(buildFile);
AUTORELEASE(fileRef);
if ([fp containsObject: path] == NO)
{
fileRef = [[PBXFileReference alloc] initWithPath: path];

// NSLog(@"fileRef = %@", fileRef);
AUTORELEASE(fileRef);
[buildFile setFileRef: fileRef];
[result addObject: buildFile];
[fp addObject: path];
}
}
}

// NSLog(@"result = %@", result);

return result;
}

- (instancetype) init
- (void) setPath: (NSString *)path
{
self = [super init];
if (self != nil)
{
[self setChildren: [self synchronizedChildren]];
}
return self;
[super setPath: path];
[self setChildren: [self synchronizedChildren]];
}

@end
6 changes: 5 additions & 1 deletion XCode/PBXSourcesBuildPhase.m
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,13 @@ - (BOOL) build

xcprintf("\t* Parallel build using %ld CPUs...\n", _cpus);
}

NSArray *synchronizedFiles = [_target synchronizedSources];
files = [files arrayByAddingObjectsFromArray: synchronizedFiles];
// NSLog(@"files = %@", files);

// if the database is present use it's list of files...
if (db != nil)
if (db != nil && [synchronizedFiles count] == 0)
{
if ([db isEmpty])
{
Expand Down
2 changes: 2 additions & 0 deletions XCode/PBXTarget.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
#import "XCConfigurationList.h"
#import "PBXFileReference.h"
#import "GSXCBuildContext.h"
#import "PBXBuildFile.h"
#import "PBXFileSystemSynchronizedRootGroup.h"

@class PBXProject, GSXCBuildDatabase;

Expand Down
82 changes: 78 additions & 4 deletions XCode/PBXTarget.m
Original file line number Diff line number Diff line change
Expand Up @@ -151,17 +151,91 @@ - (void) setProductType: (NSString *)object; // setter

- (NSArray *) synchronizedSources
{
return nil;
NSMutableArray *result = [NSMutableArray array];
NSEnumerator *gen = [_fileSystemSynchronizedGroups objectEnumerator];
PBXFileSystemSynchronizedRootGroup *group = nil;

while ((group = [gen nextObject]) != nil)
{
NSArray *children = [group children];
NSEnumerator *cen = [children objectEnumerator];
PBXBuildFile *buildFile = nil;

while ((buildFile = [cen nextObject]) != nil)
{
PBXFileReference *fr = [buildFile fileRef];
NSString *name = [fr path];

// NSLog(@"path = %@", name);
if ([[name pathExtension] isEqualToString: @"m"]
|| [[name pathExtension] isEqualToString: @"mm"]
|| [[name pathExtension] isEqualToString: @"M"]
|| [[name pathExtension] isEqualToString: @"c"]
|| [[name pathExtension] isEqualToString: @"cc"]
|| [[name pathExtension] isEqualToString: @"C"]
|| [[name pathExtension] isEqualToString: @"swift"])
{
[result addObject: buildFile];
}
}
}

return result;
}

- (NSArray *) synchronizedHeaders
{
return nil;
NSMutableArray *result = [NSMutableArray array];
NSEnumerator *gen = [_fileSystemSynchronizedGroups objectEnumerator];
PBXFileSystemSynchronizedRootGroup *group = nil;

while ((group = [gen nextObject]) != nil)
{
NSArray *children = [group children];
NSEnumerator *cen = [children objectEnumerator];
PBXBuildFile *buildFile = nil;

while ((buildFile = [cen nextObject]) != nil)
{
PBXFileReference *fr = [buildFile fileRef];
NSString *name = [fr path];

if ([[name pathExtension] isEqualToString: @"h"])
{
[result addObject: buildFile];
}
}
}

return result;
}

- (NSArray *) synchronizeResources
- (NSArray *) synchronizedResources
{
return nil;
NSMutableArray *result = [NSMutableArray array];
NSEnumerator *gen = [_fileSystemSynchronizedGroups objectEnumerator];
PBXFileSystemSynchronizedRootGroup *group = nil;

while ((group = [gen nextObject]) != nil)
{
NSArray *children = [group children];
NSEnumerator *cen = [children objectEnumerator];
PBXBuildFile *buildFile = nil;

while ((buildFile = [cen nextObject]) != nil)
{
PBXFileReference *fr = [buildFile fileRef];
NSString *name = [fr path];

if ([[name pathExtension] isEqualToString: @"xcassets"]
|| [[name pathExtension] isEqualToString: @"xib"])
{
[result addObject: buildFile];
}
}
}

return result;
}

- (BOOL) build
Expand Down

0 comments on commit 1d3181f

Please sign in to comment.