Since c3b39d0654c3 "[SV 62514] Honor command line interface flags", make incorrectly filters oute multiple -C arguments with the same directoy string:
$ cd /test && make -C a -C a make: Entering directory '/test/a' $ make -C /test/a -C /test/b -C /test/a make: Entering directory '/test/b' Skip -C when filtering out duplicate options to fix this. --- src/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 6a129768093c..f2069bb9ed11 100644 --- a/src/main.c +++ b/src/main.c @@ -3247,9 +3247,10 @@ decode_switches (int argc, const char **argv, enum variable_origin origin) } /* Filter out duplicate options. + Directory changes are cumulative. Order matters for warnings. Allow duplicate makefiles for backward compatibility. */ - if (cs->c != 'f' && cs->c != WARN_OPT) + if (cs->c != 'f' && cs->c != WARN_OPT && cs->c != 'C') { unsigned int k; for (k = 0; k < sl->idx; ++k) -- 2.39.5