1.PHONY: all
2all: default
3
4include ../../global.mk
5include ${BUILDRUMP_TOOLFLAGS}
6
7#
8# Rumprun-xen Makefile.
9# Abandon all hope, ye who enter here:
10#   This is in flux while cleanup and separation from the Mini-OS
11#   Makefile is being worked out.
12#
13OBJ_DIR ?= $(CURDIR)/obj
14
15LDSCRIPT:= $(abspath $(OBJ_DIR)/xen/minios.lds)
16
17INSTALLTGTS=	librumpxen_xendev_install librumpnet_xenif_install
18
19include ../Makefile.inc
20
21.PHONY: default
22default: prepare links mini-os ${MAINOBJ} ${TARGETS}
23
24CPPFLAGS+= -isystem xen/include
25CPPFLAGS+= -no-integrated-cpp
26
27# Disable PIE, but need to check if compiler supports it
28LDFLAGS-$(call cc-option,-no-pie) += -no-pie
29LDFLAGS += $(LDFLAGS-y)
30
31CFLAGS += -fno-builtin
32
33rump-src-y += rumphyper_bio.c
34rump-src-y += init.c
35
36# Rump kernel middleware objects to build.
37RUMP_OBJS= $(OBJ_DIR)/xen/minios.o $(patsubst %.c,$(OBJ_DIR)/%.o,$(rump-src-y))
38
39$(OBJ_DIR)/%.o: %.c $(HDRS) $(EXTRA_DEPS)
40	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
41
42.PHONY: prepare
43prepare:
44	mkdir -p $(OBJ_DIR)/lib
45
46.PHONY: mini-os
47mini-os:
48	$(MAKE) -C xen OBJ_DIR=$(OBJ_DIR)/xen
49
50links:
51	$(MAKE) -C xen links
52
53$(eval $(call BUILDLIB_target,librumpxen_xendev,.))
54$(eval $(call BUILDLIB_target,librumpnet_xenif,.))
55
56xenlibs: ${RROBJLIB}/librumpxen_xendev/librumpxen_xendev.a ${RROBJLIB}/librumpnet_xenif/librumpnet_xenif.a
57
58$(MAINOBJ): $(RUMP_OBJS) platformlibs xenlibs
59	$(CC) -Wl,-r $(CFLAGS) $(LDFLAGS) $(RUMP_OBJS) -nostdlib -o $@ \
60	    -L${RROBJLIB}/libbmk_core -L${RROBJLIB}/libbmk_rumpuser \
61	    -Wl,--whole-archive -lbmk_rumpuser -lbmk_core -Wl,--no-whole-archive
62
63.PHONY: clean arch_clean
64
65clean:	commonclean
66	$(MAKE) -C xen OBJ_DIR=$(OBJ_DIR)/xen clean
67	rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/lib/*.o buildtest $(MAINOBJ)
68
69cleandir: clean
70