Esempio n. 1
0
        /// <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());
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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());
            }
        }
Esempio n. 6
0
        /// <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 ();
        }
Esempio n. 7
0
        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;
        }