Jacob's wording relating to make was "makefile problems related to the
building of a c program". I fully support that.
I don't.
Let me explain why.
I am trying to build a C program.
As part of that process, I need to debug the following hunk of GNU make
code:
$$(foreach i,$$($(1)_LDAT_indexes),@$$(foreach j,$$(wordlist $$(word $$i,$$($(1)_LDAT_starts)),$$(word $$i,$$($(1)_LDAT_ends)),$$($(1)_LDAT_list)),$$(call $(1),$$j) ; )$$(LDAT_nl))
This is absolutely in the path I use to end up causing make to invoke a C
compiler. I'm pretty sure, though, that it hasn't got a thing to do with
C.[*]
Header file and source code organisation should be (is?) very much
topical, and 'make' pertaining to C is fundamentally tied to how
source files depend upon one another.
I don't think so; see above.
I for one do not know where to ask "How do I setup the makefile to
resolve a cyclic dependency between P.h and Q.h?" or "'make' does not
trigger a build of X.c when I changed file Y.h. How do I determine
what all source file X.c depends upon?", or "make triggers rebuilding
source that is up to date" and so on. Answers to such questions can
come only from experience and most definitely /not/ found in the
standard.
If I were running into stuff like that, I'd probably ask in
comp.unix.programmer, if I were using make on a UNIX system... and if
I weren't, I'd probably want a group where people were likely to be using
the same "make" I was.
-s
[*] It is part of the solution to the general question "what do you do if you
want to expand a macro for each item in a large list, but the resulting
expansion may exceed the allowed length of a shell command, but you don't
want to start a separate shell for each item in the list".