From: Keir Fraser Date: Tue, 19 May 2009 13:17:56 +0000 (+0100) Subject: stubdom: Rebuild the ocaml runtime libraries with the options needed X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13903 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ff7d47a80a126527fd7b479d0c0756a20a07e0d3;p=xen.git 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 --- diff --git a/.hgignore b/.hgignore index 17b24787de..fb16719e24 100644 --- a/.hgignore +++ b/.hgignore @@ -99,6 +99,7 @@ ^stubdom/pciutils-.*$ ^stubdom/zlib-.*$ ^stubdom/grub-.*$ +^stubdom/ocaml-.*$ ^stubdom/lwip/ ^stubdom/ioemu/ ^tools/.*/build/lib.*/.*\.py$ diff --git a/stubdom/Makefile b/stubdom/Makefile index 563c01aa56..cd7234980d 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -27,6 +27,10 @@ LWIP_VERSION=1.3.0 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 GNU_TARGET_ARCH:=$(XEN_TARGET_ARCH) @@ -164,6 +168,37 @@ lwip-$(XEN_TARGET_ARCH): lwip-$(LWIP_VERSION).tar.gz 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 $@ + ####### # Links ####### @@ -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: APP_OBJS=$(CURDIR)/ioemu/i386-stubdom/qemu.a $(CURDIR)/ioemu/i386 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 --git a/stubdom/caml/Makefile b/stubdom/caml/Makefile index d760fe4ee5..5f27db67a3 100644 --- a/stubdom/caml/Makefile +++ b/stubdom/caml/Makefile @@ -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 @@ LIBS := 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 --git a/stubdom/ocaml.patch b/stubdom/ocaml.patch new file mode 100644 index 0000000000..50db4869dd --- /dev/null +++ b/stubdom/ocaml.patch @@ -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) \