]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
inmates: Generalize inmate makefile rules
authorJan Kiszka <jan.kiszka@siemens.com>
Wed, 30 Apr 2014 07:15:36 +0000 (09:15 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Wed, 30 Apr 2014 07:15:36 +0000 (09:15 +0200)
This reduces the required changes for adding a new inmate to extending
the INMATES list and creating a my-inmate-y object list.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
inmates/Makefile

index 95300dfb7a74cfa0e7aca399bc9104f4cb6a5be9..abb26867ca7b3acca01b239fd0ef16be2494369d 100644 (file)
@@ -24,31 +24,30 @@ endif
 OBJCOPYFLAGS := -O binary
 LDFLAGS += -T
 
+
 ifeq ($(SRCARCH), x86)
 KBUILD_CFLAGS += -m64
-always := tiny-demo.bin apic-demo.bin
+INMATES := tiny-demo.bin apic-demo.bin
 endif
 
 tiny-demo-y := tiny-demo.o header.o printk.o pm-timer.o
-targets += $(tiny-demo-y)
 
-TINY_DEMO_OBJS = $(addprefix $(obj)/,$(tiny-demo-y))
+apic-demo-y := apic-demo.o header.o printk.o pm-timer.o
 
-target += tiny-demo-linked.o
-$(obj)/tiny-demo-linked.o: $(src)/inmate.lds $(TINY_DEMO_OBJS)
-       $(call if_changed,ld)
 
+always := $(INMATES)
 
-apic-demo-y := apic-demo.o header.o printk.o pm-timer.o
-targets += $(apic-demo-y)
+# $(NAME-y) NAME-linked.o NAME.bin
+targets += $(foreach t,$(INMATES:.bin=-y),$($t)) $(INMATES:.bin=-linked.o) \
+               $(INMATES)
 
-APIC_DEMO_OBJS = $(addprefix $(obj)/,$(apic-demo-y))
+# prevent deleting intermediate files which would cause rebuilds
+.SECONDARY: $(addprefix $(obj)/,$(targets))
 
-target += apic-demo-linked.o
-$(obj)/apic-demo-linked.o: $(src)/inmate.lds $(APIC_DEMO_OBJS)
+# obj/NAME-linked.o: ... obj/$(NAME-y)
+.SECONDEXPANSION:
+$(obj)/%-linked.o: $(src)/inmate.lds $$(addprefix $$(obj)/,$$($$*-y))
        $(call if_changed,ld)
 
-
-targets += tiny-demo.bin apic-demo.bin
 $(obj)/%.bin: $(obj)/%-linked.o
        $(call if_changed,objcopy)