Do not cleanup args.gn imports located in the output directory.
gn cleanup should keep files that are imported by args.gn and located
in the output directory.
Change-Id: I98116dd3f57765a5c160d7b82bd8104a747dd469
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/17360
Commit-Queue: Takuto Ikuta <tikuta@google.com>
Reviewed-by: Dirk Pranke <dpranke@google.com>
Reviewed-by: Takuto Ikuta <tikuta@google.com>
diff --git a/AUTHORS b/AUTHORS
index f7f74c1..956f1db 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -21,6 +21,7 @@
Vivaldi Technologies AS <*@vivaldi.com>
Yandex LLC <*@yandex-team.ru>
+Aleksei Khoroshilov <akhoroshilov@brave.com>
Alexis Menard <alexis.menard@intel.com>
Alfredo Mazzinghi <mzz.lrd@gmail.com>
Andrew Boyarshin <andrew.boyarshin@gmail.com>
diff --git a/src/gn/command_clean.cc b/src/gn/command_clean.cc
index 6dcc163..c4b80a9 100644
--- a/src/gn/command_clean.cc
+++ b/src/gn/command_clean.cc
@@ -44,13 +44,20 @@
return false;
}
- // Erase everything but (user-created) args.gn and the build.ninja files we
- // just wrote.
- const base::FilePath::CharType* remaining[]{
+ // Erase everything but (user-created) args.gn, its imports and the
+ // build.ninja files we just wrote.
+ std::vector<base::FilePath::StringType> remaining{
FILE_PATH_LITERAL("args.gn"),
FILE_PATH_LITERAL("build.ninja"),
FILE_PATH_LITERAL("build.ninja.d"),
};
+ for (const auto& f :
+ setup->build_settings().build_args().build_args_dependency_files()) {
+ if (IsStringInOutputDir(setup->build_settings().build_dir(), f.value())) {
+ remaining.push_back(UTF8ToFilePath(f.GetName()).value());
+ }
+ }
+
base::FileEnumerator traversal(
build_dir, false,
base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);