Esempio n. 1
0
        Convert(
            this VisualCCommon.ICommonCompilerSettings settings,
            Bam.Core.Module module,
            VSSolutionBuilder.VSSettingsGroup vsSettingsGroup,
            string condition)
        {
            if (settings.NoLogo.GetValueOrDefault(false))
            {
                vsSettingsGroup.AddSetting("SuppressStartupBanner", settings.NoLogo.Value, condition);
            }

            if (settings.RuntimeLibrary.HasValue)
            {
                vsSettingsGroup.AddSetting("RuntimeLibrary", settings.RuntimeLibrary.Value.ToString(), condition);
            }

            if (settings.WarningLevel.HasValue)
            {
                if (EWarningLevel.Level0 == settings.WarningLevel.Value)
                {
                    vsSettingsGroup.AddSetting("WarningLevel", "TurnOffAllWarnings", condition);
                }
                else
                {
                    vsSettingsGroup.AddSetting("WarningLevel", System.String.Format("Level{0}", settings.WarningLevel.Value.ToString("D")), condition);
                }
            }

            if (settings.EnableLanguageExtensions.HasValue)
            {
                vsSettingsGroup.AddSetting("DisableLanguageExtensions", !settings.EnableLanguageExtensions.Value, condition);
            }
        }
 Clone(
     this VisualCCommon.ICommonCompilerSettings settings,
     VisualCCommon.ICommonCompilerSettings other)
 {
     settings.NoLogo         = other.NoLogo;
     settings.RuntimeLibrary = other.RuntimeLibrary;
     settings.WarningLevel   = other.WarningLevel;
 }
 Defaults(
     this VisualCCommon.ICommonCompilerSettings settings,
     Bam.Core.Module module)
 {
     settings.NoLogo         = true;
     settings.RuntimeLibrary = ERuntimeLibrary.MultiThreadedDLL;
     settings.WarningLevel   = EWarningLevel.Level1;
 }
Esempio n. 4
0
 Clone(
     this VisualCCommon.ICommonCompilerSettings settings,
     VisualCCommon.ICommonCompilerSettings other)
 {
     settings.NoLogo                   = other.NoLogo;
     settings.RuntimeLibrary           = other.RuntimeLibrary;
     settings.WarningLevel             = other.WarningLevel;
     settings.EnableLanguageExtensions = other.EnableLanguageExtensions;
 }
Esempio n. 5
0
 Intersect(
     this VisualCCommon.ICommonCompilerSettings shared,
     VisualCCommon.ICommonCompilerSettings other)
 {
     shared.NoLogo                   = shared.NoLogo.Intersect(other.NoLogo);
     shared.RuntimeLibrary           = shared.RuntimeLibrary.Intersect(other.RuntimeLibrary);
     shared.WarningLevel             = shared.WarningLevel.Intersect(other.WarningLevel);
     shared.EnableLanguageExtensions = shared.EnableLanguageExtensions.Intersect(other.EnableLanguageExtensions);
 }
Esempio n. 6
0
 Defaults(
     this VisualCCommon.ICommonCompilerSettings settings,
     Bam.Core.Module module)
 {
     settings.NoLogo                   = true;
     settings.RuntimeLibrary           = ERuntimeLibrary.MultiThreadedDLL;
     settings.WarningLevel             = EWarningLevel.Level1;
     settings.EnableLanguageExtensions = true; // only because Windows.h does not compile without this, even with WIN32_LEAN_AND_MEAN
 }
 Delta(
     this VisualCCommon.ICommonCompilerSettings delta,
     VisualCCommon.ICommonCompilerSettings lhs,
     VisualCCommon.ICommonCompilerSettings rhs)
 {
     delta.NoLogo         = (lhs.NoLogo != rhs.NoLogo) ? lhs.NoLogo : null;
     delta.RuntimeLibrary = (lhs.RuntimeLibrary != rhs.RuntimeLibrary) ? lhs.RuntimeLibrary : null;
     delta.WarningLevel   = (lhs.WarningLevel != rhs.WarningLevel) ? lhs.WarningLevel : null;
 }
Esempio n. 8
0
 Delta(
     this VisualCCommon.ICommonCompilerSettings delta,
     VisualCCommon.ICommonCompilerSettings lhs,
     VisualCCommon.ICommonCompilerSettings rhs)
 {
     delta.NoLogo                   = lhs.NoLogo.Complement(rhs.NoLogo);
     delta.RuntimeLibrary           = lhs.RuntimeLibrary.Complement(rhs.RuntimeLibrary);
     delta.WarningLevel             = lhs.WarningLevel.Complement(rhs.WarningLevel);
     delta.EnableLanguageExtensions = lhs.EnableLanguageExtensions.Complement(rhs.EnableLanguageExtensions);
 }
