/// <summary> /// Creates a toolchain instance for the given platform. /// </summary> /// <param name="Target">The target being built</param> /// <returns>New toolchain instance.</returns> public override UEToolChain CreateToolChain(ReadOnlyTargetRules Target) { MacToolChainOptions Options = MacToolChainOptions.None; string AddressSanitizer = Environment.GetEnvironmentVariable("ENABLE_ADDRESS_SANITIZER"); string ThreadSanitizer = Environment.GetEnvironmentVariable("ENABLE_THREAD_SANITIZER"); string UndefSanitizerMode = Environment.GetEnvironmentVariable("ENABLE_UNDEFINED_BEHAVIOR_SANITIZER"); if (Target.MacPlatform.bEnableAddressSanitizer || (AddressSanitizer != null && AddressSanitizer == "YES")) { Options |= MacToolChainOptions.EnableAddressSanitizer; } if (Target.MacPlatform.bEnableThreadSanitizer || (ThreadSanitizer != null && ThreadSanitizer == "YES")) { Options |= MacToolChainOptions.EnableThreadSanitizer; } if (Target.MacPlatform.bEnableUndefinedBehaviorSanitizer || (UndefSanitizerMode != null && UndefSanitizerMode == "YES")) { Options |= MacToolChainOptions.EnableUndefinedBehaviorSanitizer; } if (Target.bShouldCompileAsDLL) { Options |= MacToolChainOptions.OutputDylib; } return(new MacToolChain(Target.ProjectFile, Options)); }
/// <summary> /// Creates a toolchain instance for the given platform. /// </summary> /// <param name="CppPlatform">The platform to create a toolchain for</param> /// <param name="Target">The target being built</param> /// <returns>New toolchain instance.</returns> public override UEToolChain CreateToolChain(CppPlatform CppPlatform, ReadOnlyTargetRules Target) { MacToolChainOptions Options = MacToolChainOptions.None; if (Target.MacPlatform.bEnableAddressSanitizer) { Options |= MacToolChainOptions.EnableAddressSanitizer; } if (Target.MacPlatform.bEnableThreadSanitizer) { Options |= MacToolChainOptions.EnableThreadSanitizer; } if (Target.MacPlatform.bEnableUndefinedBehaviorSanitizer) { Options |= MacToolChainOptions.EnableUndefinedBehaviorSanitizer; } return(new MacToolChain(Target.ProjectFile, Options)); }