+include $(PWD)/../.config
-LDFLAGS += --whole-archive --script=$(PWD)/link.cmd
+LDFLAGS += --whole-archive --script=$(PWD)/ld.cmd
-EXTRA_CFLAGS += -I$(PWD)/../palacios/include/ -DMODULE=1 -D__KERNEL__=1
+ifdef V3_CONFIG_SYMMOD
+LDFLAGS += --script=$(PWD)/ld.symmod.cmd
+endif
+ifdef V3_CONFIG_CHECKPOINT
+LDFLAGS += --script=$(PWD)/ld.chkpt.cmd
+endif
-v3vee-objs:= palacios.o \
- palacios-dev.o \
- palacios-vm.o \
- palacios-file.o \
- palacios-stream.o \
- palacios-console.o \
- palacios-mm.o \
- palacios-serial.o \
- palacios-queue.o \
- palacios-ringbuffer.o
+EXTRA_CFLAGS += -I$(PWD)/../palacios/include/ -include autoconf.h -DMODULE=1 -D__KERNEL__=1
-#palacios-socket.o
-#palacios-vnet.o palacios-packet.o
-v3vee-objs += ../libv3vee.a
+v3vee-y := palacios-stubs.o \
+ main.o \
+ vm.o \
+ mm.o \
+ allow_devmem.o \
+ util-queue.o \
+ util-hashtable.o \
+ linux-exts.o \
+ buddy.o \
+ numa.o
+v3vee-$(V3_CONFIG_CONSOLE) += iface-console.o
+v3vee-$(V3_CONFIG_FILE) += iface-file.o
+v3vee-$(V3_CONFIG_STREAM) += iface-stream.o \
+ util-ringbuffer.o
+v3vee-$(V3_CONFIG_EXT_INSPECTOR) += inspector.o
+v3vee-$(V3_CONFIG_PACKET) += iface-packet.o
+v3vee-$(V3_CONFIG_SOCKET) += iface-socket.o
+v3vee-$(V3_CONFIG_KEYED_STREAMS) += iface-keyed-stream.o
+v3vee-$(V3_CONFIG_HOST_DEVICE) += iface-host-dev.o
+v3vee-$(V3_CONFIG_GRAPHICS_CONSOLE) += iface-graphics-console.o
+v3vee-$(V3_CONFIG_EXT_MACH_CHECK) += mcheck.o
-obj-m := v3vee.o
+v3vee-$(V3_CONFIG_MEM_TRACK) += memtrack.o
+v3vee-$(V3_CONFIG_HOST_PMU) += iface-pmu.o
+v3vee-$(V3_CONFIG_HOST_PWRSTAT) += iface-pwrstat.o
+v3vee-$(V3_CONFIG_HOST_PSTATE_CTRL) += iface-pstate-ctrl.o
+v3vee-$(V3_CONFIG_VNET) += palacios-vnet.o \
+ palacios-vnet-ctrl.o \
+ palacios-vnet-brg.o
-all:
- $(MAKE) -C $(CONFIG_LINUX_KERN) M=$(PWD) modules
+v3vee-$(V3_CONFIG_HOST_HYPERCALL) += iface-host-hypercall.o
+v3vee-$(V3_CONFIG_EXT_CODE_INJECT) += iface-code-inject.o
+v3vee-$(V3_CONFIG_EXT_ENV_INJECT) += iface-env-inject.o
+v3vee-$(V3_CONFIG_EXT_SELECTIVE_SYSCALL_EXIT) += iface-syscall.o
+v3vee-$(V3_CONFIG_EXT_GUARD_MODULES) += iface-guard-mods.o
+
+
+v3vee-$(V3_CONFIG_HOST_PCI) += iface-host-pci.o
+
+v3vee-$(V3_CONFIG_DEBUG_LOCKS) += lockcheck.o
+v3vee-$(V3_CONFIG_DEBUG_MEM_ALLOC) += memcheck.o
+v3vee-objs := $(v3vee-y) ../libv3vee.a
+obj-m := v3vee.o
+
+
+all:
+ $(MAKE) -C $(V3_CONFIG_LINUX_KERN) M=$(PWD) modules
clean:
- $(MAKE) -C $(CONFIG_LINUX_KERN) M=$(PWD) clean
+ $(MAKE) -C $(V3_CONFIG_LINUX_KERN) M=$(PWD) clean