Esempio n. 9
0
 Clone(
     this VisualCCommon.ICommonCompilerSettings settings,
     VisualCCommon.ICommonCompilerSettings other)
 {
     settings.NoLogo                         = other.NoLogo;
     settings.RuntimeLibrary                 = other.RuntimeLibrary;
     settings.WarningLevel                   = other.WarningLevel;
     settings.EnableLanguageExtensions       = other.EnableLanguageExtensions;
     settings.Optimization                   = other.Optimization;
     settings.IncreaseObjectFileSectionCount = other.IncreaseObjectFileSectionCount;
 }
Esempio n. 10
0
 Intersect(
     this VisualCCommon.ICommonCompilerSettings shared,
     VisualCCommon.ICommonCompilerSettings other)
 {
     shared.NoLogo                         = shared.NoLogo.Intersect(other.NoLogo);
     shared.RuntimeLibrary                 = shared.RuntimeLibrary.Intersect(other.RuntimeLibrary);
     shared.WarningLevel                   = shared.WarningLevel.Intersect(other.WarningLevel);
     shared.EnableLanguageExtensions       = shared.EnableLanguageExtensions.Intersect(other.EnableLanguageExtensions);
     shared.Optimization                   = shared.Optimization.Intersect(other.Optimization);
     shared.IncreaseObjectFileSectionCount = shared.IncreaseObjectFileSectionCount.Intersect(other.IncreaseObjectFileSectionCount);
 }
Esempio n. 11
0
 Defaults(
     this VisualCCommon.ICommonCompilerSettings settings,
     Bam.Core.Module module)
 {
     settings.NoLogo                         = true;
     settings.RuntimeLibrary                 = ERuntimeLibrary.MultiThreadedDLL;
     settings.WarningLevel                   = EWarningLevel.Level1;
     settings.EnableLanguageExtensions       = true;  // only because Windows.h does not compile without this, even with WIN32_LEAN_AND_MEAN
     settings.Optimization                   = null;  // assume that the setting in C.ICommonCompilerSettings is sufficient
     settings.IncreaseObjectFileSectionCount = false; // don't use large section counts by default
 }
Esempio n. 12
0
 Delta(
     this VisualCCommon.ICommonCompilerSettings delta,
     VisualCCommon.ICommonCompilerSettings lhs,
     VisualCCommon.ICommonCompilerSettings rhs)
 {
     delta.NoLogo                         = lhs.NoLogo.Complement(rhs.NoLogo);
     delta.RuntimeLibrary                 = lhs.RuntimeLibrary.Complement(rhs.RuntimeLibrary);
     delta.WarningLevel                   = lhs.WarningLevel.Complement(rhs.WarningLevel);
     delta.EnableLanguageExtensions       = lhs.EnableLanguageExtensions.Complement(rhs.EnableLanguageExtensions);
     delta.Optimization                   = lhs.Optimization.Complement(rhs.Optimization);
     delta.IncreaseObjectFileSectionCount = lhs.IncreaseObjectFileSectionCount.Complement(rhs.IncreaseObjectFileSectionCount);
 }
        Convert(
            this VisualCCommon.ICommonCompilerSettings settings,
            Bam.Core.StringArray commandLine)
        {
            if (settings.NoLogo.HasValue)
            {
                if (settings.NoLogo.Value)
                {
                    commandLine.Add("-nologo");
                }
            }

            if (settings.RuntimeLibrary.HasValue)
            {
                switch (settings.RuntimeLibrary.Value)
                {
                case ERuntimeLibrary.MultiThreaded:
                    commandLine.Add("-MT");
                    break;

                case ERuntimeLibrary.MultiThreadedDebug:
                    commandLine.Add("-MTd");
                    break;

                case ERuntimeLibrary.MultiThreadedDebugDLL:
                    commandLine.Add("-MDd");
                    break;

                case ERuntimeLibrary.MultiThreadedDLL:
                    commandLine.Add("-MD");
                    break;

                default:
                    throw new Bam.Core.Exception("Unknown runtime library, {0}", settings.RuntimeLibrary.Value.ToString());
                }
            }

            if (settings.WarningLevel.HasValue)
            {
                commandLine.Add(System.String.Format("-W{0}", settings.WarningLevel.Value.ToString("D")));
            }

            if (settings.EnableLanguageExtensions.HasValue)
            {
                if (!settings.EnableLanguageExtensions.Value)
                {
                    commandLine.Add("-Za");
                }
            }
        }
 Intersect(
     this VisualCCommon.ICommonCompilerSettings shared,
     VisualCCommon.ICommonCompilerSettings other)
 {
     if (shared.NoLogo != other.NoLogo)
     {
         shared.NoLogo = null;
     }
     if (shared.RuntimeLibrary != other.RuntimeLibrary)
     {
         shared.RuntimeLibrary = null;
     }
     if (shared.WarningLevel != other.WarningLevel)
     {
         shared.WarningLevel = null;
     }
 }
