stubdom: make the build more generic
PATCH 1/1 stubdom: make the build more generic
stubdom: make the build more generic by moving as many stubdom parts into stubdom/ as possible. That also permits to build all of ioemu, c and caml stubdoms at the same time.
Signed-off-by Samuel Thibault <[email protected]>
extras/mini-os/Config.mk +0 -8
@@ -55,11 +55,3 @@ DEF_CPPFLAGS += -I$(LWIPDIR)/src/include DEF_CPPFLAGS += -I$(LWIPDIR)/src/include/ipv4 endif - -ifneq ($(QEMUDIR),) -qemu=y -endif - -ifneq ($(CAMLDIR),) -caml=y -endif
extras/mini-os/Makefile +7 -26
@@ -73,44 +73,25 @@ OBJS += lwip.a endif -OBJS := $(filter-out lwip%.o $(LWO), $(OBJS)) - -ifeq ($(caml),y) -CAMLLIB = $(shell ocamlc -where) -APP_OBJS += main-caml.o -APP_OBJS += $(CAMLDIR)/caml.o -APP_OBJS += $(CAMLLIB)/libasmrun.a -CFLAGS += -I$(CAMLLIB) -APP_LDLIBS += -lm -endif -OBJS := $(filter-out main-caml.o, $(OBJS)) - -ifeq ($(qemu),y) -APP_OBJS += $(QEMUDIR)/i386-dm-stubdom/qemu.a $(QEMUDIR)/i386-dm-stubdom/libqemu.a -CFLAGS += -DCONFIG_QEMU -endif - -ifneq ($(CDIR),) -APP_OBJS += $(CDIR)/main.a -APP_LDLIBS += -endif +OBJS := $(filter-out main.o lwip%.o $(LWO), $(OBJS)) ifeq ($(libc),y) APP_LDLIBS += -L$(XEN_ROOT)/stubdom/libxc -whole-archive -lxenguest -lxenctrl -no-whole-archive APP_LDLIBS += -lpci APP_LDLIBS += -lz +APP_LDLIBS += -lm LDLIBS += -lc endif -ifneq ($(caml)-$(qemu)-$(CDIR)-$(lwip),---y) +ifneq ($(APP_OBJS)-$(lwip),-y) OBJS := $(filter-out daytime.o, $(OBJS)) endif -app.o: $(APP_OBJS) app.lds - $(LD) -r -d $(LDFLAGS) $^ $(APP_LDLIBS) --undefined main -o $@ +$(TARGET)_app.o: $(APP_OBJS) app.lds + $(LD) -r -d $(LDFLAGS) $^ $(APP_LDLIBS) --undefined app_main -o $@ -$(TARGET): links $(OBJS) app.o arch_lib - $(LD) -r $(LDFLAGS) $(HEAD_OBJ) app.o $(OBJS) $(LDARCHLIB) $(LDLIBS) -o [email protected] +$(TARGET): links $(OBJS) $(TARGET)_app.o arch_lib + $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(TARGET)_app.o $(OBJS) $(LDARCHLIB) $(LDLIBS) -o [email protected] $(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start [email protected] [email protected] $(LD) $(LDFLAGS) $(LDFLAGS_FINAL) [email protected] $(EXTRA_OBJS) -o $@ gzip -f -9 -c $@ >[email protected]
extras/mini-os/main-caml.c deleted +0 -42
42 lines not on this page · raw message
extras/mini-os/main.c +0 -2
@@ -4,7 +4,6 @@* Samuel Thibault <[email protected]>, October 2007 */ -#ifdef HAVE_LIBC #include <os.h> #include <sched.h> #include <console.h>
@@ -180,4 +179,3 @@ main_thread =create_thread ("main" , call_main, si);return 0 ; } -#endif
stubdom/Makefile +17 -14
@@ -38,7 +38,7 @@ export PATH:=$(CROSS_PREFIX)/bin:$(PATH) .PHONY: all -all: qemu-stubdom +all: ioemu-stubdom c-stubdom ################ # Cross-binutils
@@ -175,6 +175,7 @@ ([ ! -h config-host.h ] || rm -f config-host.h) && \ ([ ! -h config-host.mak ] || rm -f config-host.mak) ) [ -h mini-os ] || ln -sf ../extras/mini-os . + [ -h mini-os/include/xen ] || ln -sf ../../../xen/include/public mini-os/include/xen ####### # libxc
@@ -199,40 +200,41 @@ ###### .PHONY: caml -caml: - $(MAKE) -C $@ +caml: mk-symlinks + $(MAKE) -C $@ LWIPDIR=$(CURDIR)/lwip-cvs ### # C ### .PHONY: c -c: - $(MAKE) -C $@ +c: mk-symlinks + $(MAKE) -C $@ LWIPDIR=$(CURDIR)/lwip-cvs ######## # minios ######## -.PHONY: qemu-stubdom -qemu-stubdom: mk-symlinks lwip-cvs libxc ioemu - $(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs QEMUDIR=$(CURDIR)/ioemu +.PHONY: ioemu-stubdom +ioemu-stubdom: lwip-cvs libxc ioemu + $(MAKE) -C mini-os TARGET=$@ LWIPDIR=$(CURDIR)/lwip-cvs APP_OBJS="$(CURDIR)/ioemu/i386-dm-stubdom/qemu.a $(CURDIR)/ioemu/i386-dm-stubdom/libqemu.a" +CAMLLIB = $(shell ocamlc -where) .PHONY: caml-stubdom -caml-stubdom: mk-symlinks lwip-cvs libxc cross-libpci caml - $(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs CAMLDIR=$(CURDIR)/caml +caml-stubdom: lwip-cvs libxc caml + $(MAKE) -C mini-os TARGET=$@ LWIPDIR=$(CURDIR)/lwip-cvs APP_OBJS="$(CURDIR)/caml/main-c.o $(CURDIR)/caml/main-caml.o $(CURDIR)/caml/caml.o $(CAMLLIB)/libasmrun.a" .PHONY: c-stubdom -c-stubdom: mk-symlinks lwip-cvs libxc cross-libpci c - $(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs CDIR=$(CURDIR)/c +c-stubdom: lwip-cvs libxc c + $(MAKE) -C mini-os TARGET=$@ LWIPDIR=$(CURDIR)/lwip-cvs APP_OBJS=$(CURDIR)/c/main.a ######### # install ######### -install: mini-os/mini-os.gz +install: mini-os/ioemu-stubdom.gz $(INSTALL_PROG) stubdom-dm "$(DESTDIR)/usr/lib/xen/bin" - $(INSTALL_PROG) mini-os/mini-os.gz "$(DESTDIR)/usr/lib/xen/boot/stubdom.gz" + $(INSTALL_PROG) $< "$(DESTDIR)/usr/lib/xen/boot/stubdom.gz" ####### # clean
@@ -243,6 +246,7 @@ clean: -$(MAKE) -C mini-os LWIPDIR=$(CURDIR)/lwip-cvs clean $(MAKE) -C caml clean + $(MAKE) -C c clean rm -fr libxc ioemu mini-os include # clean the cross-compilation result
stubdom/c/Makefile +6 -1
@@ -2,7 +2,12 @@ include $(XEN_ROOT)/Config.mk -main.a: main.o +all: main.a + +main-c.c: + ln -sf $(XEN_ROOT)/extras/mini-os/main.c $@ + +main.a: main-c.o main.o $(AR) cr $@ $^ clean:
stubdom/c/main.c +2 -0
@@ -1,4 +1,6 @@#include <stdio.h> +#include <unistd.h> +int main (void ) {sleep (2 );printf ("Hello, world!\n" );
stubdom/caml/Makefile +9 -1
@@ -1,12 +1,20 @@ XEN_ROOT = ../.. include $(XEN_ROOT)/Config.mk + +CAMLLIB = $(shell ocamlc -where) +DEF_CPPFLAGS += -I$(CAMLLIB) OCAMLFIND=ocamlfind OCAMLOPT=ocamlopt OBJS := hello.cmx LIBS := + +all: main-c.o main-caml.o caml.o + +main-c.c: + ln -sf $(XEN_ROOT)/extras/mini-os/main.c $@ %.cmx: %.ml $(OCAMLFIND) $(OCAMLOPT) -c $< -o $@
@@ -15,4 +23,4 @@ $(OCAMLFIND) $(OCAMLOPT) $(LIBS) $^ -output-obj -o $@ clean: - rm -f *.o *.cmx *.cmi + rm -f *.a *.o *.cmx *.cmi
stubdom/caml/main-caml.c new file +42 -0
42 lines not on this page · raw message
tools/ioemu/Makefile.target +7 -0
@@ -355,6 +355,13 @@ endif ifdef CONFIG_WIN32 VL_OBJS+=tap-win32.o +endif + +ifdef CONFIG_STUBDOM +VL_OBJS+=main-qemu.o +CFLAGS += -DCONFIG_QEMU +main-qemu.c: + ln -s $(XEN_ROOT)/extras/mini-os/main.c $@ endif ifdef CONFIG_STUBDOM
stubdom: Save main_thread value by moving it out from app_bss which gets cleared.
Signed-off-by Samuel Thibault <[email protected]>
---
Fix to be applied on top of the previous patch.
extras/mini-os/main.c +0 -2
@@ -20,8 +20,6 @@extern void __libc_fini_array (void );extern unsigned long __CTOR_LIST__[];extern unsigned long __DTOR_LIST__[]; - -struct thread *main_thread;#if 0 #include <stdio.h>
extras/mini-os/sched.c +2 -0
@@ -57,6 +57,8 @@struct thread *idle_thread =NULL ;LIST_HEAD (exited_threads);static int threads_started; + +struct thread *main_thread;void inline print_runqueue (void ) {