Avoid trailing slashes for directory in compilation database This is breaking some clients which don't handle these. Other tools seem to be omitting trailing slashes in compilation database as well. Change-Id: I6e74e06df75c13ba5f783ee1d3bd953e2db9fa28 Reviewed-on: https://gn-review.googlesource.com/2640 Reviewed-by: Roland McGrath <mcgrathr@google.com> Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/tools/gn/compile_commands_writer.cc b/tools/gn/compile_commands_writer.cc index 6e31b23..0a545e8 100644 --- a/tools/gn/compile_commands_writer.cc +++ b/tools/gn/compile_commands_writer.cc
@@ -205,7 +205,8 @@ compile_commands->append("["); compile_commands->append(kPrettyPrintLineEnding); bool first = true; - auto build_dir = build_settings->GetFullPath(build_settings->build_dir()); + auto build_dir = build_settings->GetFullPath(build_settings->build_dir()) + .StripTrailingSeparators(); std::vector<OutputFile> tool_outputs; // Prevent reallocation in loop. EscapeOptions opts;
diff --git a/tools/gn/compile_commands_writer_unittest.cc b/tools/gn/compile_commands_writer_unittest.cc index 57c89dc..b162ba5 100644 --- a/tools/gn/compile_commands_writer_unittest.cc +++ b/tools/gn/compile_commands_writer_unittest.cc
@@ -63,13 +63,13 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc -o " "obj/foo/bar.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input2.cc -o " "obj/foo/bar.input2.o\"\r\n" " }\r\n" @@ -79,13 +79,13 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc -o " "obj/foo/bar.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input2.cc -o " "obj/foo/bar.input2.o\"\n" " }\n" @@ -113,19 +113,19 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc -o " "obj/foo/bar.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input2.cc -o " "obj/foo/bar.input2.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input3.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input3.cc -o " "obj/foo/libshlib.input3.o\"\r\n" " }\r\n" @@ -135,19 +135,19 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc -o " "obj/foo/bar.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input2.cc -o " "obj/foo/bar.input2.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input3.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input3.cc -o " "obj/foo/libshlib.input3.o\"\n" " }\n" @@ -175,25 +175,25 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc -o " "obj/foo/bar.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input2.cc -o " "obj/foo/bar.input2.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input3.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input3.cc -o " "obj/foo/libshlib.input3.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input4.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input4.cc -o " "obj/foo/libstlib.input4.o\"\r\n" " }\r\n" @@ -203,25 +203,25 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc -o " "obj/foo/bar.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input2.cc -o " "obj/foo/bar.input2.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input3.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input3.cc -o " "obj/foo/libshlib.input3.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input4.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input4.cc -o " "obj/foo/libstlib.input4.o\"\n" " }\n" @@ -309,13 +309,13 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc -o " "withpch/obj/foo/no_pch_target.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.c\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"cc ../../foo/input2.c -std=c99 -o " "withpch/obj/foo/no_pch_target.input2.o\"\r\n" " }\r\n" @@ -325,13 +325,13 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc -o " "withpch/obj/foo/no_pch_target.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.c\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"cc ../../foo/input2.c -std=c99 -o " "withpch/obj/foo/no_pch_target.input2.o\"\n" " }\n" @@ -364,14 +364,14 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc " "/Fpwithpch/obj/foo/pch_target_cc.pch /Yubuild/precompile.h -o " "withpch/obj/foo/pch_target.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.c\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"cc ../../foo/input2.c " "/Fpwithpch/obj/foo/pch_target_c.pch /Yubuild/precompile.h -o " "withpch/obj/foo/pch_target.input2.o\"\r\n" @@ -382,14 +382,14 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc " "/Fpwithpch/obj/foo/pch_target_cc.pch /Yubuild/precompile.h -o " "withpch/obj/foo/pch_target.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.c\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"cc ../../foo/input2.c " "/Fpwithpch/obj/foo/pch_target_c.pch /Yubuild/precompile.h -o " "withpch/obj/foo/pch_target.input2.o\"\n" @@ -458,13 +458,13 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc -o " "withpch/obj/foo/no_pch_target.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.c\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"cc ../../foo/input2.c -std=c99 -o " "withpch/obj/foo/no_pch_target.input2.o\"\r\n" " }\r\n" @@ -474,13 +474,13 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc -o " "withpch/obj/foo/no_pch_target.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.c\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"cc ../../foo/input2.c -std=c99 -o " "withpch/obj/foo/no_pch_target.input2.o\"\n" " }\n" @@ -513,14 +513,14 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.cc\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"c++ ../../foo/input1.cc -include " "withpch/obj/build/pch_target.precompile.h-cc -o " "withpch/obj/foo/pch_target.input1.o\"\r\n" " },\r\n" " {\r\n" " \"file\": \"../../foo/input2.c\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"cc ../../foo/input2.c -std=c99 -include " "withpch/obj/build/pch_target.precompile.h-c -o " "withpch/obj/foo/pch_target.input2.o\"\r\n" @@ -531,14 +531,14 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.cc\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"c++ ../../foo/input1.cc -include " "withpch/obj/build/pch_target.precompile.h-cc -o " "withpch/obj/foo/pch_target.input1.o\"\n" " },\n" " {\n" " \"file\": \"../../foo/input2.c\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"cc ../../foo/input2.c -std=c99 -include " "withpch/obj/build/pch_target.precompile.h-c -o " "withpch/obj/foo/pch_target.input2.o\"\n" @@ -570,7 +570,7 @@ "[\r\n" " {\r\n" " \"file\": \"../../foo/input1.c\",\r\n" - " \"directory\": \"out/Debug/\",\r\n" + " \"directory\": \"out/Debug\",\r\n" " \"command\": \"cc ../../foo/input1.c -DCONFIG=\\\"/config\\\" " "-o obj/foo/bar.input1.o\"\r\n" " }\r\n" @@ -580,7 +580,7 @@ "[\n" " {\n" " \"file\": \"../../foo/input1.c\",\n" - " \"directory\": \"out/Debug/\",\n" + " \"directory\": \"out/Debug\",\n" " \"command\": \"cc ../../foo/input1.c -DCONFIG=\\\"/config\\\" " "-o obj/foo/bar.input1.o\"\n" " }\n"