diff --git a/XCode/PBXFrameworksBuildPhase.m b/XCode/PBXFrameworksBuildPhase.m index 9f7ce3d..f00a7a8 100644 --- a/XCode/PBXFrameworksBuildPhase.m +++ b/XCode/PBXFrameworksBuildPhase.m @@ -229,6 +229,22 @@ - (NSString *) linkString linkString = [linkString stringByAppendingString: [NSString stringWithFormat: @"-L%@ ", lpath]]; } + // Other targets' products (e.g. static libraries) live in build//Products. + NSArray *buildSubdirs = [manager contentsOfDirectoryAtPath: @"build" error: NULL]; + en = [[buildSubdirs sortedArrayUsingSelector: @selector(compare:)] objectEnumerator]; + while((lpath = [en nextObject]) != nil) + { + NSString *productsDir = [[@"build" stringByAppendingPathComponent: lpath] + stringByAppendingPathComponent: @"Products"]; + BOOL isDir = NO; + if ([manager fileExistsAtPath: productsDir isDirectory: &isDir] && isDir + && [productsDir isEqualToString: uninstalledProductsDir] == NO) + { + linkString = [linkString stringByAppendingFormat: @"-L%@ ", + [productsDir stringByEscapingSpecialCharacters]]; + } + } + en = [_files objectEnumerator]; while((file = [en nextObject]) != nil) { diff --git a/XCode/PBXNativeTarget.m b/XCode/PBXNativeTarget.m index 10c2ee5..134b24b 100644 --- a/XCode/PBXNativeTarget.m +++ b/XCode/PBXNativeTarget.m @@ -122,6 +122,9 @@ - (void) _productWrapper forKey: @"TARGET_BUILD_DIR"]; [context setObject: aname forKey: @"TARGET_NAME"]; + [context setObject: @"derived_src" + forKey: @"PROJECT_DERIVED_FILE_DIR"]; + setenv("PROJECT_DERIVED_FILE_DIR","derived_src",1); [context setObject: uninstalledProductsDir forKey: @"BUILT_PRODUCTS_DIR"]; diff --git a/XCode/PBXShellScriptBuildPhase.m b/XCode/PBXShellScriptBuildPhase.m index a5d74f9..d90d901 100644 --- a/XCode/PBXShellScriptBuildPhase.m +++ b/XCode/PBXShellScriptBuildPhase.m @@ -152,7 +152,7 @@ - (NSString *) contextString NSString *k = nil; result = [result stringByAppendingString: @"set -eo pipefail\n" - @"shopt -s inherit_errexit\n\n"]; + @"shopt -s inherit_errexit 2>/dev/null || true\n\n"]; while ((k = [en nextObject]) != nil) { diff --git a/XCode/xcsystem.m b/XCode/xcsystem.m index 2877397..02bbf7f 100644 --- a/XCode/xcsystem.m +++ b/XCode/xcsystem.m @@ -91,7 +91,7 @@ NSInteger xcsystem(NSString *cmd) { NSString *scriptFormat = @"#!/bin/bash\n" @"set -eo pipefail\n" - @"shopt -s inherit_errexit\n\n" + @"shopt -s inherit_errexit 2>/dev/null || true\n\n" @"%@\n\n" @"exit $?\n"; NSString *body = @"";