Unable to build (MetalLayer?)

So I have my c++ project set to do remote builds (4.5). I have been doing this successfully now since 4.1 so I know how to set everything up. The problem comes to when it is building related to 4.5. I’m getting the following errors on the remote iOS build machine. The 4.5 source is on the machine…

MainFrameActions: Packaging (iOS): UnrealBuildTool: In file included from /UE4/Builds/APPDEV7/D/UE4/UnrealEngine/ciicharm/Intermediate/Build/IOS/ciicharm/Shipping/Core/Module.Core.2_of_5.cpp:39:
MainFrameActions: Packaging (iOS): UnrealBuildTool: D:\UE4\UnrealEngine\Engine\Source\Runtime\Core\Private\IOS\IOSView.cpp(169,4): error: unknown type name ‘CAMetalLayer’; did you mean ‘CATextLayer’?
MainFrameActions: Packaging (iOS): UnrealBuildTool: CAMetalLayer* MetalLayer = (CAMetalLayer*)self.layer;
MainFrameActions: Packaging (iOS): UnrealBuildTool: ^~~~~~~~~~~~
MainFrameActions: Packaging (iOS): UnrealBuildTool: CATextLayer
MainFrameActions: Packaging (iOS): UnrealBuildTool: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CATextLayer.h:12:12: note: ‘CATextLayer’ declared here
MainFrameActions: Packaging (iOS): UnrealBuildTool: @interface CATextLayer : CALayer
MainFrameActions: Packaging (iOS): UnrealBuildTool: ^
MainFrameActions: Packaging (iOS): UnrealBuildTool: In file included from /UE4/Builds/APPDEV7/D/UE4/UnrealEngine/ciicharm/Intermediate/Build/IOS/ciicharm/Shipping/Core/Module.Core.2_of_5.cpp:39:
MainFrameActions: Packaging (iOS): UnrealBuildTool: D:\UE4\UnrealEngine\Engine\Source\Runtime\Core\Private\IOS\IOSView.cpp(169,32): error: use of undeclared identifier ‘CAMetalLayer’; did you mean ‘MetalLayer’?
MainFrameActions: Packaging (iOS): UnrealBuildTool: CAMetalLayer* MetalLayer = (CAMetalLayer*)self.layer;
MainFrameActions: Packaging (iOS): UnrealBuildTool: ^~~~~~~~~~~~
MainFrameActions: Packaging (iOS): UnrealBuildTool: MetalLayer
MainFrameActions: Packaging (iOS): UnrealBuildTool: /UE4/Builds/APPDEV7/D/UE4/UnrealEngine/Engine/Source/Runtime/Core/Private/IOS/IOSView.cpp:169:18: note: ‘MetalLayer’ declared here
MainFrameActions: Packaging (iOS): UnrealBuildTool: CAMetalLayer* MetalLayer = (CAMetalLayer*)self.layer;
MainFrameActions: Packaging (iOS): UnrealBuildTool: ^
MainFrameActions: Packaging (iOS): UnrealBuildTool: D:\UE4\UnrealEngine\Engine\Source\Runtime\Core\Private\IOS\IOSView.cpp(169,45): error: expected expression
MainFrameActions: Packaging (iOS): UnrealBuildTool: CAMetalLayer* MetalLayer = (CAMetalLayer*)self.layer;
MainFrameActions: Packaging (iOS): UnrealBuildTool: ^
MainFrameActions: Packaging (iOS): UnrealBuildTool: D:\UE4\UnrealEngine\Engine\Source\Runtime\Core\Private\IOS\IOSView.cpp(173,15): error: property ‘drawableSize’ not found on object of type ‘CATextLayer *’
MainFrameActions: Packaging (iOS): UnrealBuildTool: MetalLayer.drawableSize = DrawableSize;
MainFrameActions: Packaging (iOS): UnrealBuildTool: ^
MainFrameActions: Packaging (iOS): UnrealBuildTool: 4 errors generated.
MainFrameActions: Packaging (iOS): UnrealBuildTool:

Hmm, there may be a bug with no longer skipping Metal compiling with older SDKs.

You are compiling with IOS 7.1 which doesn’t have Metal (we used to skip Metal for older Xcode’s).

Anyway, upgrade Xcode to 6 or later, and you will be good to go.

Josh