diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-06-17 09:36:25 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-06-17 09:36:25 +0100 |
commit | dbd56b5c30b26127b97504cbd560bf9460a04d26 (patch) | |
tree | 20a4d4167e3f7640a41e08b05ec33c11ed5f895b /extras | |
parent | 96d736511395573403068ba54b594c49009ddd3a (diff) | |
download | xen-dbd56b5c30b26127b97504cbd560bf9460a04d26.tar.gz xen-dbd56b5c30b26127b97504cbd560bf9460a04d26.tar.bz2 xen-dbd56b5c30b26127b97504cbd560bf9460a04d26.zip |
minios,stubdom: Add OBJ_DIR parameter to compile outside sources,
which permits to easily compile mini-os in various flavors. Also clean
some parts of stubdom build.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras')
-rw-r--r-- | extras/mini-os/Makefile | 41 | ||||
-rw-r--r-- | extras/mini-os/arch/ia64/Makefile | 7 | ||||
-rw-r--r-- | extras/mini-os/arch/x86/Makefile | 10 | ||||
-rw-r--r-- | extras/mini-os/main.c | 6 | ||||
-rw-r--r-- | extras/mini-os/minios.mk | 6 |
5 files changed, 37 insertions, 33 deletions
diff --git a/extras/mini-os/Makefile b/extras/mini-os/Makefile index 18497e1843..bc55145f3a 100644 --- a/extras/mini-os/Makefile +++ b/extras/mini-os/Makefile @@ -6,6 +6,7 @@ export XEN_ROOT = ../.. include $(XEN_ROOT)/Config.mk +OBJ_DIR ?= $(CURDIR) ifneq ($(stubdom),y) include Config.mk @@ -20,7 +21,7 @@ include minios.mk # Define some default flags for linking. LDLIBS := APP_LDLIBS := -LDARCHLIB := -L$(TARGET_ARCH_DIR) -l$(ARCH_LIB_NAME) +LDARCHLIB := -L$(OBJ_DIR)/$(TARGET_ARCH_DIR) -l$(ARCH_LIB_NAME) LDFLAGS_FINAL := -T $(TARGET_ARCH_DIR)/minios-$(XEN_TARGET_ARCH).lds # Prefix for global API names. All other symbols are localised before @@ -35,14 +36,14 @@ SUBDIRS := lib xenbus console # The common mini-os objects to build. APP_OBJS := -OBJS := $(patsubst %.c,%.o,$(wildcard *.c)) -OBJS += $(patsubst %.c,%.o,$(wildcard lib/*.c)) -OBJS += $(patsubst %.c,%.o,$(wildcard xenbus/*.c)) -OBJS += $(patsubst %.c,%.o,$(wildcard console/*.c)) +OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(wildcard *.c)) +OBJS += $(patsubst %.c,$(OBJ_DIR)/%.o,$(wildcard lib/*.c)) +OBJS += $(patsubst %.c,$(OBJ_DIR)/%.o,$(wildcard xenbus/*.c)) +OBJS += $(patsubst %.c,$(OBJ_DIR)/%.o,$(wildcard console/*.c)) .PHONY: default -default: $(TARGET) +default: $(OBJ_DIR)/$(TARGET) # Create special architecture specific links. The function arch_links # has to be defined in arch.mk (see include above). @@ -57,7 +58,7 @@ links: $(ARCH_LINKS) .PHONY: arch_lib arch_lib: - $(MAKE) --directory=$(TARGET_ARCH_DIR) || exit 1; + $(MAKE) --directory=$(TARGET_ARCH_DIR) OBJ_DIR=$(OBJ_DIR)/$(TARGET_ARCH_DIR) || exit 1; ifeq ($(lwip),y) # lwIP library @@ -66,14 +67,14 @@ LWC := $(filter-out %6.c %ip6_addr.c %ethernetif.c, $(LWC)) LWC += lwip-arch.c lwip-net.c LWO := $(patsubst %.c,%.o,$(LWC)) -lwip.a: $(LWO) +$(OBJ_DIR)/lwip.a: $(LWO) $(RM) $@ $(AR) cqs $@ $^ -OBJS += lwip.a +OBJS += $(OBJ_DIR)/lwip.a endif -OBJS := $(filter-out main.o lwip%.o $(LWO), $(OBJS)) +OBJS := $(filter-out $(OBJ_DIR)/lwip%.o $(LWO), $(OBJS)) ifeq ($(libc),y) APP_LDLIBS += -L$(XEN_ROOT)/stubdom/libxc -whole-archive -lxenguest -lxenctrl -no-whole-archive @@ -84,14 +85,14 @@ LDLIBS += -lc endif ifneq ($(APP_OBJS)-$(lwip),-y) -OBJS := $(filter-out daytime.o, $(OBJS)) +OBJS := $(filter-out $(OBJ_DIR)/daytime.o, $(OBJS)) endif -$(TARGET)_app.o: $(APP_OBJS) app.lds - $(LD) -r -d $(LDFLAGS) $^ $(APP_LDLIBS) --undefined app_main -o $@ +$(OBJ_DIR)/$(TARGET)_app.o: $(APP_OBJS) app.lds + $(LD) -r -d $(LDFLAGS) $^ $(APP_LDLIBS) --undefined main -o $@ -$(TARGET): links $(OBJS) $(TARGET)_app.o arch_lib - $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(TARGET)_app.o $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o +$(OBJ_DIR)/$(TARGET): links $(OBJS) $(OBJ_DIR)/$(TARGET)_app.o arch_lib + $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(OBJ_DIR)/$(TARGET)_app.o $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o $(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o $(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@ gzip -f -9 -c $@ >$@.gz @@ -99,15 +100,15 @@ $(TARGET): links $(OBJS) $(TARGET)_app.o arch_lib .PHONY: clean arch_clean arch_clean: - $(MAKE) --directory=$(TARGET_ARCH_DIR) clean || exit 1; + $(MAKE) --directory=$(TARGET_ARCH_DIR) OBJ_DIR=$(OBJ_DIR)/$(TARGET_ARCH_DIR) clean || exit 1; clean: arch_clean - for dir in $(SUBDIRS); do \ + for dir in $(addprefix $(OBJ_DIR)/,$(SUBDIRS)); do \ rm -f $$dir/*.o; \ done - rm -f *.o *~ core $(TARGET).elf $(TARGET).raw $(TARGET) $(TARGET).gz - find . -type l | xargs rm -f - $(RM) lwip.a $(LWO) + rm -f $(OBJ_DIR)/*.o *~ $(OBJ_DIR)/core $(OBJ_DIR)/$(TARGET).elf $(OBJ_DIR)/$(TARGET).raw $(OBJ_DIR)/$(TARGET) $(OBJ_DIR)/$(TARGET).gz + find . $(OBJ_DIR) -type l | xargs rm -f + $(RM) $(OBJ_DIR)/lwip.a $(LWO) rm -f tags TAGS diff --git a/extras/mini-os/arch/ia64/Makefile b/extras/mini-os/arch/ia64/Makefile index 6e46aa67ef..405066215d 100644 --- a/extras/mini-os/arch/ia64/Makefile +++ b/extras/mini-os/arch/ia64/Makefile @@ -40,12 +40,13 @@ ARCH_OBJS += __umoddi3.o ARCH_OBJS += __udivdi3.o ARCH_OBJS += __udivsi3.o ARCH_OBJS += __divdi3.o +ARCH_OBJS := $(addprefix $(OBJ_DIR)/,$(ARCH_OBJS)) GEN_OFF_SRC := gen_off.c GEN_OFF_ASM := gen_off.s GEN_OFF_H := $(MINI-OS_ROOT)/include/$(ARCH_INC)/offsets.h -all: $(ARCH_LIB) +all: $(OBJ_DIR)/$(ARCH_LIB) $(GEN_OFF_ASM): $(GEN_OFF_SRC) $(CC) -S -o $@ $(CPPFLAGS) $< @@ -53,10 +54,10 @@ $(GEN_OFF_ASM): $(GEN_OFF_SRC) $(GEN_OFF_H): $(GEN_OFF_ASM) sed -ne "/^->/ {s/->/#define /; p}" < $< > $@ -$(ARCH_LIB): $(GEN_OFF_H) $(ARCH_OBJS) $(HEAD_ARCH_OBJ) +$(OBJ_DIR)/$(ARCH_LIB): $(GEN_OFF_H) $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ) $(AR) rv $(ARCH_LIB) $(ARCH_OBJS) clean: - rm -f $(ARCH_LIB) $(ARCH_OBJS) $(HEAD_ARCH_OBJ) + rm -f $(OBJ_DIR)/$(ARCH_LIB) $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ) rm -f $(GEN_OFF_ASM) rm -f $(GEN_OFF_H) diff --git a/extras/mini-os/arch/x86/Makefile b/extras/mini-os/arch/x86/Makefile index 21f0958f6a..3c5fb6ae78 100644 --- a/extras/mini-os/arch/x86/Makefile +++ b/extras/mini-os/arch/x86/Makefile @@ -17,15 +17,15 @@ include ../../minios.mk ARCH_SRCS := $(wildcard *.c) # The objects built from the sources. -ARCH_OBJS := $(patsubst %.c,%.o,$(ARCH_SRCS)) +ARCH_OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(ARCH_SRCS)) -all: $(ARCH_LIB) +all: $(OBJ_DIR)/$(ARCH_LIB) # $(HEAD_ARCH_OBJ) is only build here, needed on linking # in ../../Makefile. -$(ARCH_LIB): $(ARCH_OBJS) $(HEAD_ARCH_OBJ) - $(AR) rv $(ARCH_LIB) $(ARCH_OBJS) +$(OBJ_DIR)/$(ARCH_LIB): $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ) + $(AR) rv $(OBJ_DIR)/$(ARCH_LIB) $(ARCH_OBJS) clean: - rm -f $(ARCH_LIB) $(ARCH_OBJS) $(HEAD_ARCH_OBJ) + rm -f $(OBJ_DIR)/$(ARCH_LIB) $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ) diff --git a/extras/mini-os/main.c b/extras/mini-os/main.c index d31a4b4c2d..6c26e96057 100644 --- a/extras/mini-os/main.c +++ b/extras/mini-os/main.c @@ -4,6 +4,7 @@ * Samuel Thibault <Samuel.Thibault@eu.citrix.net>, October 2007 */ +#ifdef HAVE_LIBC #include <os.h> #include <sched.h> #include <console.h> @@ -112,7 +113,7 @@ static void call_main(void *p) } \ } - PARSE_ARGS(start_info.cmd_line, argc++, ); + PARSE_ARGS((char*)start_info.cmd_line, argc++, ); #ifdef CONFIG_QEMU PARSE_ARGS(domargs, argc++, ); #endif @@ -121,7 +122,7 @@ static void call_main(void *p) argv[0] = "main"; argc = 1; - PARSE_ARGS(start_info.cmd_line, argv[argc++] = c, *c++ = 0) + PARSE_ARGS((char*)start_info.cmd_line, argv[argc++] = c, *c++ = 0) #ifdef CONFIG_QEMU PARSE_ARGS(domargs, argv[argc++] = c, *c++ = 0) #endif @@ -168,3 +169,4 @@ int app_main(start_info_t *si) main_thread = create_thread("main", call_main, si); return 0; } +#endif diff --git a/extras/mini-os/minios.mk b/extras/mini-os/minios.mk index 2282a187e2..cc45c2d4f5 100644 --- a/extras/mini-os/minios.mk +++ b/extras/mini-os/minios.mk @@ -57,13 +57,13 @@ ARCH_LIB := lib$(ARCH_LIB_NAME).a # This object contains the entrypoint for startup from Xen. # $(HEAD_ARCH_OBJ) has to be built in the architecture specific directory. HEAD_ARCH_OBJ := $(XEN_TARGET_ARCH).o -HEAD_OBJ := $(TARGET_ARCH_DIR)/$(HEAD_ARCH_OBJ) +HEAD_OBJ := $(OBJ_DIR)/$(TARGET_ARCH_DIR)/$(HEAD_ARCH_OBJ) -%.o: %.c $(HDRS) Makefile $(EXTRA_DEPS) +$(OBJ_DIR)/%.o: %.c $(HDRS) Makefile $(EXTRA_DEPS) $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ -%.o: %.S $(HDRS) Makefile $(EXTRA_DEPS) +$(OBJ_DIR)/%.o: %.S $(HDRS) Makefile $(EXTRA_DEPS) $(CC) $(ASFLAGS) $(CPPFLAGS) -c $< -o $@ |