Example #1
0
 /// <summary>
 /// Cleans the build system cache and intermediate results.
 /// </summary>
 public static void Clean()
 {
     using (new ProfileEventScope("Clean"))
     {
         var graph = new TaskGraph(Globals.Root);
         graph.CleanCache();
     }
 }
Example #2
0
        /// <summary>
        /// Cleans the build system cache and intermediate results.
        /// </summary>
        public static void Clean()
        {
            using (new ProfileEventScope("Clean"))
            {
                // Clear task graph cache
                var       project = Globals.Project;
                TaskGraph graph;
                if (project == null)
                {
                    graph = new TaskGraph(Globals.Root);
                    graph.CleanCache();
                    return;
                }
                graph = new TaskGraph(project.ProjectFolderPath);
                graph.CleanCache();

                // Pick targets to clean
                var customBuildTargets = Configuration.BuildTargets;
                var projectTargets     = GetProjectTargets(project);
                var targets            = customBuildTargets == null ? projectTargets : projectTargets.Where(target => customBuildTargets.Contains(target.Name)).ToArray();
                foreach (var target in targets)
                {
                    // Pick configurations to clean
                    TargetConfiguration[] configurations = Configuration.BuildConfigurations;
                    if (configurations != null)
                    {
                        foreach (var configuration in configurations)
                        {
                            if (!target.Configurations.Contains(configuration))
                            {
                                throw new Exception(string.Format("Target {0} does not support {1} configuration.", target.Name, configuration));
                            }
                        }
                    }
                    else
                    {
                        configurations = target.Configurations;
                    }

                    foreach (var configuration in configurations)
                    {
                        // Pick platforms to clean
                        TargetPlatform[] platforms = Configuration.BuildPlatforms;
                        if (platforms != null)
                        {
                            foreach (var platform in platforms)
                            {
                                if (!target.Platforms.Contains(platform))
                                {
                                    throw new Exception(string.Format("Target {0} does not support {1} platform.", target.Name, platform));
                                }
                            }
                        }
                        else
                        {
                            platforms = target.Platforms;
                        }

                        foreach (var targetPlatform in platforms)
                        {
                            if (!Platform.BuildPlatform.CanBuildPlatform(targetPlatform))
                            {
                                continue;
                            }

                            // Pick architectures to build
                            TargetArchitecture[] architectures = Configuration.BuildArchitectures;
                            if (architectures != null)
                            {
                                foreach (var e in architectures)
                                {
                                    if (!target.Architectures.Contains(e))
                                    {
                                        throw new Exception(string.Format("Target {0} does not support {1} architecture.", target.Name, e));
                                    }
                                }
                            }
                            else
                            {
                                architectures = target.GetArchitectures(targetPlatform);
                            }

                            foreach (var architecture in architectures)
                            {
                                if (!Platform.IsPlatformSupported(targetPlatform, architecture))
                                {
                                    continue;
                                }
                                //throw new Exception(string.Format("Platform {0} {1} is not supported.", targetPlatform, architecture));

                                var platform           = Platform.GetPlatform(targetPlatform);
                                var toolchain          = platform.GetToolchain(architecture);
                                var targetBuildOptions = GetBuildOptions(target, toolchain.Platform, toolchain, toolchain.Architecture, configuration, project.ProjectFolderPath, string.Empty);

                                // Delete all intermediate files
                                var intermediateFolder = new DirectoryInfo(targetBuildOptions.IntermediateFolder);
                                if (intermediateFolder.Exists)
                                {
                                    Log.Info("Removing: " + targetBuildOptions.IntermediateFolder);
                                    CleanDirectory(intermediateFolder);
                                }
                            }
                        }
                    }
                }
            }
        }