public override IEnumerable <string> GetImplicitlyDefinedSymbols(IGenerationContext context)
            {
                var defines = new List <string>(base.GetImplicitlyDefinedSymbols(context));

                switch (context.Configuration.Output)
                {
                case Project.Configuration.OutputType.Exe:
                    context.SelectOption(
                        Options.Option(Options.Vc.Linker.SubSystem.Console, () => { defines.Add("_CONSOLE"); }),
                        Options.Option(Options.Vc.Linker.SubSystem.Windows, () => { defines.Add("_WINDOWS"); }));
                    break;

                case Project.Configuration.OutputType.Lib:
                    defines.Add("_LIB");
                    break;

                case Project.Configuration.OutputType.Dll:
                    context.SelectOption(
                        Options.Option(Options.Vc.Linker.DLLDefine.Regular, () => { defines.Add("_USRDLL"); }),
                        Options.Option(Options.Vc.Linker.DLLDefine.Extension, () => { defines.Add("_AFXDLL"); defines.Add("_AFXEXT"); }));
                    break;

                case Project.Configuration.OutputType.None:
                default:
                    break;
                }

                return(defines);
            }
Beispiel #2
0
            public override void SetupSdkOptions(IGenerationContext context)
            {
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.General.CopySources.Enable, () => { context.Options["CopySources"] = "true"; }),
                    Sharpmake.Options.Option(Options.General.CopySources.Disable, () => { context.Options["CopySources"] = "false"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Gpp, () => { context.Options["RemoteCppCompileToolExe"] = "g++"; }),
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Clang, () => { context.Options["RemoteCppCompileToolExe"] = "clang++"; }),
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Clang38, () => { context.Options["RemoteCppCompileToolExe"] = "clang++-3.8"; })
                );
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Gpp, () => { context.Options["RemoteCCompileToolExe"] = "g++"; }),
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Clang, () => { context.Options["RemoteCCompileToolExe"] = "clang"; }),
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Clang38, () => { context.Options["RemoteCCompileToolExe"] = "clang-3.8"; })
                );
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Gpp, () => { context.Options["RemoteLdToolExe"] = "g++"; }),
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Clang, () => { context.Options["RemoteLdToolExe"] = "clang"; }),
                    Sharpmake.Options.Option(Options.General.PlatformRemoteTool.Clang38, () => { context.Options["RemoteLdToolExe"] = "clang-3.8"; })
                );
            }
