# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1242739076 -3600
# Node ID e0221531d0e583d74d27a56155ffd8f4cb46f32c
# Parent b4de3a393f21a5ae29ac3283d6aa5e5c981551c8
stubdom: Rebuild the ocaml runtime libraries with the options needed
if they are to be linked with object files created by ocamlc and the minios
kernel.
This is needed to build stubdoms written in ocaml.
Signed-off-by: Alex Zeffertt <alex.zeffertt@xxxxxxxxxxxxx>
---
.hgignore | 1 +
stubdom/Makefile | 40 ++++++++++++++++++++++++++++++++++++++--
stubdom/caml/Makefile | 9 ++++-----
stubdom/ocaml.patch | 16 ++++++++++++++++
4 files changed, 59 insertions(+), 7 deletions(-)
diff -r b4de3a393f21 -r e0221531d0e5 .hgignore
--- a/.hgignore Tue May 19 14:15:43 2009 +0100
+++ b/.hgignore Tue May 19 14:17:56 2009 +0100
@@ -99,6 +99,7 @@
^stubdom/pciutils-.*$
^stubdom/zlib-.*$
^stubdom/grub-.*$
+^stubdom/ocaml-.*$
^stubdom/lwip/
^stubdom/ioemu/
^tools/.*/build/lib.*/.*\.py$
diff -r b4de3a393f21 -r e0221531d0e5 stubdom/Makefile
--- a/stubdom/Makefile Tue May 19 14:15:43 2009 +0100
+++ b/stubdom/Makefile Tue May 19 14:17:56 2009 +0100
@@ -26,6 +26,10 @@ LWIP_VERSION=1.3.0
#GRUB_URL?=http://alpha.gnu.org/gnu/grub
GRUB_URL?=$(XEN_EXTFILES_URL)
GRUB_VERSION=0.97
+
+#OCAML_URL?=$(XEN_EXTFILES_URL)
+OCAML_URL?=http://caml.inria.fr/pub/distrib/ocaml-3.11
+OCAML_VERSION=3.11.0
WGET=wget -c
@@ -162,6 +166,37 @@ lwip-$(XEN_TARGET_ARCH): lwip-$(LWIP_VER
tar xzf $<
mv lwip $@
patch -d $@ -p0 < lwip.patch-cvs
+ touch $@
+
+#############
+# Cross-ocaml
+#############
+
+CAMLLIB = $(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib/ocaml
+OCAML_STAMPFILE=$(CAMLLIB)/.dirstamp
+
+ocaml-$(OCAML_VERSION).tar.gz:
+ $(WGET) $(OCAML_URL)/$@
+
+ocaml-$(XEN_TARGET_ARCH)/.dirstamp: ocaml-$(OCAML_VERSION).tar.gz ocaml.patch
+ tar xzf $<
+ cd ocaml-$(OCAML_VERSION) && patch -p0 < ../ocaml.patch
+ rm -rf ocaml-$(XEN_TARGET_ARCH)
+ mv ocaml-$(OCAML_VERSION) ocaml-$(XEN_TARGET_ARCH)
+ touch $@
+
+MINIOS_HASNOT=IPV6 INET_ATON
+
+.PHONY: cross-ocaml
+cross-ocaml: $(OCAML_STAMPFILE)
+$(OCAML_STAMPFILE): ocaml-$(XEN_TARGET_ARCH)/.dirstamp
+ cd ocaml-$(XEN_TARGET_ARCH) && ./configure -prefix
$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf \
+ -no-pthread -no-shared-libs -no-tk -no-curses \
+ -cc "$(CC) -U_FORTIFY_SOURCE -fno-stack-protector"
+ $(foreach i,$(MINIOS_HASNOT),sed -i 's,^\(#define HAS_$(i)\),//\1,'
ocaml-$(XEN_TARGET_ARCH)/config/s.h ; )
+ $(MAKE) -C ocaml-$(XEN_TARGET_ARCH) world
+ $(MAKE) -C ocaml-$(XEN_TARGET_ARCH) opt
+ $(MAKE) -C ocaml-$(XEN_TARGET_ARCH) install
touch $@
#######
@@ -251,7 +286,7 @@ ioemu: cross-zlib cross-libpci libxc
.PHONY: caml
caml: $(CROSS_ROOT)
- CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@
LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)
+ CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@
LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)
OCAMLC_CROSS_PREFIX=$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/bin/
###
# C
@@ -289,7 +324,6 @@ ioemu-stubdom: mini-os-$(XEN_TARGET_ARCH
ioemu-stubdom: mini-os-$(XEN_TARGET_ARCH)-ioemu lwip-$(XEN_TARGET_ARCH) libxc
ioemu
DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="-DCONFIG_QEMU
$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -C $(MINI_OS)
OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)
APP_OBJS="$(APP_OBJS)"
-CAMLLIB = $(shell ocamlc -where)
.PHONY: caml-stubdom
caml-stubdom: mini-os-$(XEN_TARGET_ARCH)-caml lwip-$(XEN_TARGET_ARCH) libxc
caml
DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="-DCONFIG_CAML
$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -C $(MINI_OS)
OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)
APP_OBJS="$(CURDIR)/caml/main-caml.o $(CURDIR)/caml/caml.o
$(CAMLLIB)/libasmrun.a"
@@ -351,6 +385,7 @@ crossclean: clean
rm -fr zlib-$(XEN_TARGET_ARCH) pciutils-$(XEN_TARGET_ARCH)
rm -fr libxc-$(XEN_TARGET_ARCH) ioemu
rm -f mk-headers-$(XEN_TARGET_ARCH)
+ rm -fr ocaml-$(XEN_TARGET_ARCH)
# clean patched sources
.PHONY: patchclean
@@ -367,6 +402,7 @@ downloadclean: patchclean
rm -f pciutils-$(LIBPCI_VERSION).tar.bz2
rm -f grub-$(GRUB_VERSION).tar.gz
rm -f lwip-$(LWIP_VERSION).tar.gz
+ rm -f ocaml-$(OCAML_VERSION).tar.gz
.PHONY: distclean
distclean: downloadclean
diff -r b4de3a393f21 -r e0221531d0e5 stubdom/caml/Makefile
--- a/stubdom/caml/Makefile Tue May 19 14:15:43 2009 +0100
+++ b/stubdom/caml/Makefile Tue May 19 14:17:56 2009 +0100
@@ -2,11 +2,10 @@ XEN_ROOT = ../..
include $(XEN_ROOT)/Config.mk
-CAMLLIB = $(shell ocamlc -where)
+CAMLLIB = $(shell $(OCAMLC_CROSS_PREFIX)ocamlc -where)
DEF_CPPFLAGS += -I$(CAMLLIB)
-OCAMLFIND=ocamlfind
-OCAMLOPT=ocamlopt
+OCAMLOPT=$(OCAMLC_CROSS_PREFIX)ocamlopt
OBJS := hello.cmx
LIBS :=
@@ -14,10 +13,10 @@ all: main-caml.o caml.o
all: main-caml.o caml.o
%.cmx: %.ml
- $(OCAMLFIND) $(OCAMLOPT) -c $< -o $@
+ $(OCAMLOPT) -c $< -o $@
caml.o: $(OBJS)
- $(OCAMLFIND) $(OCAMLOPT) $(LIBS) $^ -output-obj -o $@
+ $(OCAMLOPT) $(LIBS) $^ -output-obj -o $@
clean:
rm -f *.a *.o *.cmx *.cmi
diff -r b4de3a393f21 -r e0221531d0e5 stubdom/ocaml.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stubdom/ocaml.patch Tue May 19 14:17:56 2009 +0100
@@ -0,0 +1,19 @@
+--- byterun/Makefile.orig 2009-04-07 12:14:02.000000000 +0100
++++ byterun/Makefile 2009-04-07 12:13:50.000000000 +0100
+@@ -22,14 +22,14 @@
+ DOBJS=$(OBJS:.o=.d.o) instrtrace.d.o
+ PICOBJS=$(OBJS:.o=.pic.o)
+
+-#ifeq ($(SUPPORTS_SHARED_LIBRARIES),true)
++ifeq ($(SUPPORTS_SHARED_LIBRARIES),true)
+
+ all:: libcamlrun_shared.so
+
+ install::
+ cp libcamlrun_shared.so $(LIBDIR)/libcamlrun_shared.so
+
+-#endif
++endif
+
+ ocamlrun$(EXE): libcamlrun.a prims.o
+ $(MKEXE) $(BYTECCLINKOPTS) -o ocamlrun$(EXE) \
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|