At LibreOffice we are migrating our build system from a customized dmake to gmake. The design of the build system used involved a fairly intensive use of $(eval and $(call to implement an 'Object-Oriented' kind of system.
This is nice when things works, but it is pretty hard to find bug in the build system itself... So, to help internally to debug these problems I wrote a patch based on make 3.82, to add --debug=c and --debug=e which activate tracing for $(call and $(eval respectively the patch can be found at http://cgit.freedesktop.org/libreoffice/contrib/dev-tools/plain/misc_patches/make-3.82.lo_trace.patch?id=a4f03f17f42ded70e6a3c49cf4e9a90eaf3c12ca In the spirit of 'pushing upstream', I submit this patch here, under GPLv3+ terms. Regards, Norbert Thiebaud Below is an example of output produced by this patch: [...] ### call $(gb_Library_set_include) --> ### arg 0 for call $(gb_Library_set_include) is 'gb_Library_set_include' ### arg 1 for call $(gb_Library_set_include) is 'msword' ### arg 2 for call $(gb_Library_set_include) is ' -I/lo/libo/clone/writer/sw/source/core/inc -I/lo/libo/clone/writer/sw/source/ui/inc -I/lo/libo/clone/writer/sw/source/filter/inc -I/lo/libo/clone/writer/sw/inc/pch -I/lo/libo/clone/writer/sw/inc -I/lo/libo/solver/340/unxlngx6.pro/workdir/inc/sw/sdi -I/lo/libo/solver/340/unxlngx6.pro/workdir/Misc/sw/ $(INCLUDE) -I/lo/libo/solver/340/unxlngx6.pro/inc/offuh -I/lo/libo/solver/340/unxlngx6.pro/inc/sw ' ### call $(gb_Library_get_linktargetname) --> ### arg 0 for call $(gb_Library_get_linktargetname) is 'gb_Library_get_linktargetname' ### arg 1 for call $(gb_Library_get_linktargetname) is 'msword' ### arg 2 for call $(gb_Library_get_linktargetname) is implicit ### call $(gb_Library_get_filename) --> ### arg 0 for call $(gb_Library_get_filename) is 'gb_Library_get_filename' ### arg 1 for call $(gb_Library_get_filename) is 'msword' ### arg 2 for call $(gb_Library_get_filename) is implicit ### call to $(gb_Library_get_filename) expended into libmswordlo.so ### call $(gb_Library_get_filename) <-- ### call to $(gb_Library_get_linktargetname) expended into Library/libmswordlo.so ### call $(gb_Library_get_linktargetname) <-- ### call $(gb_LinkTarget_set_include) --> ### arg 0 for call $(gb_LinkTarget_set_include) is 'gb_LinkTarget_set_include' ### arg 1 for call $(gb_LinkTarget_set_include) is 'Library/libmswordlo.so' ### arg 2 for call $(gb_LinkTarget_set_include) is ' -I/lo/libo/clone/writer/sw/source/core/inc -I/lo/libo/clone/writer/sw/source/ui/inc -I/lo/libo/clone/writer/sw/source/filter/inc -I/lo/libo/clone/writer/sw/inc/pch -I/lo/libo/clone/writer/sw/inc -I/lo/libo/solver/340/unxlngx6.pro/workdir/inc/sw/sdi -I/lo/libo/solver/340/unxlngx6.pro/workdir/Misc/sw/ $(INCLUDE) -I/lo/libo/solver/340/unxlngx6.pro/inc/offuh -I/lo/libo/solver/340/unxlngx6.pro/inc/sw ' ### arg 3 for call $(gb_LinkTarget_set_include) is '' ### call $(gb_LinkTarget_get_headers_target) --> ### arg 0 for call $(gb_LinkTarget_get_headers_target) is 'gb_LinkTarget_get_headers_target' ### arg 1 for call $(gb_LinkTarget_get_headers_target) is 'Library/libmswordlo.so' ### arg 2 for call $(gb_LinkTarget_get_headers_target) is implicit ### arg 3 for call $(gb_LinkTarget_get_headers_target) is implicit ### call to $(gb_LinkTarget_get_headers_target) expended into /lo/libo/solver/340/unxlngx6.pro/workdir/Headers/Library/libmswordlo.so ### call $(gb_LinkTarget_get_headers_target) <-- ### call $(gb_LinkTarget_get_target) --> ### arg 0 for call $(gb_LinkTarget_get_target) is 'gb_LinkTarget_get_target' ### arg 1 for call $(gb_LinkTarget_get_target) is 'Library/libmswordlo.so' ### arg 2 for call $(gb_LinkTarget_get_target) is implicit ### arg 3 for call $(gb_LinkTarget_get_target) is implicit ### call to $(gb_LinkTarget_get_target) expended into /lo/libo/solver/340/unxlngx6.pro/workdir/LinkTarget/Library/libmswordlo.so ### call $(gb_LinkTarget_get_target) <-- ### call $(gb_LinkTarget_get_dep_target) --> ### arg 0 for call $(gb_LinkTarget_get_dep_target) is 'gb_LinkTarget_get_dep_target' ### arg 1 for call $(gb_LinkTarget_get_dep_target) is 'Library/libmswordlo.so' ### arg 2 for call $(gb_LinkTarget_get_dep_target) is implicit ### arg 3 for call $(gb_LinkTarget_get_dep_target) is implicit ### call to $(gb_LinkTarget_get_dep_target) expended into /lo/libo/solver/340/unxlngx6.pro/workdir/Dep/LinkTarget/Library/libmswordlo.so.d ### call $(gb_LinkTarget_get_dep_target) <-- ### call to $(gb_LinkTarget_set_include) expended into /lo/libo/solver/340/unxlngx6.pro/workdir/Headers/Library/libmswordlo.so /lo/libo/solver/340/unxlngx6.pro/workdir/LinkTarget/Library/libmswordlo.so : INCLUDE := -I/lo/libo/clone/writer/sw/source/core/inc -I/lo/libo/clone/writer/sw/source/ui/inc -I/lo/libo/clone/writer/sw/source/filter/inc -I/lo/libo/clone/writer/sw/inc/pch -I/lo/libo/clone/writer/sw/inc -I/lo/libo/solver/340/unxlngx6.pro/workdir/inc/sw/sdi -I/lo/libo/solver/340/unxlngx6.pro/workdir/Misc/sw/ $(INCLUDE) -I/lo/libo/solver/340/unxlngx6.pro/inc/offuh -I/lo/libo/solver/340/unxlngx6.pro/inc/sw ifeq (T,T) /lo/libo/solver/340/unxlngx6.pro/workdir/Dep/LinkTarget/Library/libmswordlo.so.d : INCLUDE := -I/lo/libo/clone/writer/sw/source/core/inc -I/lo/libo/clone/writer/sw/source/ui/inc -I/lo/libo/clone/writer/sw/source/filter/inc -I/lo/libo/clone/writer/sw/inc/pch -I/lo/libo/clone/writer/sw/inc -I/lo/libo/solver/340/unxlngx6.pro/workdir/inc/sw/sdi -I/lo/libo/solver/340/unxlngx6.pro/workdir/Misc/sw/ $(INCLUDE) -I/lo/libo/solver/340/unxlngx6.pro/inc/offuh -I/lo/libo/solver/340/unxlngx6.pro/inc/sw endif ### call $(gb_LinkTarget_set_include) <-- ### call to $(gb_Library_set_include) expended into /lo/libo/solver/340/unxlngx6.pro/workdir/Headers/Library/libmswordlo.so /lo/libo/solver/340/unxlngx6.pro/workdir/LinkTarget/Library/libmswordlo.so : INCLUDE := -I/lo/libo/clone/writer/sw/source/core/inc -I/lo/libo/clone/writer/sw/source/ui/inc -I/lo/libo/clone/writer/sw/source/filter/inc -I/lo/libo/clone/writer/sw/inc/pch -I/lo/libo/clone/writer/sw/inc -I/lo/libo/solver/340/unxlngx6.pro/workdir/inc/sw/sdi -I/lo/libo/solver/340/unxlngx6.pro/workdir/Misc/sw/ $(INCLUDE) -I/lo/libo/solver/340/unxlngx6.pro/inc/offuh -I/lo/libo/solver/340/unxlngx6.pro/inc/sw ifeq (T,T) /lo/libo/solver/340/unxlngx6.pro/workdir/Dep/LinkTarget/Library/libmswordlo.so.d : INCLUDE := -I/lo/libo/clone/writer/sw/source/core/inc -I/lo/libo/clone/writer/sw/source/ui/inc -I/lo/libo/clone/writer/sw/source/filter/inc -I/lo/libo/clone/writer/sw/inc/pch -I/lo/libo/clone/writer/sw/inc -I/lo/libo/solver/340/unxlngx6.pro/workdir/inc/sw/sdi -I/lo/libo/solver/340/unxlngx6.pro/workdir/Misc/sw/ $(INCLUDE) -I/lo/libo/solver/340/unxlngx6.pro/inc/offuh -I/lo/libo/solver/340/unxlngx6.pro/inc/sw endif ### call $(gb_Library_set_include) <-- _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make