Hi,

The macro PROGRAM_template do not expand by first parse when reading the
makefile.
So the server_LIBS is not defined at all when calling macro
PROGRAM_template.
The $($(1)_LIBS) expand to nothing when called.

regards.
carl shen

2009/3/16 <[email protected]>

> Send Help-make mailing list submissions to
>        [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://lists.gnu.org/mailman/listinfo/help-make
> or, via email, send a message with subject or body 'help' to
>        [email protected]
>
> You can reach the person managing the list at
>        [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Help-make digest..."
>
>
> Today's Topics:
>
>   1. define issues (Appleton, R. (Rick))
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 16 Mar 2009 09:05:10 +0100
> From: "Appleton, R. (Rick)" <[email protected]>
> Subject: define issues
> To: <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> I'm having issues using defines in a Makefile.
> The following makefile:
>
> =====================
> PROGRAMS    = server client
>
> .PHONY: all
> all: $(PROGRAMS)
>
> server_LIBS := priv protocol
> client_LIBS := protocol
>
> define PROGRAM_template
>
> $(1):
>        cc $($(1)_LIBS) -o $$@
>
> endef
>
> $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
> =====================
>
> generates this output
> cc priv protocol -o server
> cc protocol -o client
>
> yet the following file
> =====================
> PROGRAMS    = server client
>
> .PHONY: all
> all: $(PROGRAMS)
>
> client_LIBS := protocol
>
> define PROGRAM_template
>
> # The following line has moved inside the define
> server_LIBS := priv protocol
>
> $(1):
>        cc $($(1)_LIBS) -o $$@
>
> endef
>
> $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
> =====================
>
> generates this (unexpected) output
> cc  -o server
> cc protocol -o client
>
> Does anyone have an idea why it might be doing this?
>
> My GNU Make version is 3.80
> This e-mail and its contents are subject to the DISCLAIMER at
> http://www.tno.nl/disclaimer/email.html
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://lists.gnu.org/pipermail/help-make/attachments/20090316/256949fe/attachment.html
>
> ------------------------------
>
> _______________________________________________
> Help-make mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/help-make
>
>
> End of Help-make Digest, Vol 76, Issue 7
> ****************************************
>
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to