/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration(BuildConfigurationSelector) as DProjectConfiguration; commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution != null?EnsureCorrectPathSeparators(Project.ParentSolution.BaseDirectory) : "" }; BuiltObjects.Clear(); if (Compiler == null) { var targetBuildResult = new BuildResult(); targetBuildResult.AddError("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; return(targetBuildResult); } if (!Directory.Exists(AbsoluteObjectDirectory)) { Directory.CreateDirectory(AbsoluteObjectDirectory); } if (CanDoOneStepBuild) { return(DoOneStepBuild()); } else { return(DoStepByStepBuild()); } }
public static string TraceLogFile(DProject project) { if (project == null) { return(null); } var config = project.GetConfiguration(Ide.IdeApp.Workspace.ActiveConfiguration) as DProjectConfiguration; if (config == null || config.CompileTarget != DCompileTarget.Executable || !project.Compiler.HasProfilerSupport) { return(null); } string file = Path.Combine(config.OutputDirectory, "trace.log"); if (!File.Exists(file)) { return(null); } return(file); }
/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration(BuildConfigurationSelector) as DProjectConfiguration; if (Ide.IdeApp.Workbench == null) { _currentConfig = BuildConfig.Selector; } if (BuildConfig.Project != Project) { throw new InvalidOperationException("Wrong project configuration"); } commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution != null?EnsureCorrectPathSeparators(Project.ParentSolution.BaseDirectory) : "" }; BuiltObjects.Clear(); if (Compiler == null) { var targetBuildResult = new BuildResult(); targetBuildResult.AddError("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; _currentConfig = null; return(targetBuildResult); } var absDir = AbsoluteObjectDirectory(BuildConfig); if (!Directory.Exists(absDir)) { Directory.CreateDirectory(absDir); } BuildResult result; if (CanDoOneStepBuild) { result = DoOneStepBuild(); } else { result = DoStepByStepBuild(); } _currentConfig = null; return(result); }
public static string BuildOneStepBuildString(DProject prj, IEnumerable <string> builtObjects, ConfigurationSelector sel) { var cfg = prj.GetConfiguration(sel) as DProjectConfiguration; var target = prj.GetOutputFileName(sel); var rawArgumentString = new StringBuilder(); var s = GenAdditionalAttributes(prj.Compiler, cfg); if (!string.IsNullOrWhiteSpace(s)) { rawArgumentString.Append(s.Trim()).Append(' '); } rawArgumentString.Append(BuildArguments(cfg).OneStepBuildArguments.Trim()); if (!string.IsNullOrEmpty(cfg.ExtraCompilerArguments)) { rawArgumentString.Append(' ').Append(cfg.ExtraCompilerArguments.Trim()); } if (!string.IsNullOrEmpty(cfg.ExtraLinkerArguments)) { rawArgumentString.Append(' ').Append(PrefixedExtraLinkerFlags(cfg)); } var commonMacros = new PrjPathMacroProvider { slnPath = prj.ParentSolution != null?EnsureCorrectPathSeparators(prj.ParentSolution.BaseDirectory) : "" }; var res = FillInMacros(rawArgumentString.ToString(), new OneStepBuildArgumentMacroProvider { ObjectsStringPattern = prj.Compiler.ArgumentPatterns.ObjectFileLinkPattern, IncludesStringPattern = prj.Compiler.ArgumentPatterns.IncludePathPattern, SourceFiles = builtObjects, Includes = FillInMacros(prj.IncludePaths, commonMacros), Libraries = GetLibraries(cfg, prj.Compiler), RelativeTargetDirectory = cfg.OutputDirectory.ToRelative(prj.BaseDirectory), ObjectsDirectory = ObjectDirectory(cfg), TargetFile = target, }, commonMacros); return(res); }
/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration(BuildConfigurationSelector) as DProjectConfiguration; BuiltObjects.Clear(); if (Compiler == null) { var targetBuildResult = new BuildResult(); targetBuildResult.AddError("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; return(targetBuildResult); } if (Path.IsPathRooted(BuildConfig.ObjectDirectory)) { AbsoluteObjectDirectory = BuildConfig.ObjectDirectory; } else { AbsoluteObjectDirectory = Path.Combine(Project.BaseDirectory, EnsureCorrectPathSeparators(BuildConfig.ObjectDirectory)); } if (!Directory.Exists(AbsoluteObjectDirectory)) { Directory.CreateDirectory(AbsoluteObjectDirectory); } if (CanDoOneStepBuild) { return(DoOneStepBuild()); } else { return(DoStepByStepBuild()); } }
/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration (BuildConfigurationSelector) as DProjectConfiguration; commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution.BaseDirectory }; BuiltObjects.Clear (); if (Compiler == null) { var targetBuildResult = new BuildResult (); targetBuildResult.AddError ("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; return targetBuildResult; } if (Path.IsPathRooted (BuildConfig.ObjectDirectory)) AbsoluteObjectDirectory = BuildConfig.ObjectDirectory; else AbsoluteObjectDirectory = Path.Combine (Project.BaseDirectory, EnsureCorrectPathSeparators (BuildConfig.ObjectDirectory)); if (!Directory.Exists (AbsoluteObjectDirectory)) Directory.CreateDirectory (AbsoluteObjectDirectory); if (CanDoOneStepBuild) return DoOneStepBuild (); else return DoStepByStepBuild (); }
public static string TraceLogFile(DProject project) { if(project == null) return null; var config = project.GetConfiguration(Ide.IdeApp.Workspace.ActiveConfiguration) as DProjectConfiguration; if (config == null || config.CompileTarget != DCompileTarget.Executable || project.Compiler.HasProfilerSupport == false) { return null; } string file = Path.Combine(config.OutputDirectory, "trace.log"); if(File.Exists(file) == false) return null; return file; }