Esempio n. 15
0
        Convert(
            this VisualCCommon.ICommonCompilerSettings settings,
            Bam.Core.Module module,
            VSSolutionBuilder.VSSettingsGroup vsSettingsGroup,
            string condition)
        {
            if (settings.NoLogo.GetValueOrDefault(false))
            {
                vsSettingsGroup.AddSetting("SuppressStartupBanner", settings.NoLogo.Value, condition);
            }

            if (settings.RuntimeLibrary.HasValue)
            {
                vsSettingsGroup.AddSetting("RuntimeLibrary", settings.RuntimeLibrary.Value.ToString(), condition);
            }

            if (settings.WarningLevel.HasValue)
            {
                if (EWarningLevel.Level0 == settings.WarningLevel.Value)
                {
                    vsSettingsGroup.AddSetting("WarningLevel", "TurnOffAllWarnings", condition);
                }
                else
                {
                    vsSettingsGroup.AddSetting("WarningLevel", System.String.Format("Level{0}", settings.WarningLevel.Value.ToString("D")), condition);
                }
            }

            if (settings.EnableLanguageExtensions.HasValue)
            {
                vsSettingsGroup.AddSetting("DisableLanguageExtensions", !settings.EnableLanguageExtensions.Value, condition);
            }

            if (settings.Optimization.HasValue)
            {
                var common_optimization = (settings as C.ICommonCompilerSettings).Optimization;
                if (common_optimization.HasValue && common_optimization.Value != C.EOptimization.Custom)
                {
                    throw new Bam.Core.Exception("Compiler specific optimizations can only be set when the common optimization is C.EOptimization.Custom");
                }

                System.Func <string> optimization = () =>
                {
                    switch (settings.Optimization.Value)
                    {
                    case EOptimization.Full:
                        return("Full");

                    default:
                        throw new Bam.Core.Exception("Unknown compiler optimization type, {0}", settings.Optimization.Value.ToString());
                    }
                };
                vsSettingsGroup.AddSetting("Optimization", optimization(), condition);
            }

            if (settings.IncreaseObjectFileSectionCount.HasValue)
            {
                if (settings.IncreaseObjectFileSectionCount.Value)
                {
                    vsSettingsGroup.AddSetting("AdditionalOptions", "-bigobj", condition);
                }
            }
        }
        Convert(
            this VisualCCommon.ICommonCompilerSettings settings,
            Bam.Core.StringArray commandLine)
        {
            if (settings.NoLogo.HasValue)
            {
                if (settings.NoLogo.Value)
                {
                    commandLine.Add("-nologo");
                }
            }

            if (settings.RuntimeLibrary.HasValue)
            {
                switch (settings.RuntimeLibrary.Value)
                {
                case ERuntimeLibrary.MultiThreaded:
                    commandLine.Add("-MT");
                    break;

                case ERuntimeLibrary.MultiThreadedDebug:
                    commandLine.Add("-MTd");
                    break;

                case ERuntimeLibrary.MultiThreadedDebugDLL:
                    commandLine.Add("-MDd");
                    break;

                case ERuntimeLibrary.MultiThreadedDLL:
                    commandLine.Add("-MD");
                    break;

                default:
                    throw new Bam.Core.Exception("Unknown runtime library, {0}", settings.RuntimeLibrary.Value.ToString());
                }
            }

            if (settings.WarningLevel.HasValue)
            {
                commandLine.Add(System.String.Format("-W{0}", settings.WarningLevel.Value.ToString("D")));
            }

            if (settings.EnableLanguageExtensions.HasValue)
            {
                if (!settings.EnableLanguageExtensions.Value)
                {
                    commandLine.Add("-Za");
                }
            }

            if (settings.Optimization.HasValue)
            {
                var common_optimization = (settings as C.ICommonCompilerSettings).Optimization;
                if (common_optimization.HasValue && common_optimization.Value != C.EOptimization.Custom)
                {
                    throw new Bam.Core.Exception("Compiler specific optimizations can only be set when the common optimization is C.EOptimization.Custom");
                }

                switch (settings.Optimization.Value)
                {
                case EOptimization.Full:
                    commandLine.Add("-Ox");
                    break;

                default:
                    throw new Bam.Core.Exception("Unknown compiler optimization, {0}", settings.Optimization.Value.ToString());
                }
            }

            if (settings.IncreaseObjectFileSectionCount.HasValue)
            {
                if (settings.IncreaseObjectFileSectionCount.Value)
                {
                    commandLine.Add("-bigobj");
                }
            }
        }