/// <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));
        }
Example #2
0
        /// <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));
        }