Exemplo n.º 1
0
        protected void LoadProjectFile(BuildFile projectsFile)
        {
            _isPopulating = true;

            foreach (var p in projectsFile.Projects)
            {
                var pa = new ProjectAdapter(p)
                {
                    BuildFile = this
                };
                Projects.Add(pa);

                UpdateHashes(pa);
            }
            _isPopulating = false;

            foreach (var p in Projects)
            {
                foreach (var depName in p.Dependencies)
                {
                    var dep = GetProjectByName(depName);
                    if (dep == null)
                    {
                        continue;
                    }

                    dep.ActualDependants.GetInternalList().Add(p);
                    p.ActualDependencies.GetInternalList().Add(dep);
                }
            }
        }
Exemplo n.º 2
0
 void UpdateHashes(ProjectAdapter pa)
 {
     // get the reverse hash so that we can
     // go through the actual hash and remove
     // the changed entry
     RemoveHashes(pa);
     AddHashes(pa);
 }
Exemplo n.º 3
0
        public ProjectAdapter CreateProject(string projectName)
        {
            var pa = new ProjectAdapter(projectName)
            {
                BuildFile = this
            };

            return(pa);
        }
Exemplo n.º 4
0
        void AddHashes(ProjectAdapter pa)
        {
            if (!_hash.ContainsKey(pa.Name))
            {
                var lst = new List <ProjectAdapter>()
                {
                    pa
                };
                _hash.Add(pa.Name, lst);
            }
            else
            {
                _hash[pa.Name].Add(pa);
            }

            _reverseHash.Add(pa, pa.Name);
        }
Exemplo n.º 5
0
        void RemoveHashes(ProjectAdapter pa)
        {
            if (_reverseHash.ContainsKey(pa))
            {
                var revHashStr = _reverseHash[pa];

                if (_hash.ContainsKey(revHashStr))
                {
                    _hash[revHashStr].Remove(pa);
                }

                if (_hash[revHashStr].Count == 0)
                {
                    _hash.Remove(revHashStr);
                }

                _reverseHash.Remove(pa);
            }
        }
Exemplo n.º 6
0
        public ProjectAdapter ImportProject(string fileName, string sccRoot)
        {
            var filename = fileName;
            var ext      = Path.GetExtension(filename);

            BaseVsProject vsProject = null;

            switch (ext.ToLower())
            {
            case ".vcproj":
                vsProject = VcProject.Parse(filename);
                break;

            case ".csproj":
                vsProject = CSharpProject.Parse(filename);
                break;

            case ".dsp":
                vsProject = VisualCpp6Project.Parse(filename);
                break;

            default:
                return(null);
            }

            if (vsProject == null)
            {
                return(null);
            }

            if (!sccRoot.EndsWith("/"))
            {
                sccRoot = sccRoot + "/";
            }

            var project = new ProjectAdapter(new Project(), false)
            {
                BuildFile = this,
                Name      = vsProject.Name,
                Path      = GetPathRootedAtBuildsFile(vsProject.Filepath),
                SccPath   = sccRoot + GetPathRootedAtBuildsFile(Path.GetDirectoryName(vsProject.Filepath)).Replace("\\", "/")
            };

            // check if project path is relative to mproj file

            switch (vsProject.Framework)
            {
            case ProjectFramework.VisualCpp2003:
                project.Framework = "vc71";
                break;

            case ProjectFramework.VisualCpp2005:
                project.Framework = "vc8";
                break;

            case ProjectFramework.VisualCpp6:
                project.Framework = "vc6";
                break;

            case ProjectFramework.VisualCs2005:
                project.Framework = "cs";
                break;

            case ProjectFramework.VisualCs2003:
                project.Framework = "vc71";
                break;
            }

            bool bConfigurationFound = false;
            var  projectOutput       = new ProjectOutputAdapter();

            foreach (var conf in vsProject.Configurations)
            {
                if (conf.Name.ToLower().Contains("release"))
                {
                    project.BuildOpt = "\"" + conf.Name + "\" " + conf.Platform;
                    projectOutput.PathList.Add(Path.Combine(GetPathRootedAtBuildsFile(conf.OutputPath), "*.*"));
                    bConfigurationFound              = true;
                    project.Target.PlatformName      = conf.Platform;
                    project.Target.ConfigurationName = conf.Name;
                    break;
                }
            }

            if (!bConfigurationFound)
            {
                if (vsProject.Framework == ProjectFramework.VisualCpp6)
                {
                    projectOutput.PathList.Add(
                        Path.Combine(GetPathRootedAtBuildsFile(Path.GetDirectoryName(vsProject.Filepath)),
                                     @"release\*.*"));
                }
                else
                {
                    projectOutput.PathList.Add(
                        Path.Combine(GetPathRootedAtBuildsFile(Path.GetDirectoryName(vsProject.Filepath)), "*.*"));
                }
            }

            project.OutputInformation.Add(projectOutput);

            return(project);
        }