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
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to