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 <samuel.thibault@xxxxxxxxxxxxx>
diff -r 2141ac752316 extras/mini-os/Config.mk
--- a/extras/mini-os/Config.mk Fri May 23 15:43:32 2008 +0100
+++ b/extras/mini-os/Config.mk Tue May 27 16:15:01 2008 +0100
@@ -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
--- a/extras/mini-os/Makefile Fri May 23 15:43:32 2008 +0100
+++ b/extras/mini-os/Makefile Tue May 27 16:15:01 2008 +0100
@@ -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
$@.o
+$(TARGET): links $(OBJS) $(TARGET)_app.o arch_lib
+ $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(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
--- a/extras/mini-os/main-caml.c Fri May 23 15:43:32 2008 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Caml bootstrap
- *
- * Samuel Thibault <Samuel.Thibault@xxxxxxxxxxxxx>, January 2008
- */
-
-#include <stdio.h>
-#include <errno.h>
-
-#include <caml/mlvalues.h>
-#include <caml/callback.h>
-#include <unistd.h>
-
-/* Ugly binary compatibility with Linux */
-FILE *_stderr asm("stderr");
-int *__errno_location;
-/* Will probably break everything, probably need to fetch from glibc */
-void *__ctype_b_loc;
-
-int main(int argc, char *argv[], char *envp[])
-{
- value *val;
-
- /* Get current thread's value */
- _stderr = stderr;
- __errno_location = &errno;
-
- printf("starting caml\n");
-
- /* Wait before things might hang up */
- sleep(1);
-
- caml_startup(argv);
- val = caml_named_value("main");
- if (!val) {
- printf("Couldn't find Caml main");
- return 1;
- }
- caml_callback(*val, Val_int(0));
- printf("callback returned\n");
- return 0;
-}
--- a/extras/mini-os/main.c Fri May 23 15:43:32 2008 +0100
+++ b/extras/mini-os/main.c Tue May 27 16:15:01 2008 +0100
@@ -4,7 +4,6 @@
* Samuel Thibault <Samuel.Thibault@xxxxxxxxxxxxx>, 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
--- a/stubdom/Makefile Fri May 23 15:43:32 2008 +0100
+++ b/stubdom/Makefile Tue May 27 16:15:01 2008 +0100
@@ -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
diff -r 2141ac752316 stubdom/c/Makefile
--- a/stubdom/c/Makefile Fri May 23 15:43:32 2008 +0100
+++ b/stubdom/c/Makefile Tue May 27 16:15:01 2008 +0100
@@ -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:
--- a/stubdom/c/main.c Fri May 23 15:43:32 2008 +0100
+++ b/stubdom/c/main.c Tue May 27 16:15:01 2008 +0100
@@ -1,4 +1,6 @@
#include <stdio.h>
+#include <unistd.h>
+
int main(void) {
sleep(2);
printf("Hello, world!\n");
--- a/stubdom/caml/Makefile Fri May 23 15:43:32 2008 +0100
+++ b/stubdom/caml/Makefile Tue May 27 16:15:01 2008 +0100
@@ -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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stubdom/caml/main-caml.c Tue May 27 16:15:01 2008 +0100
@@ -0,0 +1,42 @@
+/*
+ * Caml bootstrap
+ *
+ * Samuel Thibault <Samuel.Thibault@xxxxxxxxxxxxx>, January 2008
+ */
+
+#include <stdio.h>
+#include <errno.h>
+
+#include <caml/mlvalues.h>
+#include <caml/callback.h>
+#include <unistd.h>
+
+/* Ugly binary compatibility with Linux */
+FILE *_stderr asm("stderr");
+int *__errno_location;
+/* Will probably break everything, probably need to fetch from glibc */
+void *__ctype_b_loc;
+
+int main(int argc, char *argv[], char *envp[])
+{
+ value *val;
+
+ /* Get current thread's value */
+ _stderr = stderr;
+ __errno_location = &errno;
+
+ printf("starting caml\n");
+
+ /* Wait before things might hang up */
+ sleep(1);
+
+ caml_startup(argv);
+ val = caml_named_value("main");
+ if (!val) {
+ printf("Couldn't find Caml main");
+ return 1;
+ }
+ caml_callback(*val, Val_int(0));
+ printf("callback returned\n");
+ return 0;
+}
--- a/tools/ioemu/Makefile.target Fri May 23 15:43:32 2008 +0100
+++ b/tools/ioemu/Makefile.target Tue May 27 16:15:01 2008 +0100
@@ -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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|