# the COPYING file in the top-level directory.
#
-LINUXINCLUDE := -I$(src)
+INMATES_LIB = $(src)/lib/$(SRCARCH)
+export INMATES_LIB
+
+INCLUDES := -I$(INMATES_LIB) \
+ -I$(src)/../hypervisor/arch/$(SRCARCH)/include \
+ -I$(src)/../hypervisor/include
+
+LINUXINCLUDE :=
+KBUILD_AFLAGS += $(INCLUDES)
KBUILD_CFLAGS := -g -Os -Wall -Wstrict-prototypes -Wtype-limits \
-Wmissing-declarations -Wmissing-prototypes \
-fno-strict-aliasing -fomit-frame-pointer -fno-pic \
- -fno-common -fno-stack-protector -I. \
- -I$(src)/../hypervisor/arch/$(SRCARCH)/include \
- -I$(src)/../hypervisor/include
+ -fno-common -fno-stack-protector -DJAILHOUSE $(INCLUDES)
ifneq ($(wildcard $(src)/../hypervisor/include/jailhouse/config.h),)
KBUILD_CFLAGS += -include $(src)/../hypervisor/include/jailhouse/config.h
endif
OBJCOPYFLAGS := -O binary
-LDFLAGS += -T
-
-ifeq ($(SRCARCH), x86)
-KBUILD_CFLAGS += -m64
-always := 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))
-
-target += tiny-demo-linked.o
-$(obj)/tiny-demo-linked.o: $(src)/inmate.lds $(TINY_DEMO_OBJS)
- $(call if_changed,ld)
-
-
-apic-demo-y := apic-demo.o header.o printk.o pm-timer.o
-targets += $(apic-demo-y)
-
-APIC_DEMO_OBJS = $(addprefix $(obj)/,$(apic-demo-y))
-
-target += apic-demo-linked.o
-$(obj)/apic-demo-linked.o: $(src)/inmate.lds $(APIC_DEMO_OBJS)
- $(call if_changed,ld)
+LDFLAGS += --gc-sections -T
+subdir-y := lib/$(SRCARCH) demos/$(SRCARCH) tools/$(SRCARCH)
-targets += tiny-demo.bin apic-demo.bin
-$(obj)/%.bin: $(obj)/%-linked.o
- $(call if_changed,objcopy)
+# demos and tools depend on the library
+$(obj)/demos/$(SRCARCH) $(obj)/tools/$(SRCARCH): $(obj)/lib/$(SRCARCH)