public override string GetCompilerArguments(IStandardProject superProject, IStandardProject project, ISourceFile file) { var result = string.Empty; var settings = superProject.GetToolchainSettings <GccToolchainSettings>(); result += "-Wall -c "; if (settings.CompileSettings.DebugInformation) { result += "-ggdb3 "; } if (file == null || file.Extension == ".cpp") { switch (settings.CompileSettings.CppLanguageStandard) { case CppLanguageStandard.Cpp98: result += "-std=c++98 "; break; case CppLanguageStandard.Cpp03: result += "-std=c++03 "; break; case CppLanguageStandard.Cpp11: result += "-std=c++11 "; break; case CppLanguageStandard.Cpp14: result += "-std=c++14 "; break; case CppLanguageStandard.Cpp17: result += "-std=c++17 "; break; case CppLanguageStandard.Gnu11: result += "-std=gnu++11 "; break; case CppLanguageStandard.Gnu14: result += "-std=gnu++14 "; break; default: break; } if (!settings.CompileSettings.Rtti) { result += "-fno-rtti "; } if (!settings.CompileSettings.Exceptions) { result += "-fno-exceptions "; } } if (file == null || file.Extension == ".c") { switch (settings.CompileSettings.CLanguageStandard) { case CLanguageStandard.C89: result += "-std=c89 "; break; case CLanguageStandard.C99: result += "-std=c99 "; break; case CLanguageStandard.C11: result += "-std=c11 "; break; } } switch (settings.CompileSettings.Fpu) { case FPUSupport.Soft: result += "-mfpu=fpv4-sp-d16 -mfloat-abi=softfp "; break; case FPUSupport.Hard: result += "-mfpu=fpv4-sp-d16 -mfloat-abi=hard "; break; } switch (settings.CompileSettings.Fpu) { case FPUSupport.Soft: { result += "-mfpu=fpv4-sp-d16 -mfloat-abi=softfp "; } break; case FPUSupport.Hard: { result += "-mfpu=fpv4-sp-d16 -mfloat-abi=hard "; } break; } // TODO make this an option. result += "-ffunction-sections -fdata-sections "; switch (settings.CompileSettings.Optimization) { case OptimizationLevel.None: { result += "-O0 "; } break; case OptimizationLevel.Debug: { result += "-O0 "; } break; case OptimizationLevel.Level1: { result += "-O1 "; } break; case OptimizationLevel.Level2: { result += "-O2 "; } break; case OptimizationLevel.Level3: { result += "-O3 "; } break; case OptimizationLevel.Size: { result += "-Os "; } break; case OptimizationLevel.Speed: { result += "-Ofast "; } break; } result += settings.CompileSettings.CustomFlags + " "; // Referenced includes var referencedIncludes = project.GetReferencedIncludes(); referencedIncludes.Select(s => result += $"-I\"{ Path.Combine(project.CurrentDirectory, s)}\" ").ToList(); // global includes var globalIncludes = superProject.GetGlobalIncludes(); globalIncludes.Select(s => result += $"-I\"{s}\" ").ToList(); // includes project.Includes.Select(s => result += $"-I\"{ Path.Combine(project.CurrentDirectory, s.Value)}\" ").ToList(); var referencedDefines = project.GetReferencedDefines(); referencedDefines.Select(s => result += $"-D{s} ").ToList(); var toolchainIncludes = GetToolchainIncludes(file); toolchainIncludes.Select(s => result += $"-isystem\"{s}\" ").ToList(); // global includes var globalDefines = superProject.GetGlobalDefines(); globalDefines.Select(s => result += $"-D{s} ").ToList(); project.Defines.Select(s => result += $"-D{s.Value} ").ToList(); superProject.ToolChainArguments.Select(s => result += $" {s}").ToList(); superProject.CompilerArguments.Select(s => result += $" {s}").ToList(); // TODO factor out this code from here! if (file != null) { switch (file.Extension) { case ".c": { superProject.CCompilerArguments.Select(s => result += $" {s}"); } break; case ".cpp": { superProject.CppCompilerArguments.Select(s => result += $" {s}"); } break; } } return(result); }
public override string GetCompilerArguments(IStandardProject superProject, IStandardProject project, ISourceFile file) { var result = string.Empty; var settings = superProject.GetToolchainSettings <GccToolchainSettings>(); result += "-Wall -c -fshort-enums "; if (settings.CompileSettings.DebugInformation) { result += "-g "; } if (file == null || file.Extension == ".cpp") { switch (settings.CompileSettings.CppLanguageStandard) { case CppLanguageStandard.Cpp98: result += "-std=c++98 "; break; case CppLanguageStandard.Cpp03: result += "-std=c++03 "; break; case CppLanguageStandard.Cpp11: result += "-std=c++11 "; break; case CppLanguageStandard.Cpp14: result += "-std=c++14 "; break; case CppLanguageStandard.Cpp17: result += "-std=c++17 "; break; case CppLanguageStandard.Gnu11: result += "-std=gnu++11 "; break; case CppLanguageStandard.Gnu14: result += "-std=gnu++14 "; break; default: break; } } if (file == null || file.Extension == ".c") { switch (settings.CompileSettings.CLanguageStandard) { case CLanguageStandard.C89: result += "-std=c89 "; break; case CLanguageStandard.C99: result += "-std=c99 "; break; case CLanguageStandard.C11: result += "-std=c11 "; break; } } switch (settings.CompileSettings.Fpu) { case FPUSupport.Soft: result += "-mfpu=fpv4-sp-d16 -mfloat-abi=soft "; break; case FPUSupport.Hard: result += "-mfpu=fpv4-sp-d16 -mfloat-abi=hard "; break; } // TODO remove dependency on file? if (file != null) { if (file.Extension == ".cpp") { if (!settings.CompileSettings.Rtti) { result += "-fno-rtti "; } if (!settings.CompileSettings.Exceptions) { result += "-fno-exceptions "; } } } switch (settings.CompileSettings.Fpu) { case FPUSupport.Soft: { result += "-mfpu=fpv4-sp-d16 -mfloat-abi=soft "; } break; case FPUSupport.Hard: { result += "-mfpu=fpv4-sp-d16 -mfloat-abi=hard "; } break; } // TODO make this an option. result += "-ffunction-sections -fdata-sections "; switch (settings.CompileSettings.Optimization) { case OptimizationLevel.None: { result += "-O0 "; } break; case OptimizationLevel.Debug: { result += "-Og "; } break; case OptimizationLevel.Level1: { result += "-O1 "; } break; case OptimizationLevel.Level2: { result += "-O2 "; } break; case OptimizationLevel.Level3: { result += "-O3 "; } break; case OptimizationLevel.Size: { result += "-Os "; } break; case OptimizationLevel.Speed: { result += "-Ofast "; } break; } result += settings.CompileSettings.CustomFlags + " "; // toolchain includes // Referenced includes var referencedIncludes = project.GetReferencedIncludes(); foreach (var include in referencedIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // global includes var globalIncludes = superProject.GetGlobalIncludes(); foreach (var include in globalIncludes) { result += string.Format("-I\"{0}\" ", include); } // includes foreach (var include in project.Includes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include.Value)); } var referencedDefines = project.GetReferencedDefines(); foreach (var define in referencedDefines) { result += string.Format("-D{0} ", define); } // global includes var globalDefines = superProject.GetGlobalDefines(); foreach (var define in globalDefines) { result += string.Format("-D{0} ", define); } foreach (var define in project.Defines) { result += string.Format("-D{0} ", define.Value); } foreach (var arg in superProject.ToolChainArguments) { result += string.Format(" {0}", arg); } foreach (var arg in superProject.CompilerArguments) { result += string.Format(" {0}", arg); } // TODO factor out this code from here! if (file != null) { switch (file.Extension) { case ".c": { foreach (var arg in superProject.CCompilerArguments) { result += string.Format(" {0}", arg); } } break; case ".cpp": { foreach (var arg in superProject.CppCompilerArguments) { result += string.Format(" {0}", arg); } } break; } } return(result); }
public override string GetCompilerArguments(IStandardProject superProject, IStandardProject project, ISourceFile file) { var result = string.Empty; //var settings = GetSettings(project).CompileSettings; var settings = GetSettings(superProject); result += "-Wall -c "; if (settings.CompileSettings.DebugInformation) { result += "-g "; } // TODO remove dependency on file? if (file != null) { if (file.Extension == ".cpp") { if (!settings.CompileSettings.Rtti) { result += "-fno-rtti "; } if (!settings.CompileSettings.Exceptions) { result += "-fno-exceptions "; } result += "-std=c++14 "; } } // TODO make this an option. result += "-ffunction-sections -fdata-sections "; switch (settings.CompileSettings.Optimization) { case OptimizationLevel.None: { result += "-O0 "; } break; case OptimizationLevel.Debug: { result += "-Og "; } break; case OptimizationLevel.Level1: { result += "-O1 "; } break; case OptimizationLevel.Level2: { result += "-O2 "; } break; case OptimizationLevel.Level3: { result += "-O3 "; } break; } switch (settings.CompileSettings.OptimizationPreference) { case OptimizationPreference.Size: { result += "-Os "; } break; case OptimizationPreference.Speed: { result += "-Ofast "; } break; } result += settings.CompileSettings.CustomFlags + " "; // toolchain includes // Referenced includes var referencedIncludes = project.GetReferencedIncludes(); foreach (var include in referencedIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // global includes var globalIncludes = superProject.GetGlobalIncludes(); foreach (var include in globalIncludes) { result += string.Format("-I\"{0}\" ", include); } // public includes foreach (var include in project.PublicIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // includes foreach (var include in project.Includes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include.Value)); } var referencedDefines = project.GetReferencedDefines(); foreach (var define in referencedDefines) { result += string.Format("-D{0} ", define); } // global includes var globalDefines = superProject.GetGlobalDefines(); foreach (var define in globalDefines) { result += string.Format("-D{0} ", define); } foreach (var define in project.Defines) { result += string.Format("-D{0} ", define.Value); } if (Platform.PlatformIdentifier == PlatformID.Win32NT) { result += string.Format("-D{0} ", "WIN32NT"); } foreach (var arg in superProject.ToolChainArguments) { result += string.Format(" {0}", arg); } foreach (var arg in superProject.CompilerArguments) { result += string.Format(" {0}", arg); } // TODO factor out this code from here! if (file != null) { switch (file.Extension) { case ".c": { foreach (var arg in superProject.CCompilerArguments) { result += string.Format(" {0}", arg); } } break; case ".cpp": { foreach (var arg in superProject.CppCompilerArguments) { result += string.Format(" {0}", arg); } } break; } } return(result); }
public override string GetCompilerArguments(IStandardProject superProject, IStandardProject project, ISourceFile file) { var result = string.Empty; //var settings = GetSettings(project).CompileSettings; var settings = GetSettings(superProject); result += "-Wall -c "; if (settings.CompileSettings.DebugInformation) { result += "-g "; } // TODO remove dependency on file? if (file != null) { if (file.Extension == ".cpp") { if (!settings.CompileSettings.Rtti) { result += "-fno-rtti "; } if (!settings.CompileSettings.Exceptions) { result += "-fno-exceptions "; } result += "-std=c++14 "; } } // TODO make this an option. result += "-ffunction-sections -fdata-sections "; switch (settings.CompileSettings.Optimization) { case OptimizationLevel.None: { result += "-O0 "; } break; case OptimizationLevel.Debug: { result += "-Og "; } break; case OptimizationLevel.Level1: { result += "-O1 "; } break; case OptimizationLevel.Level2: { result += "-O2 "; } break; case OptimizationLevel.Level3: { result += "-O3 "; } break; } switch (settings.CompileSettings.OptimizationPreference) { case OptimizationPreference.Size: { result += "-Os "; } break; case OptimizationPreference.Speed: { result += "-Ofast "; } break; } result += settings.CompileSettings.CustomFlags + " "; // toolchain includes // Referenced includes var referencedIncludes = project.GetReferencedIncludes(); foreach (var include in referencedIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // global includes var globalIncludes = superProject.GetGlobalIncludes(); foreach (var include in globalIncludes) { result += string.Format("-I\"{0}\" ", include); } // public includes foreach (var include in project.PublicIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // includes foreach (var include in project.Includes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include.Value)); } var referencedDefines = project.GetReferencedDefines(); foreach (var define in referencedDefines) { result += string.Format("-D{0} ", define); } // global includes var globalDefines = superProject.GetGlobalDefines(); foreach (var define in globalDefines) { result += string.Format("-D{0} ", define); } foreach (var define in project.Defines) { result += string.Format("-D{0} ", define.Value); } if (Platform.PlatformIdentifier == PlatformID.Win32NT) { result += string.Format("-D{0} ", "WIN32NT"); } foreach (var arg in superProject.ToolChainArguments) { result += string.Format(" {0}", arg); } foreach (var arg in superProject.CompilerArguments) { result += string.Format(" {0}", arg); } // TODO factor out this code from here! if (file != null) { switch (file.Extension) { case ".c": { foreach (var arg in superProject.CCompilerArguments) { result += string.Format(" {0}", arg); } } break; case ".cpp": { foreach (var arg in superProject.CppCompilerArguments) { result += string.Format(" {0}", arg); } } break; } } return result; }
public override string GetCompilerArguments(IStandardProject superProject, IStandardProject project, ISourceFile file) { var result = string.Empty; //var settings = GetSettings(project).CompileSettings; var settings = GetSettings(superProject); result += "-Wall -c -fshort-enums "; if (settings.CompileSettings.DebugInformation) { result += "-ggdb3 "; } if (file == null || file.Extension == ".cpp") { switch (settings.CompileSettings.CppLanguageStandard) { case CppLanguageStandard.Cpp98: result += "-std=c++98 "; break; case CppLanguageStandard.Cpp03: result += "-std=c++03 "; break; case CppLanguageStandard.Cpp11: result += "-std=c++11 "; break; case CppLanguageStandard.Cpp14: result += "-std=c++14 "; break; case CppLanguageStandard.Cpp17: result += "-std=c++17 "; break; default: break; } } if (file == null || file.Extension == ".c") { switch (settings.CompileSettings.CLanguageStandard) { case CLanguageStandard.C89: result += "-std=c89 "; break; case CLanguageStandard.C99: result += "-std=c99 "; break; case CLanguageStandard.C11: result += "-std=c11 "; break; } } switch (settings.CompileSettings.Fpu) { case FPUSupport.Soft: result += "-mfpu=fpv4-sp-d16 -mfloat-abi=softfp "; break; case FPUSupport.Hard: result += "-mfpu=fpv4-sp-d16 -mfloat-abi=hard "; break; } // TODO remove dependency on file? if (file != null) { if (file.Extension == ".cpp") { if (!settings.CompileSettings.Rtti) { result += "-fno-rtti "; } if (!settings.CompileSettings.Exceptions) { result += "-fno-exceptions "; } } } switch (settings.CompileSettings.Fpu) { case FPUSupport.Soft: { result += "-mfpu=fpv4-sp-d16 -mfloat-abi=softfp "; } break; case FPUSupport.Hard: { result += "-mfpu=fpv4-sp-d16 -mfloat-abi=hard "; } break; } // TODO make this an option. result += "-ffunction-sections -fdata-sections "; switch (settings.CompileSettings.Optimization) { case OptimizationLevel.None: { result += "-O0 "; } break; case OptimizationLevel.Debug: { result += "-O2 "; } break; case OptimizationLevel.Level1: { result += "-O1 "; } break; case OptimizationLevel.Level2: { result += "-O2 "; } break; case OptimizationLevel.Level3: { result += "-O3 "; } break; } switch (settings.CompileSettings.OptimizationPreference) { case OptimizationPreference.Size: { result += "-Os "; } break; case OptimizationPreference.Speed: { result += "-Ofast "; } break; } result += settings.CompileSettings.CustomFlags + " "; // Referenced includes var referencedIncludes = project.GetReferencedIncludes(); foreach (var include in referencedIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // global includes var globalIncludes = superProject.GetGlobalIncludes(); foreach (var include in globalIncludes) { result += string.Format("-I\"{0}\" ", include); } // public includes foreach (var include in project.PublicIncludes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include)); } // includes foreach (var include in project.Includes) { result += string.Format("-I\"{0}\" ", Path.Combine(project.CurrentDirectory, include.Value)); } var referencedDefines = project.GetReferencedDefines(); foreach (var define in referencedDefines) { result += string.Format("-D{0} ", define); } var toolchainIncludes = GetToolchainIncludes(file); foreach (var include in toolchainIncludes) { result += string.Format("-isystem\"{0}\" ", include); } // global includes var globalDefines = superProject.GetGlobalDefines(); foreach (var define in globalDefines) { result += string.Format("-D{0} ", define); } foreach (var define in project.Defines) { result += string.Format("-D{0} ", define.Value); } foreach (var arg in superProject.ToolChainArguments) { result += string.Format(" {0}", arg); } foreach (var arg in superProject.CompilerArguments) { result += string.Format(" {0}", arg); } // TODO factor out this code from here! if (file != null) { switch (file.Extension) { case ".c": { foreach (var arg in superProject.CCompilerArguments) { result += string.Format(" {0}", arg); } } break; case ".cpp": { foreach (var arg in superProject.CppCompilerArguments) { result += string.Format(" {0}", arg); } } break; } } return result; }