Intersect( this ClangCommon.ICommonCompilerSettings shared, ClangCommon.ICommonCompilerSettings other) { if (shared.AllWarnings != other.AllWarnings) { shared.AllWarnings = null; } if (shared.ExtraWarnings != other.ExtraWarnings) { shared.ExtraWarnings = null; } if (shared.Pedantic != other.Pedantic) { shared.Pedantic = null; } if (shared.Visibility != other.Visibility) { shared.Visibility = null; } if (shared.StrictAliasing != other.StrictAliasing) { shared.StrictAliasing = null; } }
Convert( this ClangCommon.ICommonCompilerSettings settings, Bam.Core.StringArray commandLine) { if (settings.AllWarnings.HasValue) { if (settings.AllWarnings.Value) { commandLine.Add("-Wall"); } } if (settings.ExtraWarnings.HasValue) { if (settings.ExtraWarnings.Value) { commandLine.Add("-Wextra"); } } if (settings.Pedantic.HasValue) { if (settings.Pedantic.Value) { commandLine.Add("-pedantic"); } } if (settings.Visibility.HasValue) { switch (settings.Visibility.Value) { case EVisibility.Default: commandLine.Add("-fvisibility=default"); break; case EVisibility.Hidden: commandLine.Add("-fvisibility=hidden"); break; case EVisibility.Internal: commandLine.Add("-fvisibility=internal"); break; case EVisibility.Protected: commandLine.Add("-fvisibility=protected"); break; default: throw new Bam.Core.Exception("Unrecognized visibility, {0}", settings.Visibility.Value.ToString()); } } if (settings.StrictAliasing.HasValue) { if (settings.StrictAliasing.Value) { commandLine.Add("-fstrict-aliasing"); } } }
Clone( this ClangCommon.ICommonCompilerSettings settings, ClangCommon.ICommonCompilerSettings other) { settings.AllWarnings = other.AllWarnings; settings.ExtraWarnings = other.ExtraWarnings; settings.Pedantic = other.Pedantic; settings.Visibility = other.Visibility; settings.StrictAliasing = other.StrictAliasing; }
Intersect( this ClangCommon.ICommonCompilerSettings shared, ClangCommon.ICommonCompilerSettings other) { shared.AllWarnings = shared.AllWarnings.Intersect(other.AllWarnings); shared.ExtraWarnings = shared.ExtraWarnings.Intersect(other.ExtraWarnings); shared.Pedantic = shared.Pedantic.Intersect(other.Pedantic); shared.Visibility = shared.Visibility.Intersect(other.Visibility); shared.StrictAliasing = shared.StrictAliasing.Intersect(other.StrictAliasing); }
Defaults( this ClangCommon.ICommonCompilerSettings settings, Bam.Core.Module module) { settings.AllWarnings = false; settings.ExtraWarnings = false; settings.Pedantic = false; settings.Visibility = EVisibility.Hidden; settings.StrictAliasing = (0 != (module.BuildEnvironment.Configuration & Bam.Core.EConfiguration.NotDebug)); }
Delta( this ClangCommon.ICommonCompilerSettings delta, ClangCommon.ICommonCompilerSettings lhs, ClangCommon.ICommonCompilerSettings rhs) { delta.AllWarnings = lhs.AllWarnings.Complement(rhs.AllWarnings); delta.ExtraWarnings = lhs.ExtraWarnings.Complement(rhs.ExtraWarnings); delta.Pedantic = lhs.Pedantic.Complement(rhs.Pedantic); delta.Visibility = lhs.Visibility.Complement(rhs.Visibility); delta.StrictAliasing = lhs.StrictAliasing.Complement(rhs.StrictAliasing); }
Delta( this ClangCommon.ICommonCompilerSettings delta, ClangCommon.ICommonCompilerSettings lhs, ClangCommon.ICommonCompilerSettings rhs) { delta.AllWarnings = (lhs.AllWarnings != rhs.AllWarnings) ? lhs.AllWarnings : null; delta.ExtraWarnings = (lhs.ExtraWarnings != rhs.ExtraWarnings) ? lhs.ExtraWarnings : null; delta.Pedantic = (lhs.Pedantic != rhs.Pedantic) ? lhs.Pedantic : null; delta.Visibility = (lhs.Visibility != rhs.Visibility) ? lhs.Visibility : null; delta.StrictAliasing = (lhs.StrictAliasing != rhs.StrictAliasing) ? lhs.StrictAliasing : null; }
Defaults( this ClangCommon.ICommonCompilerSettings settings, Bam.Core.Module module) { settings.AllWarnings = false; settings.ExtraWarnings = false; settings.Pedantic = false; settings.Visibility = EVisibility.Hidden; settings.StrictAliasing = (0 != (module.BuildEnvironment.Configuration & Bam.Core.EConfiguration.NotDebug)); settings.Optimization = null; // assume that the setting in C.ICommonCompilerSettings is sufficient }
Convert( this ClangCommon.ICommonCompilerSettings settings, Bam.Core.Module module, XcodeBuilder.Configuration configuration) { if (settings.AllWarnings.HasValue) { var warnings = new XcodeBuilder.MultiConfigurationValue(); if (settings.AllWarnings.Value) { warnings.Add("-Wall"); } else { warnings.Add("-Wno-all"); } configuration["WARNING_CFLAGS"] = warnings; } if (settings.ExtraWarnings.HasValue) { var warnings = new XcodeBuilder.MultiConfigurationValue(); if (settings.ExtraWarnings.Value) { warnings.Add("-Wextra"); } else { warnings.Add("-Wno-extra"); } configuration["WARNING_CFLAGS"] = warnings; } if (settings.Pedantic.HasValue) { configuration["GCC_WARN_PEDANTIC"] = new XcodeBuilder.UniqueConfigurationValue(settings.Pedantic.Value ? "YES" : "NO"); } if (settings.Visibility.HasValue) { configuration["GCC_SYMBOLS_PRIVATE_EXTERN"] = new XcodeBuilder.UniqueConfigurationValue((settings.Visibility.Value == EVisibility.Default) ? "NO" : "YES"); } if (settings.StrictAliasing.HasValue) { configuration["GCC_STRICT_ALIASING"] = new XcodeBuilder.UniqueConfigurationValue(settings.StrictAliasing.Value ? "YES" : "NO"); } }
Convert( this ClangCommon.ICommonCompilerSettings settings, Bam.Core.StringArray commandLine) { if (settings.AllWarnings.HasValue) { if (settings.AllWarnings.Value) { commandLine.Add("-Wall"); } else { commandLine.Add("-Wno-all"); } } if (settings.ExtraWarnings.HasValue) { if (settings.ExtraWarnings.Value) { commandLine.Add("-Wextra"); } else { commandLine.Add("-Wno-extra"); } } if (settings.Pedantic.HasValue) { if (settings.Pedantic.Value) { commandLine.Add("-Wpedantic"); } else { commandLine.Add("-Wno-pedantic"); } } if (settings.Visibility.HasValue) { switch (settings.Visibility.Value) { case EVisibility.Default: commandLine.Add("-fvisibility=default"); break; case EVisibility.Hidden: commandLine.Add("-fvisibility=hidden"); break; case EVisibility.Internal: commandLine.Add("-fvisibility=internal"); break; case EVisibility.Protected: commandLine.Add("-fvisibility=protected"); break; default: throw new Bam.Core.Exception("Unrecognized visibility, {0}", settings.Visibility.Value.ToString()); } } if (settings.StrictAliasing.HasValue) { if (settings.StrictAliasing.Value) { commandLine.Add("-fstrict-aliasing"); } else { commandLine.Add("-fno-strict-aliasing"); } } 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.O1: commandLine.Add("-O1"); break; case EOptimization.O3: commandLine.Add("-O3"); break; case EOptimization.Ofast: commandLine.Add("-Ofast"); break; default: throw new Bam.Core.Exception("Unrecognized Clang optimization, {0}", settings.Optimization.Value.ToString()); } } }
public static void Convert( this ClangCommon.ICommonCompilerSettings settings, Bam.Core.Module module, XcodeBuilder.Configuration configuration) { if (settings.AllWarnings.HasValue) { var warnings = new XcodeBuilder.MultiConfigurationValue(); if (settings.AllWarnings.Value) { warnings.Add("-Wall"); } else { warnings.Add("-Wno-all"); } configuration["WARNING_CFLAGS"] = warnings; } if (settings.ExtraWarnings.HasValue) { var warnings = new XcodeBuilder.MultiConfigurationValue(); if (settings.ExtraWarnings.Value) { warnings.Add("-Wextra"); } else { warnings.Add("-Wno-extra"); } configuration["WARNING_CFLAGS"] = warnings; } if (settings.Pedantic.HasValue) { configuration["GCC_WARN_PEDANTIC"] = new XcodeBuilder.UniqueConfigurationValue(settings.Pedantic.Value ? "YES" : "NO"); } if (settings.Visibility.HasValue) { configuration["GCC_SYMBOLS_PRIVATE_EXTERN"] = new XcodeBuilder.UniqueConfigurationValue((settings.Visibility.Value == EVisibility.Default) ? "NO" : "YES"); } if (settings.StrictAliasing.HasValue) { configuration["GCC_STRICT_ALIASING"] = new XcodeBuilder.UniqueConfigurationValue(settings.StrictAliasing.Value ? "YES" : "NO"); } 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.O1: configuration["GCC_OPTIMIZATION_LEVEL"] = new XcodeBuilder.UniqueConfigurationValue("1"); break; case EOptimization.O3: configuration["GCC_OPTIMIZATION_LEVEL"] = new XcodeBuilder.UniqueConfigurationValue("3"); break; case EOptimization.Ofast: configuration["GCC_OPTIMIZATION_LEVEL"] = new XcodeBuilder.UniqueConfigurationValue("fast"); break; default: throw new Bam.Core.Exception("Unsupported Clang specific optimization, {0}", settings.Optimization.Value); } } }