| author | |
| committer | |
| log | 041212a41cfaf029dc3eb9740467b721c76f406c |
| tree | 2eac3522d4a0238ddd5d74a142d8f0193e2aecf7 |
| parent | 98b24aa47f98d9c70d1e152228ac89dd41e0f637 |
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.3 files changed, 29 insertions(+), 6 deletions(-)
src/clang_options_data.zig+5-5| ... | @@ -46,7 +46,7 @@ flagpd1("M"), | ... | @@ -46,7 +46,7 @@ flagpd1("M"), |
| 46 | .{ | 46 | .{ |
| 47 | .name = "MM", | 47 | .name = "MM", |
| 48 | .syntax = .flag, | 48 | .syntax = .flag, |
| 49 | .zig_equivalent = .dep_file, | 49 | .zig_equivalent = .dep_file_mm, |
| 50 | .pd1 = true, | 50 | .pd1 = true, |
| 51 | .pd2 = false, | 51 | .pd2 = false, |
| 52 | .psl = false, | 52 | .psl = false, |
| ... | @@ -1878,7 +1878,7 @@ flagpsl("MT"), | ... | @@ -1878,7 +1878,7 @@ flagpsl("MT"), |
| 1878 | .{ | 1878 | .{ |
| 1879 | .name = "print-missing-file-dependencies", | 1879 | .name = "print-missing-file-dependencies", |
| 1880 | .syntax = .flag, | 1880 | .syntax = .flag, |
| 1881 | .zig_equivalent = .other, | 1881 | .zig_equivalent = .dep_file, |
| 1882 | .pd1 = false, | 1882 | .pd1 = false, |
| 1883 | .pd2 = true, | 1883 | .pd2 = true, |
| 1884 | .psl = false, | 1884 | .psl = false, |
| ... | @@ -1998,7 +1998,7 @@ flagpsl("MT"), | ... | @@ -1998,7 +1998,7 @@ flagpsl("MT"), |
| 1998 | .{ | 1998 | .{ |
| 1999 | .name = "user-dependencies", | 1999 | .name = "user-dependencies", |
| 2000 | .syntax = .flag, | 2000 | .syntax = .flag, |
| 2001 | .zig_equivalent = .other, | 2001 | .zig_equivalent = .dep_file_mm, |
| 2002 | .pd1 = false, | 2002 | .pd1 = false, |
| 2003 | .pd2 = true, | 2003 | .pd2 = true, |
| 2004 | .psl = false, | 2004 | .psl = false, |
| ... | @@ -2022,7 +2022,7 @@ flagpsl("MT"), | ... | @@ -2022,7 +2022,7 @@ flagpsl("MT"), |
| 2022 | .{ | 2022 | .{ |
| 2023 | .name = "write-dependencies", | 2023 | .name = "write-dependencies", |
| 2024 | .syntax = .flag, | 2024 | .syntax = .flag, |
| 2025 | .zig_equivalent = .other, | 2025 | .zig_equivalent = .dep_file, |
| 2026 | .pd1 = false, | 2026 | .pd1 = false, |
| 2027 | .pd2 = true, | 2027 | .pd2 = true, |
| 2028 | .psl = false, | 2028 | .psl = false, |
| ... | @@ -2030,7 +2030,7 @@ flagpsl("MT"), | ... | @@ -2030,7 +2030,7 @@ flagpsl("MT"), |
| 2030 | .{ | 2030 | .{ |
| 2031 | .name = "write-user-dependencies", | 2031 | .name = "write-user-dependencies", |
| 2032 | .syntax = .flag, | 2032 | .syntax = .flag, |
| 2033 | .zig_equivalent = .other, | 2033 | .zig_equivalent = .dep_file, |
| 2034 | .pd1 = false, | 2034 | .pd1 = false, |
| 2035 | .pd2 = true, | 2035 | .pd2 = true, |
| 2036 | .psl = false, | 2036 | .psl = false, |
src/main.zig+7| ... | @@ -1192,6 +1192,12 @@ fn buildOutputType( | ... | @@ -1192,6 +1192,12 @@ fn buildOutputType( |
| 1192 | disable_c_depfile = true; | 1192 | disable_c_depfile = true; |
| 1193 | try clang_argv.appendSlice(it.other_args); | 1193 | try clang_argv.appendSlice(it.other_args); |
| 1194 | }, | 1194 | }, |
| 1195 | .dep_file_mm => { // -MM | ||
| 1196 | // "Like -MMD, but also implies -E and writes to stdout by default" | ||
| 1197 | c_out_mode = .preprocessor; | ||
| 1198 | disable_c_depfile = true; | ||
| 1199 | try clang_argv.appendSlice(it.other_args); | ||
| 1200 | }, | ||
| 1195 | .framework_dir => try framework_dirs.append(it.only_arg), | 1201 | .framework_dir => try framework_dirs.append(it.only_arg), |
| 1196 | .framework => try frameworks.append(it.only_arg), | 1202 | .framework => try frameworks.append(it.only_arg), |
| 1197 | .nostdlibinc => want_native_include_dirs = false, | 1203 | .nostdlibinc => want_native_include_dirs = false, |
| ... | @@ -3055,6 +3061,7 @@ pub const ClangArgIterator = struct { | ... | @@ -3055,6 +3061,7 @@ pub const ClangArgIterator = struct { |
| 3055 | lib_dir, | 3061 | lib_dir, |
| 3056 | mcpu, | 3062 | mcpu, |
| 3057 | dep_file, | 3063 | dep_file, |
| 3064 | dep_file_mm, | ||
| 3058 | framework_dir, | 3065 | framework_dir, |
| 3059 | framework, | 3066 | framework, |
| 3060 | nostdlibinc, | 3067 | nostdlibinc, |
tools/update_clang_options.zig+17-1| ... | @@ -268,6 +268,10 @@ const known_options = [_]KnownOpt{ | ... | @@ -268,6 +268,10 @@ const known_options = [_]KnownOpt{ |
| 268 | .name = "MD", | 268 | .name = "MD", |
| 269 | .ident = "dep_file", | 269 | .ident = "dep_file", |
| 270 | }, | 270 | }, |
| 271 | .{ | ||
| 272 | .name = "write-dependencies", | ||
| 273 | .ident = "dep_file", | ||
| 274 | }, | ||
| 271 | .{ | 275 | .{ |
| 272 | .name = "MV", | 276 | .name = "MV", |
| 273 | .ident = "dep_file", | 277 | .ident = "dep_file", |
| ... | @@ -284,18 +288,30 @@ const known_options = [_]KnownOpt{ | ... | @@ -284,18 +288,30 @@ const known_options = [_]KnownOpt{ |
| 284 | .name = "MG", | 288 | .name = "MG", |
| 285 | .ident = "dep_file", | 289 | .ident = "dep_file", |
| 286 | }, | 290 | }, |
| 291 | .{ | ||
| 292 | .name = "print-missing-file-dependencies", | ||
| 293 | .ident = "dep_file", | ||
| 294 | }, | ||
| 287 | .{ | 295 | .{ |
| 288 | .name = "MJ", | 296 | .name = "MJ", |
| 289 | .ident = "dep_file", | 297 | .ident = "dep_file", |
| 290 | }, | 298 | }, |
| 291 | .{ | 299 | .{ |
| 292 | .name = "MM", | 300 | .name = "MM", |
| 293 | .ident = "dep_file", | 301 | .ident = "dep_file_mm", |
| 302 | }, | ||
| 303 | .{ | ||
| 304 | .name = "user-dependencies", | ||
| 305 | .ident = "dep_file_mm", | ||
| 294 | }, | 306 | }, |
| 295 | .{ | 307 | .{ |
| 296 | .name = "MMD", | 308 | .name = "MMD", |
| 297 | .ident = "dep_file", | 309 | .ident = "dep_file", |
| 298 | }, | 310 | }, |
| 311 | .{ | ||
| 312 | .name = "write-user-dependencies", | ||
| 313 | .ident = "dep_file", | ||
| 314 | }, | ||
| 299 | .{ | 315 | .{ |
| 300 | .name = "MP", | 316 | .name = "MP", |
| 301 | .ident = "dep_file", | 317 | .ident = "dep_file", |