Beispiel #3
0
            public override void SelectLinkerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                context.SelectOption
                (
                    Options.Option(Options.Android.Linker.DebuggerSymbolInformation.IncludeAll, () => { options["DebuggerSymbolInformation"] = "true"; }),
                    Options.Option(Options.Android.Linker.DebuggerSymbolInformation.OmitUnneededSymbolInformation, () => { options["DebuggerSymbolInformation"] = "OmitUnneededSymbolInformation"; cmdLineOptions["DebuggerSymbolInformation"] = "-Wl,--strip-unneeded"; }),
                    Options.Option(Options.Android.Linker.DebuggerSymbolInformation.OmitDebuggerSymbolInformation, () => { options["DebuggerSymbolInformation"] = "OmitDebuggerSymbolInformation"; cmdLineOptions["DebuggerSymbolInformation"] = "-Wl,--strip-debug"; }),
                    Options.Option(Options.Android.Linker.DebuggerSymbolInformation.OmitAllSymbolInformation, () => { options["DebuggerSymbolInformation"] = "OmitAllSymbolInformation"; cmdLineOptions["DebuggerSymbolInformation"] = "-Wl,--strip-all"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Linker.Incremental.Default, () => { options["IncrementalLink"] = RemoveLineTag; cmdLineOptions["LinkIncremental"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Linker.Incremental.Disable, () => { options["IncrementalLink"] = "false"; cmdLineOptions["LinkIncremental"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Linker.Incremental.Enable, () => { options["IncrementalLink"] = "true"; cmdLineOptions["LinkIncremental"] = "-Wl,--incremental"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Linker.LibGroup.Enable, () => { options["LibsStartGroup"] = " -Wl,--start-group "; options["LibsEndGroup"] = " -Wl,--end-group "; }),
                    Options.Option(Options.Android.Linker.LibGroup.Disable, () => { options["LibsStartGroup"] = string.Empty; options["LibsEndGroup"] = string.Empty; })
                );
            }
Beispiel #4
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                // We use the Makefile options for Linux

                context.SelectOption
                (
                    Options.Option(Options.Makefile.Compiler.Warnings.Disable, () => { options["WarningLevel"] = "TurnOffAllWarnings"; cmdLineOptions["WarningLevel"] = "-w"; }),
                    Options.Option(Options.Makefile.Compiler.Warnings.NormalWarnings, () => { options["WarningLevel"] = "EnableAllWarnings"; cmdLineOptions["WarningLevel"] = "-Wall"; }),
                    Options.Option(Options.Makefile.Compiler.Warnings.MoreWarnings, () => { options["WarningLevel"] = "EnableAllWarnings"; cmdLineOptions["WarningLevel"] = "-Wall"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Makefile.Compiler.GenerateDebugInformation.Disable, () => { options["DebugInformationFormat"] = "None"; cmdLineOptions["DebugInformationFormat"] = "-g0"; }),
                    Options.Option(Options.Makefile.Compiler.GenerateDebugInformation.Enable, () => { options["DebugInformationFormat"] = "FullDebug"; cmdLineOptions["DebugInformationFormat"] = "-g2 -gdwarf-2"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Makefile.Compiler.Exceptions.Disable, () => { options["ExceptionHandling"] = "Disabled"; cmdLineOptions["ExceptionHandling"] = "-fno-exceptions"; }),
                    Options.Option(Options.Makefile.Compiler.Exceptions.Enable, () => { options["ExceptionHandling"] = "Enabled"; cmdLineOptions["ExceptionHandling"] = "-fexceptions"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Makefile.Compiler.TreatWarningsAsErrors.Disable, () => { options["TreatWarningAsError"] = "false"; cmdLineOptions["TreatWarningAsError"] = RemoveLineTag; }),
                    Options.Option(Options.Makefile.Compiler.TreatWarningsAsErrors.Enable, () => { options["TreatWarningAsError"] = "true"; cmdLineOptions["TreatWarningAsError"] = "-Werror"; })
                );
            }
Beispiel #5
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                var options = context.Options;
                var conf    = context.Configuration;

                //X360Options.Compiler.CallAttributedProfiling
                //    disable                               CallAttributedProfiling="0"
                //    fastcap                               CallAttributedProfiling="1"                           /fastcap
                //    callcap                               CallAttributedProfiling="2"                           /callcap
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.CallAttributedProfiling.Disable, () => { options["X360CallAttributedProfiling"] = "Disabled"; }),
                    Sharpmake.Options.Option(Options.Compiler.CallAttributedProfiling.Fastcap, () => { options["X360CallAttributedProfiling"] = "Fastcap"; }),
                    Sharpmake.Options.Option(Options.Compiler.CallAttributedProfiling.Callcap, () => { options["X360CallAttributedProfiling"] = "Callcap"; })
                );

                //X360Options.Compiler.PreschedulingOptimization
                //    disable                               Prescheduling="false"
                //    enable                                Prescheduling="true"                /Ou
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.PreschedulingOptimization.Disable, () => { options["X360Prescheduling"] = "false"; }),
                    Sharpmake.Options.Option(Options.Compiler.PreschedulingOptimization.Enable, () => { options["X360Prescheduling"] = "true"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.ImageConversion.PAL50Incompatible.Disable, () => { options["X360Pal50Incompatible"] = "false"; }),
                    Sharpmake.Options.Option(Options.ImageConversion.PAL50Incompatible.Enable, () => { options["X360Pal50Incompatible"] = "true"; })
                );

                Options.Linker.ProjectDefaults projectDefault = Sharpmake.Options.GetObject <Options.Linker.ProjectDefaults>(conf);
                if (projectDefault == null)
                {
                    options["X360ProjectDefaults"] = FileGeneratorUtilities.RemoveLineTag;
                }
                else
                {
                    options["X360ProjectDefaults"] = projectDefault.Value;
                }

                Options.ImageConversion.AdditionalSections additionalSections = Sharpmake.Options.GetObject <Options.ImageConversion.AdditionalSections>(conf);
                if (additionalSections == null)
                {
                    options["X360AdditionalSections"] = FileGeneratorUtilities.RemoveLineTag;
                }
                else
                {
                    options["X360AdditionalSections"] = additionalSections.Value;
                }

                // X360Options.Linker.SetChecksum
                //    enable                                "true"
                //    disable                               "false"
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.SetChecksum.Enable, () => { options["X360SetChecksum"] = "true"; }),
                    Sharpmake.Options.Option(Options.Linker.SetChecksum.Disable, () => { options["X360SetChecksum"] = "false"; })
                );
            }
Beispiel #6
0
            public override void SelectLinkerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.EchoCommandLines.Enable, () => { options["EchoCommandLinesLinker"] = "true"; }),
                    Sharpmake.Options.Option(Options.Linker.EchoCommandLines.Disable, () => { options["EchoCommandLinesLinker"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                // NvShieldOptions.Linker.AndroidSystemLibraries
                Strings androidSystemLibraries = Sharpmake.Options.GetStrings <Options.Linker.AndroidSystemLibraries>(conf);

                if (androidSystemLibraries.Count > 0)
                {
                    options["AndroidSystemLibs"] = androidSystemLibraries.JoinStrings(";");
                    // TO DO implement for cmd
                    cmdLineOptions["AndroidSystemLibs"] = FileGeneratorUtilities.RemoveLineTag;
                }
                else
                {
                    options["AndroidSystemLibs"]        = FileGeneratorUtilities.RemoveLineTag;
                    cmdLineOptions["AndroidSystemLibs"] = FileGeneratorUtilities.RemoveLineTag;
                }

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.LinkAgainstThumbVersionOfLibGcc.Enable, () => { options["LinkGccLibThumb"] = "true"; }),
                    Sharpmake.Options.Option(Options.Linker.LinkAgainstThumbVersionOfLibGcc.Disable, () => { options["LinkGccLibThumb"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.ReportUndefinedSymbols.Enable, () => { options["ReportUndefinedSymbols"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["ReportUndefinedSymbols"] = "-Wl,--no-undefined"; }),
                    Sharpmake.Options.Option(Options.Linker.ReportUndefinedSymbols.Disable, () => { options["ReportUndefinedSymbols"] = "false"; cmdLineOptions["ReportUndefinedSymbols"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.LinkerType.Bfd, () => { options["UseLinker"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["UseLinker"] = "-fuse-ld=bfd"; }),
                    Sharpmake.Options.Option(Options.Linker.LinkerType.Gold, () => { options["UseLinker"] = "false"; cmdLineOptions["UseLinker"] = "-fuse-ld=gold"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.ThinArchive.Enable, () => { options["ThinArchive"] = "true"; }),
                    Sharpmake.Options.Option(Options.Linker.ThinArchive.Disable, () => { options["ThinArchive"] = FileGeneratorUtilities.RemoveLineTag; })
                );
            }
Beispiel #7
0
            public override void SetupSdkOptions(IGenerationContext context)
            {
                var options = context.Options;
                var devEnv  = context.DevelopmentEnvironment;

                if (GlobalSettings.OverridenDurangoXDK && !Util.IsDurangoSideBySideXDK() && Util.IsDurangoSideBySideXDKInstalled())
                {
                    // only use the full path to includes and libs if we have a
                    // sideByside XDK installed, but we compile using an old one.
                    // That is done because msbuild concatenates an XdkEdition in the $(Console*) variables without any way of removing it...
                    options["IncludePath"]   = devEnv.GetDurangoIncludePath();
                    options["ReferencePath"] = devEnv.GetDurangoLibraryPath();
                    options["LibraryPath"]   = devEnv.GetDurangoLibraryPath();
                    options["LibraryWPath"]  = devEnv.GetDurangoLibraryPath();
                }
                else
                {
                    options["IncludePath"]   = "$(Console_SdkIncludeRoot);";
                    options["ReferencePath"] = "$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath);";
                    options["LibraryPath"]   = "$(Console_SdkLibPath);";
                    options["LibraryWPath"]  = "$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath);";
                }

                //Options.Vc.General.DeployMode.
                //    Push                                  DeployMode="Push"
                //    Pull                                  DeployMode="Pull"
                //    External                              DeployMode="External"
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.General.DeployMode.Push, () => { context.Options["DeployMode"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.General.DeployMode.Pull, () => { context.Options["DeployMode"] = "Pull"; }),
                    Sharpmake.Options.Option(Options.General.DeployMode.External, () => { context.Options["DeployMode"] = "External"; })
                );
            }
Beispiel #8
0
            public override void SetupSdkOptions(IGenerationContext context)
            {
                var options = context.Options;
                var devEnv  = context.DevelopmentEnvironment;

                // TODO: check if we need to override the paths in case of FastBuild?
                if (GlobalSettings.OverridenDurangoXDK && !Util.IsDurangoSideBySideXDK() && Util.IsDurangoSideBySideXDKInstalled())
                {
                    // only use the full path to includes and libs if we have a
                    // sideByside XDK installed, but we compile using an old one.
                    // That is done because msbuild concatenates an XdkEdition in the $(Console*) variables without any way of removing it...
                    options["IncludePath"]   = devEnv.GetDurangoIncludePath();
                    options["ReferencePath"] = devEnv.GetDurangoLibraryPath();
                    options["LibraryPath"]   = devEnv.GetDurangoLibraryPath();
                    options["LibraryWPath"]  = devEnv.GetDurangoLibraryPath();
                }
                else
                {
                    options["IncludePath"]   = "$(Console_SdkIncludeRoot);";
                    options["ReferencePath"] = "$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath);";
                    options["LibraryPath"]   = "$(Console_SdkLibPath);";
                    options["LibraryWPath"]  = "$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath);";
                }

                //Options.Vc.General.DeployMode.
                //    Push                                  DeployMode="Push"
                //    Pull                                  DeployMode="Pull"
                //    External                              DeployMode="External"
                context.Options["NetworkSharePath"] = FileGeneratorUtilities.RemoveLineTag;
                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.General.DeployMode.Push, () => { context.Options["DeployMode"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.General.DeployMode.Pull, () => { context.Options["DeployMode"] = "Pull"; }),
                    Sharpmake.Options.Option(Options.General.DeployMode.External, () => { context.Options["DeployMode"] = "External"; }),
                    Sharpmake.Options.Option(Options.General.DeployMode.RegisterNetworkShare, () =>
                {
                    context.Options["DeployMode"] = "RegisterNetworkShare";
                    string networkSharePath       = Sharpmake.Options.PathOption.Get <Durango.Options.General.NetworkSharePath>(context.Configuration, null);
                    if (networkSharePath != null)
                    {
                        context.Options["NetworkSharePath"] = "$(ProjectDir)" + Sharpmake.Util.PathGetRelative(context.ProjectDirectoryCapitalized, networkSharePath, true);
                    }
                })
                );
            }
Beispiel #9
0
            public override void SelectLinkerOptions(IGenerationContext context)
            {
                if (context.Options["OutputFileExtension"] != FileGeneratorUtilities.RemoveLineTag)
                {
                    context.Options["OutputFileExtension"] = context.Options["OutputFileExtension"].TrimEnd('.');
                }

                if (context.Options["OutputFile"] != FileGeneratorUtilities.RemoveLineTag)
                {
                    context.Options["OutputFile"] = context.Options["OutputFile"].TrimEnd('.');
                }

                context.SelectOption
                (
                    Options.Option(Options.Vc.Linker.ShowProgress.NotSet, () => { context.Options["ShowProgress"] = "false"; context.CommandLineOptions["ShowProgress"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Options.Option(Options.Vc.Linker.ShowProgress.DisplaysSomeProgressMessages, () => { context.Options["ShowProgress"] = "true"; context.CommandLineOptions["ShowProgress"] = "-Wl,--stats"; }),
                    Options.Option(Options.Vc.Linker.ShowProgress.DisplayAllProgressMessages, () => { context.Options["ShowProgress"] = "true"; context.CommandLineOptions["ShowProgress"] = "-Wl,--stats"; })
                );
            }
Beispiel #10
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.GenerateDebugInformation.Enable, () => { options["GenerateDebugInformation"] = "true"; cmdLineOptions["CLangGenerateDebugInformation"] = "-g"; }),
                    Sharpmake.Options.Option(Options.Compiler.GenerateDebugInformation.Disable, () => { options["GenerateDebugInformation"] = "false"; cmdLineOptions["CLangGenerateDebugInformation"] = ""; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.Warnings.NormalWarnings, () => { options["Warnings"] = "NormalWarnings"; cmdLineOptions["Warnings"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.Warnings.MoreWarnings, () => { options["Warnings"] = "MoreWarnings"; cmdLineOptions["Warnings"] = "-Wall"; }),
                    Sharpmake.Options.Option(Options.Compiler.Warnings.Disable, () => { options["Warnings"] = "WarningsOff"; cmdLineOptions["Warnings"] = "-w"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.ExtraWarnings.Enable, () => { options["ExtraWarnings"] = "true"; cmdLineOptions["ExtraWarnings"] = "-Wextra"; }),
                    Sharpmake.Options.Option(Options.Compiler.ExtraWarnings.Disable, () => { options["ExtraWarnings"] = "false"; cmdLineOptions["ExtraWarnings"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.General.TreatWarningsAsErrors.Enable, () => { options["WarningsAsErrors"] = "true"; cmdLineOptions["WarningsAsErrors"] = "-Werror"; }),
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.General.TreatWarningsAsErrors.Disable, () => { options["WarningsAsErrors"] = "false"; cmdLineOptions["WarningsAsErrors"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.InlineFunctionDebugInformation.Enable, () => { options["InlineFunctionDebugInformation"] = "true"; if (conf.IsFastBuild)
                                                                                                             {
                                                                                                                 throw new NotImplementedException("FIXME!");
                                                                                                             }
                                             }),
                    Sharpmake.Options.Option(Options.Compiler.InlineFunctionDebugInformation.Disable, () => { options["InlineFunctionDebugInformation"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                Options.Compiler.ProcessorNumber processorNumber = Sharpmake.Options.GetObject <Options.Compiler.ProcessorNumber>(conf);
                if (processorNumber == null)
                {
                    options["ProcessorNumber"] = FileGeneratorUtilities.RemoveLineTag;
                }
                else
                {
                    options["ProcessorNumber"] = processorNumber.Value.ToString();
                }

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.Distributable.Enable, () => { options["Distributable"] = "true"; }),
                    Sharpmake.Options.Option(Options.Compiler.Distributable.Disable, () => { options["Distributable"] = "false"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.Disable, () => { options["OptimizationLevel"] = "Level0"; cmdLineOptions["OptimizationLevel"] = "-O0"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.Standard, () => { options["OptimizationLevel"] = "Level1"; cmdLineOptions["OptimizationLevel"] = "-O1"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.Full, () => { options["OptimizationLevel"] = "Level2"; cmdLineOptions["OptimizationLevel"] = "-O2"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.FullWithInlining, () => { options["OptimizationLevel"] = "Level3"; cmdLineOptions["OptimizationLevel"] = "-O3"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.ForSize, () => { options["OptimizationLevel"] = "Levels"; cmdLineOptions["OptimizationLevel"] = "-Os"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.PositionIndependentCode.Disable, () => { options["PositionIndependentCode"] = "false"; cmdLineOptions["PositionIndependentCode"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.PositionIndependentCode.Enable, () => { options["PositionIndependentCode"] = "true"; cmdLineOptions["PositionIndependentCode"] = "-fPIC"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.FastMath.Enable, () => { options["FastMath"] = "true"; cmdLineOptions["FastMath"] = "-ffast-math"; }),
                    Sharpmake.Options.Option(Options.Compiler.FastMath.Disable, () => { options["FastMath"] = "false"; cmdLineOptions["FastMath"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.NoStrictAliasing.Enable, () => { options["NoStrictAliasing"] = "true"; cmdLineOptions["NoStrictAliasing"] = "-fno-strict-aliasing"; }),
                    Sharpmake.Options.Option(Options.Compiler.NoStrictAliasing.Disable, () => { options["NoStrictAliasing"] = "false"; cmdLineOptions["NoStrictAliasing"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.UnrollLoops.Enable, () => { options["UnrollLoops"] = "true"; cmdLineOptions["UnrollLoops"] = "-funroll-loops"; }),
                    Sharpmake.Options.Option(Options.Compiler.UnrollLoops.Disable, () => { options["UnrollLoops"] = "false"; cmdLineOptions["UnrollLoops"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.LinkTimeOptimization.Enable, () => { options["LinkTimeOptimization"] = "true"; cmdLineOptions["LinkTimeOptimization"] = "-flto"; }),
                    Sharpmake.Options.Option(Options.Compiler.LinkTimeOptimization.Disable, () => { options["LinkTimeOptimization"] = "false"; cmdLineOptions["LinkTimeOptimization"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.CheckAnsiCompliance.Enable, () => { options["AnsiCompliance"] = "true"; cmdLineOptions["AnsiCompliance"] = "-ansi"; }),
                    Sharpmake.Options.Option(Options.Compiler.CheckAnsiCompliance.Disable, () => { options["AnsiCompliance"] = "false"; cmdLineOptions["AnsiCompliance"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.DefaultCharUnsigned.Enable, () => { options["CharUnsigned"] = "true"; cmdLineOptions["CharUnsigned"] = "-funsigned-char"; }),
                    Sharpmake.Options.Option(Options.Compiler.DefaultCharUnsigned.Disable, () => { options["CharUnsigned"] = "false"; cmdLineOptions["CharUnsigned"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.MsExtensions.Enable, () => { options["MsExtensions"] = "true"; cmdLineOptions["MsExtensions"] = "-fms-extensions"; }),
                    Sharpmake.Options.Option(Options.Compiler.MsExtensions.Disable, () => { options["MsExtensions"] = "false"; cmdLineOptions["MsExtensions"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.Compiler.RTTI.Enable, () => { options["RuntimeTypeInfo"] = "true"; cmdLineOptions["RuntimeTypeInfo"] = "-frtti"; }),
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.Compiler.RTTI.Disable, () => { options["RuntimeTypeInfo"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["RuntimeTypeInfo"] = "-fno-rtti"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.EditAndContinue.Enable, () => { options["EditAndContinue"] = "true"; cmdLineOptions["EditAndContinue"] = "-Wl,--enc"; }),
                    Sharpmake.Options.Option(Options.Linker.EditAndContinue.Disable, () => { options["EditAndContinue"] = "false"; cmdLineOptions["EditAndContinue"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.InfoStripping.None, () => { options["InfoStripping"] = "None"; cmdLineOptions["InfoStripping"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Linker.InfoStripping.StripDebug, () => { options["InfoStripping"] = "StripDebug"; cmdLineOptions["InfoStripping"] = "-Wl,-S"; }),
                    Sharpmake.Options.Option(Options.Linker.InfoStripping.StripSymsAndDebug, () => { options["InfoStripping"] = "StripSymsAndDebug"; cmdLineOptions["InfoStripping"] = "-Wl,-s"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.DataStripping.None, () => { options["DataStripping"] = "None"; cmdLineOptions["DataStripping"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Linker.DataStripping.StripFuncs, () => { options["DataStripping"] = "StripFuncs"; cmdLineOptions["DataStripping"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Linker.DataStripping.StripFuncsAndData, () => { options["DataStripping"] = "StripFuncsAndData"; cmdLineOptions["DataStripping"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.DuplicateStripping.Enable, () => { options["DuplicateStripping"] = "true"; cmdLineOptions["DuplicateStripping"] = "-strip-duplicates"; }),
                    Sharpmake.Options.Option(Options.Linker.DuplicateStripping.Disable, () => { options["DuplicateStripping"] = "false"; cmdLineOptions["DuplicateStripping"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.Addressing.ASLR, () => { options["Addressing"] = "ASLR"; cmdLineOptions["Addressing"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Linker.Addressing.NonASLR, () => { options["Addressing"] = "NonASLR"; cmdLineOptions["Addressing"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.UseThinArchives.Enable, () => { options["UseThinArchives"] = "true"; cmdLineOptions["UseThinArchives"] = "T"; }),
                    Sharpmake.Options.Option(Options.Linker.UseThinArchives.Disable, () => { options["UseThinArchives"] = "false"; cmdLineOptions["UseThinArchives"] = ""; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Linker.WholeArchive.Enable, () => { options["WholeArchive"] = "true"; cmdLineOptions["WholeArchiveBegin"] = "--whole-archive"; cmdLineOptions["WholeArchiveEnd"] = "--no-whole-archive"; }),
                    Sharpmake.Options.Option(Options.Linker.WholeArchive.Disable, () => { options["WholeArchive"] = "false"; cmdLineOptions["WholeArchiveBegin"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["WholeArchiveEnd"] = FileGeneratorUtilities.RemoveLineTag; })
                );
            }
Beispiel #11
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.GenerateDebugInformation.Enable, () => { options["GenerateDebugInformation"] = "true"; cmdLineOptions["CLangGenerateDebugInformation"] = "-g"; }),
                    Sharpmake.Options.Option(Options.Compiler.GenerateDebugInformation.Disable, () => { options["GenerateDebugInformation"] = "false"; cmdLineOptions["CLangGenerateDebugInformation"] = ""; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.Warnings.NormalWarnings, () => { options["Warnings"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["Warnings"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.Warnings.AllWarnings, () => { options["Warnings"] = "AllWarnings"; cmdLineOptions["Warnings"] = "-Wall"; }),
                    Sharpmake.Options.Option(Options.Compiler.Warnings.Disable, () => { options["Warnings"] = "DisableAllWarnings"; cmdLineOptions["Warnings"] = "-w"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.General.TreatWarningsAsErrors.Enable, () => { options["WarningsAsErrors"] = "true"; cmdLineOptions["WarningsAsErrors"] = "-Werror"; }),
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.General.TreatWarningsAsErrors.Disable, () => { options["WarningsAsErrors"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["WarningsAsErrors"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.EchoCommandLines.Enable, () => { options["EchoCommandLinesCompiler"] = "true"; }),
                    Sharpmake.Options.Option(Options.Compiler.EchoCommandLines.Disable, () => { options["EchoCommandLinesCompiler"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.EchoIncludedHeaders.Enable, () => { options["EchoIncludedHeaders"] = "true"; cmdLineOptions["EchoIncludedHeaders"] = "-H"; }),
                    Sharpmake.Options.Option(Options.Compiler.EchoIncludedHeaders.Disable, () => { options["EchoIncludedHeaders"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["EchoIncludedHeaders"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                Options.Compiler.ProcessorNumber processorNumber = Sharpmake.Options.GetObject <Options.Compiler.ProcessorNumber>(conf);
                if (processorNumber == null)
                {
                    options["ProcessorNumber"] = FileGeneratorUtilities.RemoveLineTag;
                }
                else
                {
                    options["ProcessorNumber"] = processorNumber.Value.ToString();
                }

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.Disable, () => { options["OptimizationLevel"] = "O0"; cmdLineOptions["OptimizationLevel"] = "-O0"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.Standard, () => { options["OptimizationLevel"] = "O1"; cmdLineOptions["OptimizationLevel"] = "-O1"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.Full, () => { options["OptimizationLevel"] = "O2"; cmdLineOptions["OptimizationLevel"] = "-O2"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.FullWithInlining, () => { options["OptimizationLevel"] = "O3"; cmdLineOptions["OptimizationLevel"] = "-O3"; }),
                    Sharpmake.Options.Option(Options.Compiler.OptimizationLevel.ForSize, () => { options["OptimizationLevel"] = "Os"; cmdLineOptions["OptimizationLevel"] = "-Os"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.StrictAliasing.Enable, () => { options["StrictAliasing"] = "true"; cmdLineOptions["StrictAliasing"] = "-fstrict-aliasing"; }),
                    Sharpmake.Options.Option(Options.Compiler.StrictAliasing.Disable, () => { options["StrictAliasing"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["StrictAliasing"] = "-fno-strict-aliasing"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.UnswitchLoops.Enable, () => { options["UnswitchLoops"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["UnswitchLoops"] = "-funswitch-loops"; }),
                    Sharpmake.Options.Option(Options.Compiler.UnswitchLoops.Disable, () => { options["UnswitchLoops"] = "false"; cmdLineOptions["UnswitchLoops"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                Options.Compiler.InlineLimit inlineLimit = Sharpmake.Options.GetObject <Options.Compiler.InlineLimit>(conf);
                if (inlineLimit == null || inlineLimit.Value == 100)
                {
                    options["InlineLimit"] = FileGeneratorUtilities.RemoveLineTag;
                }
                else
                {
                    options["InlineLimit"] = inlineLimit.Value.ToString();
                }

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.OmitFramePointers.Enable, () => { options["OmitFramePointers"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["OmitFramePointers"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.OmitFramePointers.Disable, () => { options["OmitFramePointers"] = "false"; cmdLineOptions["OmitFramePointers"] = "-fno-omit-frame-pointer"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.FunctionSections.Enable, () => { options["FunctionSections"] = "true"; cmdLineOptions["FunctionSections"] = "-ffunction-sections"; }),
                    Sharpmake.Options.Option(Options.Compiler.FunctionSections.Disable, () => { options["FunctionSections"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["FunctionSections"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.ThumbMode.Enable, () => { options["ThumbMode"] = "true"; cmdLineOptions["ThumbMode"] = "-mthumb"; }),
                    Sharpmake.Options.Option(Options.Compiler.ThumbMode.Disable, () => { options["ThumbMode"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["ThumbMode"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.FloatingPointABI.Hard, () => { options["FloatAbi"] = "hard"; cmdLineOptions["FloatAbi"] = "-mfloat-abi=hard"; }),
                    Sharpmake.Options.Option(Options.Compiler.FloatingPointABI.Soft, () => { options["FloatAbi"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["FloatAbi"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.GeneratePositionIndependentCode.Enable, () => { options["PositionIndependentCode"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["PositionIndependentCode"] = "-fpic"; }),
                    Sharpmake.Options.Option(Options.Compiler.GeneratePositionIndependentCode.Disable, () => { options["PositionIndependentCode"] = "false"; cmdLineOptions["PositionIndependentCode"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.StackProtection.Enable, () => { options["StackProtector"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["StackProtector"] = "-fstack-protector"; }),
                    Sharpmake.Options.Option(Options.Compiler.StackProtection.Disable, () => { options["StackProtector"] = "false"; cmdLineOptions["StackProtector"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.EnableAdvancedSIMD.Enable, () => { options["FpuNeon"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["FpuNeon"] = "-mfpu=neon"; }),
                    Sharpmake.Options.Option(Options.Compiler.EnableAdvancedSIMD.Disable, () => { options["FpuNeon"] = "false"; cmdLineOptions["FpuNeon"] = FileGeneratorUtilities.RemoveLineTag; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.Exceptions.Enable, () => { options["GccExceptionHandling"] = "true"; cmdLineOptions["GccExceptionHandling"] = "-fexceptions"; }),
                    Sharpmake.Options.Option(Options.Compiler.Exceptions.Disable, () => { options["GccExceptionHandling"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["GccExceptionHandling"] = "-fno-exceptions"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.Compiler.RTTI.Enable, () => { options["RuntimeTypeInfo"] = "true"; cmdLineOptions["RuntimeTypeInfo"] = "-frtti"; }),
                    Sharpmake.Options.Option(Sharpmake.Options.Vc.Compiler.RTTI.Disable, () => { options["RuntimeTypeInfo"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["RuntimeTypeInfo"] = "-fno-rtti"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.ShortEnums.Enable, () => { options["ShortEnums"] = "true"; cmdLineOptions["ShortEnums"] = "-fshort-enums"; }),
                    Sharpmake.Options.Option(Options.Compiler.ShortEnums.Disable, () => { options["ShortEnums"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["ShortEnums"] = "-fno-short-enums"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.DefaultCharUnsigned.Default, () => { options["SignedChar"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["SignedChar"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.DefaultCharUnsigned.Enable, () => { options["SignedChar"] = "false"; cmdLineOptions["SignedChar"] = "-funsigned-char"; }),
                    Sharpmake.Options.Option(Options.Compiler.DefaultCharUnsigned.Disable, () => { options["SignedChar"] = "true"; cmdLineOptions["SignedChar"] = "-fsigned-char"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.Default, () => { options["CLanguageStandard"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["CLanguageStandard"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.C89, () => { options["CLanguageStandard"] = "c89"; cmdLineOptions["CLanguageStandard"] = "-std=c89"; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.C95, () => { options["CLanguageStandard"] = "iso9899:199409"; cmdLineOptions["CLanguageStandard"] = "-std=iso9899:199409"; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.C99, () => { options["CLanguageStandard"] = "c99"; cmdLineOptions["CLanguageStandard"] = "-std=c99"; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.C11, () => { options["CLanguageStandard"] = "c11"; cmdLineOptions["CLanguageStandard"] = "-std=c11"; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.GnuC89, () => { options["CLanguageStandard"] = "gnu89"; cmdLineOptions["CLanguageStandard"] = "-std=gnu89"; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.GnuC99, () => { options["CLanguageStandard"] = "gnu99"; cmdLineOptions["CLanguageStandard"] = "-std=gnu99"; }),
                    Sharpmake.Options.Option(Options.Compiler.CLanguageStandard.GnuC11, () => { options["CLanguageStandard"] = "gnu11"; cmdLineOptions["CLanguageStandard"] = "-std=gnu11"; })
                );

                context.SelectOption
                (
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.Default, () => { options["CppLanguageStandard"] = FileGeneratorUtilities.RemoveLineTag; cmdLineOptions["CppLanguageStandard"] = FileGeneratorUtilities.RemoveLineTag; }),
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.CPP98, () => { options["CppLanguageStandard"] = "c++98"; cmdLineOptions["CppLanguageStandard"] = "-std=c++98"; }),
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.CPP11, () => { options["CppLanguageStandard"] = "c++11"; cmdLineOptions["CppLanguageStandard"] = "-std=c++11"; }),
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.CPP1y, () => { options["CppLanguageStandard"] = "c++1y"; cmdLineOptions["CppLanguageStandard"] = "-std=c++1y"; }),
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.GnuCPP98, () => { options["CppLanguageStandard"] = "gnu++98"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++98"; }),
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.GnuCPP11, () => { options["CppLanguageStandard"] = "gnu++11"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++11"; }),
                    Sharpmake.Options.Option(Options.Compiler.CPPLanguageStandard.GnuCPP1y, () => { options["CppLanguageStandard"] = "gnu++1y"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++1y"; })
                );
            }
Beispiel #12
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                // Although we add options to cmdLineOptions, FastBuild isn't supported yet for Android projects.

                context.SelectOption
                (
                    Options.Option(Options.Android.General.AndroidAPILevel.Default, () => { options["AndroidAPILevel"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android19, () => { options["AndroidAPILevel"] = "android-19"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android21, () => { options["AndroidAPILevel"] = "android-21"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android22, () => { options["AndroidAPILevel"] = "android-22"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android23, () => { options["AndroidAPILevel"] = "android-23"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android24, () => { options["AndroidAPILevel"] = "android-24"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.PlatformToolset.Default, () => { options["PlatformToolset"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.PlatformToolset.Clang_3_8, () => { options["PlatformToolset"] = "Clang_3_8"; }),
                    Options.Option(Options.Android.General.PlatformToolset.Gcc_4_9, () => { options["PlatformToolset"] = "Gcc_4_9"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.UseOfStl.System, () => { options["UseOfStl"] = "system"; }),
                    Options.Option(Options.Android.General.UseOfStl.GAbiPP_Static, () => { options["UseOfStl"] = "gabi++_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.GAbiPP_Shared, () => { options["UseOfStl"] = "gabi++_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.StlPort_Static, () => { options["UseOfStl"] = "stlport_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.StlPort_Shared, () => { options["UseOfStl"] = "stlport_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.GnuStl_Static, () => { options["UseOfStl"] = "gnustl_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.GnuStl_Shared, () => { options["UseOfStl"] = "gnustl_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.LibCpp_Static, () => { options["UseOfStl"] = "c++_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.LibCpp_Shared, () => { options["UseOfStl"] = "c++_shared"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.ThumbMode.Thumb, () => { options["ThumbMode"] = "Thumb"; }),
                    Options.Option(Options.Android.General.ThumbMode.ARM, () => { options["ThumbMode"] = "ARM"; }),
                    Options.Option(Options.Android.General.ThumbMode.Disabled, () => { options["ThumbMode"] = "Disabled"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.WarningLevel.TurnOffAllWarnings, () => { options["WarningLevel"] = "TurnOffAllWarnings"; cmdLineOptions["WarningLevel"] = "-w"; }),
                    Options.Option(Options.Android.General.WarningLevel.EnableAllWarnings, () => { options["WarningLevel"] = "EnableAllWarnings"; cmdLineOptions["WarningLevel"] = "-Wall"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp98, () => { options["CppLanguageStandard"] = "c++98"; cmdLineOptions["CppLanguageStandard"] = "-std=c++98"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp11, () => { options["CppLanguageStandard"] = "c++11"; cmdLineOptions["CppLanguageStandard"] = "-std=c++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp1y, () => { options["CppLanguageStandard"] = "c++1y"; cmdLineOptions["CppLanguageStandard"] = "-std=c++1y"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp98, () => { options["CppLanguageStandard"] = "gnu++98"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++98"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp11, () => { options["CppLanguageStandard"] = "gnu++11"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp1y, () => { options["CppLanguageStandard"] = "gnu++1y"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++1y"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.DataLevelLinking.Disable, () => { options["EnableDataLevelLinking"] = "false"; cmdLineOptions["EnableDataLevelLinking"] = RemoveLineTag; }),
                    Options.Option(Options.Android.Compiler.DataLevelLinking.Enable, () => { options["EnableDataLevelLinking"] = "true"; cmdLineOptions["EnableDataLevelLinking"] = "-fdata-sections"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.None, () => { options["DebugInformationFormat"] = "None"; cmdLineOptions["DebugInformationFormat"] = "-g0"; }),
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.FullDebug, () => { options["DebugInformationFormat"] = "FullDebug"; cmdLineOptions["DebugInformationFormat"] = "-g2 -gdwarf-2"; }),
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.LineNumber, () => { options["DebugInformationFormat"] = "LineNumber"; cmdLineOptions["DebugInformationFormat"] = "-gline-tables-only"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.Exceptions.Disable, () => { options["ExceptionHandling"] = "Disabled"; cmdLineOptions["ExceptionHandling"] = "-fno-exceptions"; }),
                    Options.Option(Options.Android.Compiler.Exceptions.Enable, () => { options["ExceptionHandling"] = "Enabled"; cmdLineOptions["ExceptionHandling"] = "-fexceptions"; }),
                    Options.Option(Options.Android.Compiler.Exceptions.UnwindTables, () => { options["ExceptionHandling"] = "UnwindTables"; cmdLineOptions["ExceptionHandling"] = "-funwind-tables"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.General.TreatWarningsAsErrors.Disable, () => { options["TreatWarningAsError"] = "false"; cmdLineOptions["TreatWarningAsError"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.General.TreatWarningsAsErrors.Enable, () => { options["TreatWarningAsError"] = "true"; cmdLineOptions["TreatWarningAsError"] = "-Werror"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.BufferSecurityCheck.Enable, () => { options["BufferSecurityCheck"] = "true"; cmdLineOptions["BufferSecurityCheck"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Compiler.BufferSecurityCheck.Disable, () => { options["BufferSecurityCheck"] = "false"; cmdLineOptions["BufferSecurityCheck"] = "-fstack-protector"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.FunctionLevelLinking.Disable, () => { options["EnableFunctionLevelLinking"] = "false"; cmdLineOptions["EnableFunctionLevelLinking"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Compiler.FunctionLevelLinking.Enable, () => { options["EnableFunctionLevelLinking"] = "true"; cmdLineOptions["EnableFunctionLevelLinking"] = "-ffunction-sections"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.OmitFramePointers.Disable, () => { options["OmitFramePointers"] = "false"; cmdLineOptions["OmitFramePointers"] = "-fno-omit-frame-pointer"; }),
                    Options.Option(Options.Vc.Compiler.OmitFramePointers.Enable, () => { options["OmitFramePointers"] = "true"; cmdLineOptions["OmitFramePointers"] = "-fomit-frame-pointer"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.Optimization.Disable, () => { options["Optimization"] = "Disabled"; cmdLineOptions["Optimization"] = "-O0"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.MinimizeSize, () => { options["Optimization"] = "MinSize"; cmdLineOptions["Optimization"] = "-Os"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.MaximizeSpeed, () => { options["Optimization"] = "MaxSpeed"; cmdLineOptions["Optimization"] = "-O2"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.FullOptimization, () => { options["Optimization"] = "Full"; cmdLineOptions["Optimization"] = "-O3"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.MultiProcessorCompilation.Enable, () => { options["UseMultiToolTask"] = "true"; }),
                    Options.Option(Options.Vc.Compiler.MultiProcessorCompilation.Disable, () => { options["UseMultiToolTask"] = "false"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.RTTI.Disable, () => { options["RuntimeTypeInfo"] = "false"; cmdLineOptions["RuntimeTypeInfo"] = "-fno-rtti"; }),
                    Options.Option(Options.Vc.Compiler.RTTI.Enable, () => { options["RuntimeTypeInfo"] = "true"; cmdLineOptions["RuntimeTypeInfo"] = "-frtti"; })
                );
            }
Beispiel #13
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                // Although we add options to cmdLineOptions, FastBuild isn't supported yet for Android projects.

                context.SelectOption
                (
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.Default, () => { options["ShowAndroidPathsVerbosity"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.High, () => { options["ShowAndroidPathsVerbosity"] = "High"; }),
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.Normal, () => { options["ShowAndroidPathsVerbosity"] = "Normal"; }),
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.Low, () => { options["ShowAndroidPathsVerbosity"] = "Low"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.AndroidAPILevel.Latest, () =>
                {
                    string lookupDirectory;
                    if (context.Project is AndroidPackageProject)
                    {
                        // for the packaging projects, we look in the SDK
                        lookupDirectory = options["androidHome"];
                    }
                    else
                    {
                        // otherwise, look in the NDK
                        lookupDirectory = options["ndkRoot"];
                    }

                    string androidApiLevel = RemoveLineTag;
                    if (lookupDirectory != RemoveLineTag)
                    {
                        string latestApiLevel = Util.FindLatestApiLevelInDirectory(Path.Combine(lookupDirectory, "platforms"));
                        if (!string.IsNullOrEmpty(latestApiLevel))
                        {
                            androidApiLevel = latestApiLevel;
                        }
                    }
                    options["AndroidAPILevel"] = androidApiLevel;
                }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Default, () => { options["AndroidAPILevel"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android16, () => { options["AndroidAPILevel"] = "android-16"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android17, () => { options["AndroidAPILevel"] = "android-17"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android18, () => { options["AndroidAPILevel"] = "android-18"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android19, () => { options["AndroidAPILevel"] = "android-19"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android20, () => { options["AndroidAPILevel"] = "android-20"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android21, () => { options["AndroidAPILevel"] = "android-21"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android22, () => { options["AndroidAPILevel"] = "android-22"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android23, () => { options["AndroidAPILevel"] = "android-23"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android24, () => { options["AndroidAPILevel"] = "android-24"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android25, () => { options["AndroidAPILevel"] = "android-25"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android26, () => { options["AndroidAPILevel"] = "android-26"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android27, () => { options["AndroidAPILevel"] = "android-27"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android28, () => { options["AndroidAPILevel"] = "android-28"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android29, () => { options["AndroidAPILevel"] = "android-29"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android30, () => { options["AndroidAPILevel"] = "android-30"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.PlatformToolset.Default, () => { options["PlatformToolset"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.PlatformToolset.Clang_3_6, () => { options["PlatformToolset"] = "Clang_3_6"; }),
                    Options.Option(Options.Android.General.PlatformToolset.Clang_3_8, () => { options["PlatformToolset"] = "Clang_3_8"; }),
                    Options.Option(Options.Android.General.PlatformToolset.Clang_5_0, () => { options["PlatformToolset"] = "Clang_5_0"; }),
                    Options.Option(Options.Android.General.PlatformToolset.Gcc_4_9, () => { options["PlatformToolset"] = "Gcc_4_9"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.UseOfStl.Default, () => { options["UseOfStl"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.UseOfStl.System, () => { options["UseOfStl"] = "system"; }),
                    Options.Option(Options.Android.General.UseOfStl.GAbiPP_Static, () => { options["UseOfStl"] = "gabi++_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.GAbiPP_Shared, () => { options["UseOfStl"] = "gabi++_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.StlPort_Static, () => { options["UseOfStl"] = "stlport_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.StlPort_Shared, () => { options["UseOfStl"] = "stlport_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.GnuStl_Static, () => { options["UseOfStl"] = "gnustl_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.GnuStl_Shared, () => { options["UseOfStl"] = "gnustl_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.LibCpp_Static, () => { options["UseOfStl"] = "c++_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.LibCpp_Shared, () => { options["UseOfStl"] = "c++_shared"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.ThumbMode.Default, () => { options["ThumbMode"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.ThumbMode.Thumb, () => { options["ThumbMode"] = "Thumb"; }),
                    Options.Option(Options.Android.General.ThumbMode.ARM, () => { options["ThumbMode"] = "ARM"; }),
                    Options.Option(Options.Android.General.ThumbMode.Disabled, () => { options["ThumbMode"] = "Disabled"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.WarningLevel.TurnOffAllWarnings, () => { options["WarningLevel"] = "TurnOffAllWarnings"; cmdLineOptions["WarningLevel"] = "-w"; }),
                    Options.Option(Options.Android.General.WarningLevel.EnableAllWarnings, () => { options["WarningLevel"] = "EnableAllWarnings"; cmdLineOptions["WarningLevel"] = "-Wall"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Default, () => { options["CppLanguageStandard"] = "c++11"; cmdLineOptions["CppLanguageStandard"] = "-std=c++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp98, () => { options["CppLanguageStandard"] = "c++98"; cmdLineOptions["CppLanguageStandard"] = "-std=c++98"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp11, () => { options["CppLanguageStandard"] = "c++11"; cmdLineOptions["CppLanguageStandard"] = "-std=c++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp1y, () => { options["CppLanguageStandard"] = "c++1y"; cmdLineOptions["CppLanguageStandard"] = "-std=c++1y"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp14, () => { options["CppLanguageStandard"] = "c++14"; cmdLineOptions["CppLanguageStandard"] = "-std=c++14"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp17, () => { options["CppLanguageStandard"] = "c++17"; cmdLineOptions["CppLanguageStandard"] = "-std=c++17"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp1z, () => { options["CppLanguageStandard"] = "c++1z"; cmdLineOptions["CppLanguageStandard"] = "-std=c++1z"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp2a, () => { options["CppLanguageStandard"] = "c++2a"; cmdLineOptions["CppLanguageStandard"] = "-std=c++2a"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp98, () => { options["CppLanguageStandard"] = "gnu++98"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++98"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp11, () => { options["CppLanguageStandard"] = "gnu++11"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp1y, () => { options["CppLanguageStandard"] = "gnu++1y"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++1y"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp14, () => { options["CppLanguageStandard"] = "gnu++14"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++14"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp17, () => { options["CppLanguageStandard"] = "gnu++17"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++17"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp1z, () => { options["CppLanguageStandard"] = "gnu++1z"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++1z"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp2a, () => { options["CppLanguageStandard"] = "gnu++2a"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++2a"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.DataLevelLinking.Disable, () => { options["EnableDataLevelLinking"] = "false"; cmdLineOptions["EnableDataLevelLinking"] = RemoveLineTag; }),
                    Options.Option(Options.Android.Compiler.DataLevelLinking.Enable, () => { options["EnableDataLevelLinking"] = "true"; cmdLineOptions["EnableDataLevelLinking"] = "-fdata-sections"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.None, () => { options["DebugInformationFormat"] = "None"; cmdLineOptions["DebugInformationFormat"] = "-g0"; }),
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.FullDebug, () => { options["DebugInformationFormat"] = "FullDebug"; cmdLineOptions["DebugInformationFormat"] = "-g2 -gdwarf-2"; }),
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.LineNumber, () => { options["DebugInformationFormat"] = "LineNumber"; cmdLineOptions["DebugInformationFormat"] = "-gline-tables-only"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.Exceptions.Disable, () => { options["ExceptionHandling"] = "Disabled"; cmdLineOptions["ExceptionHandling"] = "-fno-exceptions"; }),
                    Options.Option(Options.Android.Compiler.Exceptions.Enable, () => { options["ExceptionHandling"] = "Enabled"; cmdLineOptions["ExceptionHandling"] = "-fexceptions"; }),
                    Options.Option(Options.Android.Compiler.Exceptions.UnwindTables, () => { options["ExceptionHandling"] = "UnwindTables"; cmdLineOptions["ExceptionHandling"] = "-funwind-tables"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.General.TreatWarningsAsErrors.Disable, () => { options["TreatWarningAsError"] = "false"; cmdLineOptions["TreatWarningAsError"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.General.TreatWarningsAsErrors.Enable, () => { options["TreatWarningAsError"] = "true"; cmdLineOptions["TreatWarningAsError"] = "-Werror"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.BufferSecurityCheck.Enable, () => { options["BufferSecurityCheck"] = "true"; cmdLineOptions["BufferSecurityCheck"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Compiler.BufferSecurityCheck.Disable, () => { options["BufferSecurityCheck"] = "false"; cmdLineOptions["BufferSecurityCheck"] = "-fstack-protector"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.FunctionLevelLinking.Disable, () => { options["EnableFunctionLevelLinking"] = "false"; cmdLineOptions["EnableFunctionLevelLinking"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Compiler.FunctionLevelLinking.Enable, () => { options["EnableFunctionLevelLinking"] = "true"; cmdLineOptions["EnableFunctionLevelLinking"] = "-ffunction-sections"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.OmitFramePointers.Disable, () => { options["OmitFramePointers"] = "false"; cmdLineOptions["OmitFramePointers"] = "-fno-omit-frame-pointer"; }),
                    Options.Option(Options.Vc.Compiler.OmitFramePointers.Enable, () => { options["OmitFramePointers"] = "true"; cmdLineOptions["OmitFramePointers"] = "-fomit-frame-pointer"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.Optimization.Disable, () => { options["Optimization"] = "Disabled"; cmdLineOptions["Optimization"] = "-O0"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.MinimizeSize, () => { options["Optimization"] = "MinSize"; cmdLineOptions["Optimization"] = "-Os"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.MaximizeSpeed, () => { options["Optimization"] = "MaxSpeed"; cmdLineOptions["Optimization"] = "-O2"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.FullOptimization, () => { options["Optimization"] = "Full"; cmdLineOptions["Optimization"] = "-O3"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.MultiProcessorCompilation.Enable, () => { options["UseMultiToolTask"] = "true"; }),
                    Options.Option(Options.Vc.Compiler.MultiProcessorCompilation.Disable, () => { options["UseMultiToolTask"] = "false"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.RTTI.Disable, () => { options["RuntimeTypeInfo"] = "false"; cmdLineOptions["RuntimeTypeInfo"] = "-fno-rtti"; }),
                    Options.Option(Options.Vc.Compiler.RTTI.Enable, () => { options["RuntimeTypeInfo"] = "true"; cmdLineOptions["RuntimeTypeInfo"] = "-frtti"; })
                );
            }
Beispiel #14
0
            public override void SelectCompilerOptions(IGenerationContext context)
            {
                base.SelectCompilerOptions(context);

                var options        = context.Options;
                var cmdLineOptions = context.CommandLineOptions;
                var conf           = context.Configuration;

                // Although we add options to cmdLineOptions, FastBuild isn't supported yet for Android projects.

                options["androidApplicationModule"] = null != conf && conf.Output.Equals(Project.Configuration.OutputType.Exe) ? context.Project.Name.ToLowerInvariant() : RemoveLineTag;

                options["androidEnablePackaging"] = null != conf && conf.Output.Equals(Project.Configuration.OutputType.Exe) ? "true" : RemoveLineTag;

                options["AndroidApkName"] = RemoveLineTag;
                if (conf.Output.Equals(Project.Configuration.OutputType.Exe))
                {
                    var androidApkName = Options.GetObject <Options.Android.General.AndroidApkName>(conf)?.Value ?? RemoveLineTag;
                    options["AndroidApkName"] = androidApkName;
                }

                context.SelectOption
                (
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.Default, () => { options["ShowAndroidPathsVerbosity"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.High, () => { options["ShowAndroidPathsVerbosity"] = "High"; }),
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.Normal, () => { options["ShowAndroidPathsVerbosity"] = "Normal"; }),
                    Options.Option(Options.Android.General.ShowAndroidPathsVerbosity.Low, () => { options["ShowAndroidPathsVerbosity"] = "Low"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.AndroidAPILevel.Latest, () =>
                {
                    string lookupDirectory;
                    lookupDirectory = options["androidHome"] ?? options["ndkRoot"];

                    string androidApiLevel = RemoveLineTag;
                    if (lookupDirectory != RemoveLineTag)
                    {
                        string latestApiLevel = Util.FindLatestApiLevelInDirectory(Path.Combine(lookupDirectory, "platforms"));
                        if (!string.IsNullOrEmpty(latestApiLevel))
                        {
                            int pos = latestApiLevel.IndexOf("-");
                            if (pos != -1)
                            {
                                androidApiLevel = latestApiLevel.Substring(pos + 1);
                            }
                        }
                    }
                    options["androidMinSdkVersion"] = androidApiLevel;
                    options["AndroidAPILevel"]      = RemoveLineTag;
                }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Default, () => { options["androidMinSdkVersion"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android16, () => { options["androidMinSdkVersion"] = "16"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android17, () => { options["androidMinSdkVersion"] = "17"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android18, () => { options["androidMinSdkVersion"] = "18"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android19, () => { options["androidMinSdkVersion"] = "19"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android20, () => { options["androidMinSdkVersion"] = "20"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android21, () => { options["androidMinSdkVersion"] = "21"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android22, () => { options["androidMinSdkVersion"] = "22"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android23, () => { options["androidMinSdkVersion"] = "23"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android24, () => { options["androidMinSdkVersion"] = "24"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android25, () => { options["androidMinSdkVersion"] = "25"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android26, () => { options["androidMinSdkVersion"] = "26"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android27, () => { options["androidMinSdkVersion"] = "27"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android28, () => { options["androidMinSdkVersion"] = "28"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android29, () => { options["androidMinSdkVersion"] = "29"; }),
                    Options.Option(Options.Android.General.AndroidAPILevel.Android30, () => { options["androidMinSdkVersion"] = "30"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.PlatformToolset.Default, () => { options["PlatformToolset"] = RemoveLineTag; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.UseOfStl.Default, () => { options["UseOfStl"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.UseOfStl.GnuStl_Static, () => { options["UseOfStl"] = "gnustl_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.GnuStl_Shared, () => { options["UseOfStl"] = "gnustl_shared"; }),
                    Options.Option(Options.Android.General.UseOfStl.LibCpp_Static, () => { options["UseOfStl"] = "cpp_static"; }),
                    Options.Option(Options.Android.General.UseOfStl.LibCpp_Shared, () => { options["UseOfStl"] = "cpp_shared"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.LinkTimeOptimization.None, () => { options["LinkTimeOptimization"] = "None"; }),
                    Options.Option(Options.Android.General.LinkTimeOptimization.LinkTimeOptimization, () => { options["LinkTimeOptimization"] = "LinkTimeOptimization"; }),
                    Options.Option(Options.Android.General.LinkTimeOptimization.ThinLinkTimeOptimization, () => { options["LinkTimeOptimization"] = "ThinLinkTimeOptimization"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.ClangLinkType.None, () => { options["ClangLinkType"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.ClangLinkType.DeferToNdk, () => { options["ClangLinkType"] = "DeferToNdk"; }),
                    Options.Option(Options.Android.General.ClangLinkType.gold, () => { options["ClangLinkType"] = "gold"; }),
                    Options.Option(Options.Android.General.ClangLinkType.lld, () => { options["ClangLinkType"] = "lld"; }),
                    Options.Option(Options.Android.General.ClangLinkType.bfd, () => { options["ClangLinkType"] = "bfd"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.ThumbMode.Default, () => { options["ThumbMode"] = RemoveLineTag; }),
                    Options.Option(Options.Android.General.ThumbMode.Thumb, () => { options["ThumbMode"] = "Thumb"; }),
                    Options.Option(Options.Android.General.ThumbMode.ARM, () => { options["ThumbMode"] = "ARM"; }),
                    Options.Option(Options.Android.General.ThumbMode.Disabled, () => { options["ThumbMode"] = "Disabled"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.General.WarningLevel.TurnOffAllWarnings, () => { options["WarningLevel"] = "TurnOffAllWarnings"; cmdLineOptions["WarningLevel"] = "-w"; }),
                    Options.Option(Options.Android.General.WarningLevel.EnableAllWarnings, () => { options["WarningLevel"] = "EnableWarnings"; cmdLineOptions["WarningLevel"] = "-Wall"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.CLanguageStandard.Default, () => { options["CppLanguageStandard"] = "c11"; cmdLineOptions["CLanguageStandard"] = "-std=c11"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.C89, () => { options["CppLanguageStandard"] = "c89"; cmdLineOptions["CLanguageStandard"] = "-std=c89"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.C99, () => { options["CppLanguageStandard"] = "c99"; cmdLineOptions["CLanguageStandard"] = "-std=c99"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.C11, () => { options["CppLanguageStandard"] = "c11"; cmdLineOptions["CLanguageStandard"] = "-std=c11"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.C17, () => { options["CppLanguageStandard"] = "c17"; cmdLineOptions["CppLanguageStandard"] = "-std=c17"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.GNU_C99, () => { options["CLanguageStandard"] = "gnu99"; cmdLineOptions["CLanguageStandard"] = "-std=gnu99"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.GNU_C11, () => { options["CLanguageStandard"] = "gnu11"; cmdLineOptions["CLanguageStandard"] = "-std=gnu11"; }),
                    Options.Option(Options.Android.Compiler.CLanguageStandard.GNU_C17, () => { options["CLanguageStandard"] = "gnu17"; cmdLineOptions["CLanguageStandard"] = "-std=gnu17"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Default, () => { options["CppLanguageStandard"] = "cpp11"; cmdLineOptions["CppLanguageStandard"] = "-std=c++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp98, () => { options["CppLanguageStandard"] = "cpp98"; cmdLineOptions["CppLanguageStandard"] = "-std=c++98"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp11, () => { options["CppLanguageStandard"] = "cpp11"; cmdLineOptions["CppLanguageStandard"] = "-std=c++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp14, () => { options["CppLanguageStandard"] = "cpp14"; cmdLineOptions["CppLanguageStandard"] = "-std=c++14"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp17, () => { options["CppLanguageStandard"] = "cpp17"; cmdLineOptions["CppLanguageStandard"] = "-std=c++17"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.Cpp1z, () => { options["CppLanguageStandard"] = "cpp1z"; cmdLineOptions["CppLanguageStandard"] = "-std=c++1z"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp98, () => { options["CppLanguageStandard"] = "gnupp98"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++98"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp11, () => { options["CppLanguageStandard"] = "gnupp11"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++11"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp14, () => { options["CppLanguageStandard"] = "gnupp14"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++14"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp17, () => { options["CppLanguageStandard"] = "gnupp17"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++17"; }),
                    Options.Option(Options.Android.Compiler.CppLanguageStandard.GNU_Cpp1z, () => { options["CppLanguageStandard"] = "gnupp1z"; cmdLineOptions["CppLanguageStandard"] = "-std=gnu++1z"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.DataLevelLinking.Disable, () => { options["EnableDataLevelLinking"] = "false"; cmdLineOptions["EnableDataLevelLinking"] = RemoveLineTag; }),
                    Options.Option(Options.Android.Compiler.DataLevelLinking.Enable, () => { options["EnableDataLevelLinking"] = "true"; cmdLineOptions["EnableDataLevelLinking"] = "-fdata-sections"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.None, () => { options["DebugInformationFormat"] = "None"; cmdLineOptions["DebugInformationFormat"] = "-g0"; }),
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.FullDebug, () => { options["DebugInformationFormat"] = "FullDebug"; cmdLineOptions["DebugInformationFormat"] = "-g2 -gdwarf-2"; }),
                    Options.Option(Options.Android.Compiler.DebugInformationFormat.LineNumber, () => { options["DebugInformationFormat"] = "LineNumber"; cmdLineOptions["DebugInformationFormat"] = "-gline-tables-only"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Android.Compiler.Exceptions.Disable, () => { options["ExceptionHandling"] = "Disabled"; cmdLineOptions["ExceptionHandling"] = "-fno-exceptions"; }),
                    Options.Option(Options.Android.Compiler.Exceptions.Enable, () => { options["ExceptionHandling"] = "Enabled"; cmdLineOptions["ExceptionHandling"] = "-fexceptions"; }),
                    Options.Option(Options.Android.Compiler.Exceptions.UnwindTables, () => { options["ExceptionHandling"] = "UnwindTables"; cmdLineOptions["ExceptionHandling"] = "-funwind-tables"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.General.TreatWarningsAsErrors.Disable, () => { options["TreatWarningAsError"] = "false"; cmdLineOptions["TreatWarningAsError"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.General.TreatWarningsAsErrors.Enable, () => { options["TreatWarningAsError"] = "true"; cmdLineOptions["TreatWarningAsError"] = "-Werror"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.BufferSecurityCheck.Enable, () => { options["BufferSecurityCheck"] = "true"; cmdLineOptions["BufferSecurityCheck"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Compiler.BufferSecurityCheck.Disable, () => { options["BufferSecurityCheck"] = "false"; cmdLineOptions["BufferSecurityCheck"] = "-fstack-protector"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.FunctionLevelLinking.Disable, () => { options["EnableFunctionLevelLinking"] = "false"; cmdLineOptions["EnableFunctionLevelLinking"] = RemoveLineTag; }),
                    Options.Option(Options.Vc.Compiler.FunctionLevelLinking.Enable, () => { options["EnableFunctionLevelLinking"] = "true"; cmdLineOptions["EnableFunctionLevelLinking"] = "-ffunction-sections"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.OmitFramePointers.Disable, () => { options["OmitFramePointers"] = "false"; cmdLineOptions["OmitFramePointers"] = "-fno-omit-frame-pointer"; }),
                    Options.Option(Options.Vc.Compiler.OmitFramePointers.Enable, () => { options["OmitFramePointers"] = "true"; cmdLineOptions["OmitFramePointers"] = "-fomit-frame-pointer"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.Optimization.Disable, () => { options["Optimization"] = "Disabled"; cmdLineOptions["Optimization"] = "-O0"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.MinimizeSize, () => { options["Optimization"] = "MinSize"; cmdLineOptions["Optimization"] = "-Os"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.MaximizeSpeed, () => { options["Optimization"] = "MaxSpeed"; cmdLineOptions["Optimization"] = "-O2"; }),
                    Options.Option(Options.Vc.Compiler.Optimization.FullOptimization, () => { options["Optimization"] = "Full"; cmdLineOptions["Optimization"] = "-O3"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.MultiProcessorCompilation.Enable, () => { options["UseMultiToolTask"] = "true"; }),
                    Options.Option(Options.Vc.Compiler.MultiProcessorCompilation.Disable, () => { options["UseMultiToolTask"] = "false"; })
                );

                context.SelectOption
                (
                    Options.Option(Options.Vc.Compiler.RTTI.Disable, () => { options["RuntimeTypeInfo"] = "false"; cmdLineOptions["RuntimeTypeInfo"] = "-fno-rtti"; }),
                    Options.Option(Options.Vc.Compiler.RTTI.Enable, () => { options["RuntimeTypeInfo"] = "true"; cmdLineOptions["RuntimeTypeInfo"] = "-frtti"; })
                );
            }