gn: Include source files outside the source root for Xcode workspace
This change unifies Xcode workspaces with projects for other IDEs.
BUG=n/a
Review-Url: https://codereview.chromium.org/2489673004
Cr-Original-Commit-Position: refs/heads/master@{#431856}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: b9f57fffd94bdfe264ddaf220dfecac603075540
diff --git a/tools/gn/xcode_writer.cc b/tools/gn/xcode_writer.cc
index e6b66d5..bce396b 100644
--- a/tools/gn/xcode_writer.cc
+++ b/tools/gn/xcode_writer.cc
@@ -191,9 +191,9 @@
root_target_name, ninja_extra_args,
build_settings, target_os);
- workspace.CreateSourcesProject(all_targets, build_settings->build_dir(),
- attributes, source_path, config_name,
- target_os);
+ workspace.CreateSourcesProject(
+ all_targets, build_settings->build_dir(), attributes, source_path,
+ build_settings->root_path_utf8(), config_name, target_os);
return workspace.WriteFiles(build_settings, err);
}
@@ -321,14 +321,12 @@
const SourceDir& root_build_dir,
const PBXAttributes& attributes,
const std::string& source_path,
+ const std::string& absolute_source_path,
const std::string& config_name,
TargetOsType target_os) {
std::vector<SourceFile> sources;
for (const Target* target : targets) {
for (const SourceFile& source : target->sources()) {
- if (source.is_system_absolute())
- continue;
-
if (IsStringInOutputDir(root_build_dir, source.value()))
continue;
@@ -347,7 +345,8 @@
SourceDir source_dir("//");
for (const SourceFile& source : sources) {
- std::string source_file = RebasePath(source.value(), source_dir);
+ std::string source_file =
+ RebasePath(source.value(), source_dir, absolute_source_path);
sources_for_indexing->AddSourceFile(source_file);
}
diff --git a/tools/gn/xcode_writer.h b/tools/gn/xcode_writer.h
index 5148788..87a7d58 100644
--- a/tools/gn/xcode_writer.h
+++ b/tools/gn/xcode_writer.h
@@ -82,6 +82,7 @@
const SourceDir& root_build_dir,
const PBXAttributes& attributes,
const std::string& source_path,
+ const std::string& absolute_source_path,
const std::string& config_name,
TargetOsType target_os);