Bryan Drewery
2015-10-15 05:05:10 UTC
Does anyone consider 'make -n -n' a thing for top-level builds?
We have this ${_+_} thing in Makefiles that used to expand to '+' if you
gave '-n -n'. This was so just 1 '-n' would just show what the
top-level Makefile would do:
~/svn/clean2 # make -n includes
cd /root/svn/clean2; PATH=/sbin:/bin:/usr/sbin:/usr/bin make -m
/root/svn/clean2/share/mk -f Makefile.inc1 TARGET=amd64
TARGET_ARCH=amd64 includes
Versus the more expected (at least for bmake) -n behavior of traversing
sub-makes:
~/svn/clean2 # make -n -n includes
===> lib (includes)
===> lib/csu (includes)
===> lib/csu/amd64 (includes)
===> lib/libcompiler_rt (includes)
===> lib/libc (includes)
===> lib/libc/tests (includes)
===> lib/libc/tests/tls_dso (includes)
===> lib/libc/tests/c063 (includes)
etc...
Note the actual output may be off due to local changes, but the point is
that -n with bmake is documented to run sub-makes with -n as well, so it
calls right down the chain showing all build commands without taking any
real actions.
Bmake added a '-N' flag that essentially does the hack that we've put
into our top-level Makefile - it doesn't run sub-makes.
So having said all of that, the ${_+_} never expands anymore since
r251748 (June 2013). The act of it working in top-level has only been
fixed since r288391 (September 2015).
Given it was broken for this long period I assume no one uses '-n -n' or
even knew about it.
I would like to remove it (-n -n and _+_) and just use the (bmake)
documented -n and -N flags and use '+' everywhere appropriate. Note that
we use .MAKE in some targets that achieves largely the same thing, but
many sub-make calls don't have a .MAKE and lack a proper '+' to recurse
in Makefile.inc1.
We have this ${_+_} thing in Makefiles that used to expand to '+' if you
gave '-n -n'. This was so just 1 '-n' would just show what the
top-level Makefile would do:
~/svn/clean2 # make -n includes
cd /root/svn/clean2; PATH=/sbin:/bin:/usr/sbin:/usr/bin make -m
/root/svn/clean2/share/mk -f Makefile.inc1 TARGET=amd64
TARGET_ARCH=amd64 includes
Versus the more expected (at least for bmake) -n behavior of traversing
sub-makes:
~/svn/clean2 # make -n -n includes
===> lib (includes)
===> lib/csu (includes)
===> lib/csu/amd64 (includes)
===> lib/libcompiler_rt (includes)
===> lib/libc (includes)
===> lib/libc/tests (includes)
===> lib/libc/tests/tls_dso (includes)
===> lib/libc/tests/c063 (includes)
etc...
Note the actual output may be off due to local changes, but the point is
that -n with bmake is documented to run sub-makes with -n as well, so it
calls right down the chain showing all build commands without taking any
real actions.
Bmake added a '-N' flag that essentially does the hack that we've put
into our top-level Makefile - it doesn't run sub-makes.
So having said all of that, the ${_+_} never expands anymore since
r251748 (June 2013). The act of it working in top-level has only been
fixed since r288391 (September 2015).
Given it was broken for this long period I assume no one uses '-n -n' or
even knew about it.
I would like to remove it (-n -n and _+_) and just use the (bmake)
documented -n and -N flags and use '+' everywhere appropriate. Note that
we use .MAKE in some targets that achieves largely the same thing, but
many sub-make calls don't have a .MAKE and lack a proper '+' to recurse
in Makefile.inc1.
--
Regards,
Bryan Drewery
Regards,
Bryan Drewery