Ah, nevermind, I just saw this.
http://stackoverflow.com/questions/13260396/gnu-make-3-81-eval-function-not-working

--
David.


David Hart
Limnu --- https://limnu.com

On Sat, Nov 28, 2015 at 12:21 PM, David Hart <dah...@limnu.com> wrote:

>
> Hi, I've run into this problem twice (because I forgot the first time) and
> spent some time debugging my code only to find I'd followed the gnu make
> manual's example, which appears to have a bug in it. Or, eval() or the
> define directive has a bug, I'm not sure which. (Appendix A in the manual
> appears to suggest that a define should work identically with our without
> an equals sign.)
>
> The example for eval() in section 8.9 has the line:
>
> define PROGRAM_template =
>
> But I have never seen this work, and it does run for me if I remove the
> "=" (equals sign).
>
> I'm currently on OSX, but I'm "pretty sure" I've seen this same behavior
> on both Linux and Cygwin.
>
>
> Here's an example makefile, pruned down from the manual's example:
>
> PROGRAMS    = server client
> server_OBJS = server server_priv server_access
> client_OBJS = client client_api client_mem
>
> .PHONY: all
> all: $(PROGRAMS)
>
> define PROGRAM_template =
>  ALL_OBJS += $$($(1)_OBJS)
> endef
>
> $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
> $(info "all objs:" $(ALL_OBJS))
>
>
> > make
> "all objs:"
> make: *** No rule to make target `server', needed by `all'.  Stop.
>
>
>
> PROGRAMS    = server client
> server_OBJS = server server_priv server_access
> client_OBJS = client client_api client_mem
>
> .PHONY: all
> all: $(PROGRAMS)
>
> define PROGRAM_template
>  ALL_OBJS += $$($(1)_OBJS)
> endef
>
> $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
> $(info "all objs:" $(ALL_OBJS))
>
>
> > make
> "all objs:" server server_priv server_access client client_api client_mem
> make: *** No rule to make target `server', needed by `all'.  Stop.
>
>
> David Hart
> Limnu --- https://limnu.com
>
_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to