Beispiel #1
0
 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);
 }
Beispiel #7
0
 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");
     }
 }
Beispiel #10
0
        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);
                }
            }
        }