test1:
	touch server.c server_priv.c server_access.c
	touch client.c client_api.c client_mem.c

test2: all

PROGRAMS    = server client

server_OBJS = server.o server_priv.o server_access.o

client_OBJS = client.o client_api.o client_mem.o

# Everything after this is generic

.PHONY: all
all: $(PROGRAMS)

define PROGRAM_template
 $(1): $$($(1)_OBJS)
 ALL_OBJS += $$($(1)_OBJS)
endef

$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))

$(PROGRAMS):
	echo $^ -o $@

clean:
	rm -f $(ALL_OBJS) $(PROGRAMS)