mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
zig cc: fix handling of -MM flag
Clang docs say: > Like -MMD, but also implies -E and writes to stdout by default. Previously, Zig handled this option by forwarding it directly to Clang, and disabling depfiles. However this did not adhere to Clang's documented behavior of these flags. Now, in addition to being forwarded directly to Clang, `-MM` also sets c_out_mode = .preprocessor, just like `-E`. Another issue I noticed is that Zig did not recognize the aliases for -MG, -MM, or -MMD. The aliases are now recognized.
This commit is contained in:
parent
98b24aa47f
commit
041212a41c
@ -46,7 +46,7 @@ flagpd1("M"),
|
|||||||
.{
|
.{
|
||||||
.name = "MM",
|
.name = "MM",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
.zig_equivalent = .dep_file,
|
.zig_equivalent = .dep_file_mm,
|
||||||
.pd1 = true,
|
.pd1 = true,
|
||||||
.pd2 = false,
|
.pd2 = false,
|
||||||
.psl = false,
|
.psl = false,
|
||||||
@ -1878,7 +1878,7 @@ flagpsl("MT"),
|
|||||||
.{
|
.{
|
||||||
.name = "print-missing-file-dependencies",
|
.name = "print-missing-file-dependencies",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
.zig_equivalent = .other,
|
.zig_equivalent = .dep_file,
|
||||||
.pd1 = false,
|
.pd1 = false,
|
||||||
.pd2 = true,
|
.pd2 = true,
|
||||||
.psl = false,
|
.psl = false,
|
||||||
@ -1998,7 +1998,7 @@ flagpsl("MT"),
|
|||||||
.{
|
.{
|
||||||
.name = "user-dependencies",
|
.name = "user-dependencies",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
.zig_equivalent = .other,
|
.zig_equivalent = .dep_file_mm,
|
||||||
.pd1 = false,
|
.pd1 = false,
|
||||||
.pd2 = true,
|
.pd2 = true,
|
||||||
.psl = false,
|
.psl = false,
|
||||||
@ -2022,7 +2022,7 @@ flagpsl("MT"),
|
|||||||
.{
|
.{
|
||||||
.name = "write-dependencies",
|
.name = "write-dependencies",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
.zig_equivalent = .other,
|
.zig_equivalent = .dep_file,
|
||||||
.pd1 = false,
|
.pd1 = false,
|
||||||
.pd2 = true,
|
.pd2 = true,
|
||||||
.psl = false,
|
.psl = false,
|
||||||
@ -2030,7 +2030,7 @@ flagpsl("MT"),
|
|||||||
.{
|
.{
|
||||||
.name = "write-user-dependencies",
|
.name = "write-user-dependencies",
|
||||||
.syntax = .flag,
|
.syntax = .flag,
|
||||||
.zig_equivalent = .other,
|
.zig_equivalent = .dep_file,
|
||||||
.pd1 = false,
|
.pd1 = false,
|
||||||
.pd2 = true,
|
.pd2 = true,
|
||||||
.psl = false,
|
.psl = false,
|
||||||
|
|||||||
@ -1192,6 +1192,12 @@ fn buildOutputType(
|
|||||||
disable_c_depfile = true;
|
disable_c_depfile = true;
|
||||||
try clang_argv.appendSlice(it.other_args);
|
try clang_argv.appendSlice(it.other_args);
|
||||||
},
|
},
|
||||||
|
.dep_file_mm => { // -MM
|
||||||
|
// "Like -MMD, but also implies -E and writes to stdout by default"
|
||||||
|
c_out_mode = .preprocessor;
|
||||||
|
disable_c_depfile = true;
|
||||||
|
try clang_argv.appendSlice(it.other_args);
|
||||||
|
},
|
||||||
.framework_dir => try framework_dirs.append(it.only_arg),
|
.framework_dir => try framework_dirs.append(it.only_arg),
|
||||||
.framework => try frameworks.append(it.only_arg),
|
.framework => try frameworks.append(it.only_arg),
|
||||||
.nostdlibinc => want_native_include_dirs = false,
|
.nostdlibinc => want_native_include_dirs = false,
|
||||||
@ -3055,6 +3061,7 @@ pub const ClangArgIterator = struct {
|
|||||||
lib_dir,
|
lib_dir,
|
||||||
mcpu,
|
mcpu,
|
||||||
dep_file,
|
dep_file,
|
||||||
|
dep_file_mm,
|
||||||
framework_dir,
|
framework_dir,
|
||||||
framework,
|
framework,
|
||||||
nostdlibinc,
|
nostdlibinc,
|
||||||
|
|||||||
@ -268,6 +268,10 @@ const known_options = [_]KnownOpt{
|
|||||||
.name = "MD",
|
.name = "MD",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file",
|
||||||
},
|
},
|
||||||
|
.{
|
||||||
|
.name = "write-dependencies",
|
||||||
|
.ident = "dep_file",
|
||||||
|
},
|
||||||
.{
|
.{
|
||||||
.name = "MV",
|
.name = "MV",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file",
|
||||||
@ -284,18 +288,30 @@ const known_options = [_]KnownOpt{
|
|||||||
.name = "MG",
|
.name = "MG",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file",
|
||||||
},
|
},
|
||||||
|
.{
|
||||||
|
.name = "print-missing-file-dependencies",
|
||||||
|
.ident = "dep_file",
|
||||||
|
},
|
||||||
.{
|
.{
|
||||||
.name = "MJ",
|
.name = "MJ",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file",
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.name = "MM",
|
.name = "MM",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file_mm",
|
||||||
|
},
|
||||||
|
.{
|
||||||
|
.name = "user-dependencies",
|
||||||
|
.ident = "dep_file_mm",
|
||||||
},
|
},
|
||||||
.{
|
.{
|
||||||
.name = "MMD",
|
.name = "MMD",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file",
|
||||||
},
|
},
|
||||||
|
.{
|
||||||
|
.name = "write-user-dependencies",
|
||||||
|
.ident = "dep_file",
|
||||||
|
},
|
||||||
.{
|
.{
|
||||||
.name = "MP",
|
.name = "MP",
|
||||||
.ident = "dep_file",
|
.ident = "dep_file",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user