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