Example #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());
            }
        }
Example #2
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);
        }
Example #3
0
        /// <summary>
        /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider
        /// </summary>
        public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider)
        {
            var returnArgString = RawArgumentString;

            var macros = new Dictionary <string, string> ();

            MacroProvider.ManipulateMacros(macros);

            string tempId = "";
            char   c      = '\0';

            for (int i = RawArgumentString.Length - 1; i >= 0; i--)
            {
                c = RawArgumentString [i];

                if (char.IsLetterOrDigit(c) || c == '_')
                {
                    tempId = c + tempId;
                }
                else if (c == '$' && tempId.Length > 0)
                {
                    string surrogate = "";

                    //ISSUE: Replace unknown macros with ""?
                    macros.TryGetValue(tempId, out surrogate);

                    returnArgString = returnArgString.Substring(0, i) + surrogate + returnArgString.Substring(i + tempId.Length + 1);                       // "+1" because of the initially skipped '$'

                    tempId = "";
                }
                else
                {
                    tempId = "";
                }
            }

            return(returnArgString);
        }
Example #4
0
        /// <summary>
        /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider
        /// </summary>
        public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider)
        {
            var returnArgString = RawArgumentString;

            string tempId = "";
            char   c      = '\0';

            for (int i = RawArgumentString.Length - 1; i >= 0; i--)
            {
                c = RawArgumentString[i];

                if (char.IsLetterOrDigit(c) || c == '_')
                {
                    tempId = c + tempId;
                }
                else if (c == '$' && tempId.Length > 0)
                {
                    var replacement = MacroProvider.Replace(tempId);

                    //ISSUE: Replace undefined variables with nothing?
                    if (replacement == tempId || replacement == null)
                    {
                        replacement = "";
                    }

                    returnArgString = returnArgString.Substring(0, i) + replacement + returnArgString.Substring(i + tempId.Length + 1);                    // "+1" because of the initially skipped '$'

                    tempId = "";
                }
                else
                {
                    tempId = "";
                }
            }

            return(returnArgString);
        }
Example #5
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 ();
        }
Example #6
0
        /// <summary>
        /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider
        /// </summary>
        public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider)
        {
            var returnArgString = RawArgumentString;

            var macros = new Dictionary<string, string> ();

            MacroProvider.ManipulateMacros (macros);

            string tempId = "";
            char c = '\0';
            for (int i = RawArgumentString.Length - 1; i >= 0; i--) {
                c = RawArgumentString [i];

                if (char.IsLetterOrDigit (c) || c == '_')
                    tempId = c + tempId;
                else if (c == '$' && tempId.Length > 0) {
                    string surrogate = "";

                    //ISSUE: Replace unknown macros with ""?
                    macros.TryGetValue (tempId, out surrogate);

                    returnArgString = returnArgString.Substring (0, i) + surrogate + returnArgString.Substring (i + tempId.Length + 1); // "+1" because of the initially skipped '$'

                    tempId = "";
                } else
                    tempId = "";
            }

            return returnArgString;
        }
Example #7
0
        /// <summary>
        /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider
        /// </summary>
        public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider)
        {
            var returnArgString = RawArgumentString;

            string tempId = "";
            char c='\0';
            for (int i = RawArgumentString.Length - 1; i >= 0; i--)
            {
                c = RawArgumentString[i];

                if (char.IsLetterOrDigit(c) || c == '_')
                    tempId = c+tempId;
                else if (c == '$' && tempId.Length>0)
                {
                    var replacement = MacroProvider.Replace(tempId);

                    //ISSUE: Replace undefined variables with nothing?
                    if (replacement == tempId || replacement == null)
                        replacement = "";

                    returnArgString = returnArgString.Substring(0, i) + replacement + returnArgString.Substring(i + tempId.Length +1); // "+1" because of the initially skipped '$'

                    tempId = "";
                }
                else
                    tempId = "";
            }

            return returnArgString;
        }
Example #8
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;
        }