[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] stubdom: Rebuild the ocaml runtime libraries with the options needed



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.