SystemIncludePathsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var optionCollection = sender as C.ICCompilerOptions; if (!optionCollection.IgnoreStandardIncludePaths) { Bam.Core.Log.Full("System include paths not explicitly added to the build"); return; } var compilerTool = target.Toolset.Tool(typeof(C.ICompilerTool)) as C.ICompilerTool; var switchPrefix = compilerTool.IncludePathCompilerSwitches[0]; var includePathsOption = option as Bam.Core.ReferenceTypeOption <Bam.Core.DirectoryCollection>; foreach (string includePath in includePathsOption.Value) { if (includePath.Contains(" ")) { commandLineBuilder.Add(System.String.Format("{0}\"{1}\"", switchPrefix, includePath)); } else { commandLineBuilder.Add(System.String.Format("{0}{1}", switchPrefix, includePath)); } } }
TargetLanguageCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var targetLanguageOption = option as Bam.Core.ValueTypeOption <C.ETargetLanguage>; switch (targetLanguageOption.Value) { case C.ETargetLanguage.Default: // do nothing break; case C.ETargetLanguage.C: commandLineBuilder.Add("-x c"); break; case C.ETargetLanguage.Cxx: commandLineBuilder.Add("-x c++"); break; default: throw new Bam.Core.Exception("Unrecognized target language option"); } }
OptimizationCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var optimizationOption = option as Bam.Core.ValueTypeOption <C.EOptimization>; switch (optimizationOption.Value) { case C.EOptimization.Off: commandLineBuilder.Add("-O0"); break; case C.EOptimization.Size: commandLineBuilder.Add("-Os"); break; case C.EOptimization.Speed: commandLineBuilder.Add("-O1"); break; case C.EOptimization.Full: commandLineBuilder.Add("-O3"); break; case C.EOptimization.Custom: // do nothing break; default: throw new Bam.Core.Exception("Unrecognized optimization option"); } }
VisibilityCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var enumOption = option as Bam.Core.ValueTypeOption <EVisibility>; switch (enumOption.Value) { case EVisibility.Default: commandLineBuilder.Add("-fvisibility=default"); break; case EVisibility.Hidden: commandLineBuilder.Add("-fvisibility=hidden"); break; case EVisibility.Internal: commandLineBuilder.Add("-fvisibility=internal"); break; case EVisibility.Protected: commandLineBuilder.Add("-fvisibility=protected"); break; default: throw new Bam.Core.Exception("Unrecognized visibility option"); } }
ExceptionHandlerCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { }
LanguageStandardCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { }
OutputTypeCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var options = sender as CCompilerOptionCollection; var enumOption = option as Bam.Core.ValueTypeOption <C.ECompilerOutput>; switch (enumOption.Value) { case C.ECompilerOutput.CompileOnly: { commandLineBuilder.Add("-c"); var outputPath = options.GetModuleLocation(C.ObjectFile.OutputFile).GetSinglePath(); // TODO: isn't there an option on the tool for the flag? commandLineBuilder.Add(System.String.Format("-o {0}", outputPath)); } break; case C.ECompilerOutput.Preprocess: { commandLineBuilder.Add("-E"); var outputPath = options.GetModuleLocation(C.ObjectFile.OutputFile).GetSinglePath(); // TODO: isn't there an option on the tool for the flag? commandLineBuilder.Add(System.String.Format("-o {0}", outputPath)); } break; default: throw new Bam.Core.Exception("Unrecognized option for C.ECompilerOutput"); } }
ExceptionHandlerCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { ComposerXECommon.CxxCompilerOptionCollection.ExceptionHandlerCommandLineProcessor(sender, commandLineBuilder, option, target); }
CustomOptimizationCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var customOptimizationOption = option as Bam.Core.ReferenceTypeOption <string>; commandLineBuilder.Add(customOptimizationOption.Value); }
DefinesCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var definesOption = option as Bam.Core.ReferenceTypeOption <C.DefineCollection>; foreach (var define in definesOption.Value) { commandLineBuilder.Add(System.String.Format("-D{0}", define)); } }
StrictDiagnosticsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var boolOption = option as Bam.Core.ValueTypeOption <bool>; if (boolOption.Value) { commandLineBuilder.Add("-Wcheck"); } }
DisableWarningsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var disableWarningsOption = option as Bam.Core.ReferenceTypeOption <Bam.Core.StringArray>; foreach (var warning in disableWarningsOption.Value) { commandLineBuilder.Add(System.String.Format("-Wno-{0}", warning)); } }
WarningsAsErrorsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var warningsAsErrorsOption = option as Bam.Core.ValueTypeOption <bool>; if (warningsAsErrorsOption.Value) { commandLineBuilder.Add("-Werror"); } }
PositionIndependentCodeCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var boolOption = option as Bam.Core.ValueTypeOption <bool>; if (boolOption.Value) { commandLineBuilder.Add("-fPIC"); } }
EnableRemarksCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var boolOption = option as Bam.Core.ValueTypeOption <bool>; if (boolOption.Value) { commandLineBuilder.Add("-Wremarks"); } }
DebugSymbolsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var debugSymbolsOption = option as Bam.Core.ValueTypeOption <bool>; if (debugSymbolsOption.Value) { commandLineBuilder.Add("-g"); } }
AdditionalOptionsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var stringOption = option as Bam.Core.ReferenceTypeOption <string>; var arguments = stringOption.Value.Split(' '); foreach (var argument in arguments) { commandLineBuilder.Add(argument); } }
OmitFramePointerCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var boolOption = option as Bam.Core.ValueTypeOption <bool>; if (boolOption.Value) { commandLineBuilder.Add("-fomit-frame-pointer"); } else { commandLineBuilder.Add("-fno-omit-frame-pointer"); } }
SixtyFourBitCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var sixtyFourBitOption = option as Bam.Core.ValueTypeOption <bool>; if (sixtyFourBitOption.Value) { commandLineBuilder.Add("-m64"); } else { commandLineBuilder.Add("-m32"); } }
InlineFunctionsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var boolOption = option as Bam.Core.ValueTypeOption <bool>; if (boolOption.Value) { commandLineBuilder.Add("-finline-functions"); } else { commandLineBuilder.Add("-fno-inline-functions"); } }
StrictAliasingCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var boolOption = option as Bam.Core.ValueTypeOption <bool>; if (boolOption.Value) { commandLineBuilder.Add("-fstrict-aliasing"); } else { commandLineBuilder.Add("-fno-strict-aliasing"); } }
IgnoreStandardIncludePathsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var ignoreStandardIncludePathsOption = option as Bam.Core.ValueTypeOption <bool>; if (ignoreStandardIncludePathsOption.Value) { commandLineBuilder.Add("-nostdinc"); var options = sender as C.ICCompilerOptions; if (options.TargetLanguage == C.ETargetLanguage.Cxx) { commandLineBuilder.Add("-nostdinc++"); } } }
ExceptionHandlerCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var exceptionHandlerOption = option as Bam.Core.ValueTypeOption <C.Cxx.EExceptionHandler>; switch (exceptionHandlerOption.Value) { case C.Cxx.EExceptionHandler.Disabled: commandLineBuilder.Add("-fno-exceptions"); break; case C.Cxx.EExceptionHandler.Asynchronous: case C.Cxx.EExceptionHandler.Synchronous: commandLineBuilder.Add("-fexceptions"); break; default: throw new Bam.Core.Exception("Unrecognized exception handler option"); } }
IncludePathsCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var compilerTool = target.Toolset.Tool(typeof(C.ICompilerTool)) as C.ICompilerTool; var switchPrefix = compilerTool.IncludePathCompilerSwitches[1]; var includePathsOption = option as Bam.Core.ReferenceTypeOption <Bam.Core.DirectoryCollection>; // TODO: convert to var foreach (string includePath in includePathsOption.Value) { if (includePath.Contains(" ")) { commandLineBuilder.Add(System.String.Format("{0}\"{1}\"", switchPrefix, includePath)); } else { commandLineBuilder.Add(System.String.Format("{0}{1}", switchPrefix, includePath)); } } }
CharacterSetCommandLineProcessor( object sender, Bam.Core.StringArray commandLineBuilder, Bam.Core.Option option, Bam.Core.Target target) { var enumOption = option as Bam.Core.ValueTypeOption <C.ECharacterSet>; var cOptions = sender as C.ICCompilerOptions; switch (enumOption.Value) { case C.ECharacterSet.NotSet: break; case C.ECharacterSet.Unicode: cOptions.Defines.Add("_UNICODE"); cOptions.Defines.Add("UNICODE"); break; case C.ECharacterSet.MultiByte: cOptions.Defines.Add("_MBCS"); break; } }