diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-05-19 14:17:56 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-05-19 14:17:56 +0100 |
commit | ff7d47a80a126527fd7b479d0c0756a20a07e0d3 (patch) | |
tree | 996bceccab3a2fc9f2d545a69977a02f745d68e3 /stubdom | |
parent | 0e57a92cc388c377de3940d12ac6131c698f5581 (diff) | |
download | xen-ff7d47a80a126527fd7b479d0c0756a20a07e0d3.tar.gz xen-ff7d47a80a126527fd7b479d0c0756a20a07e0d3.tar.bz2 xen-ff7d47a80a126527fd7b479d0c0756a20a07e0d3.zip |
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@eu.citrix.com>
Diffstat (limited to 'stubdom')
-rw-r--r-- | stubdom/Makefile | 40 | ||||
-rw-r--r-- | stubdom/caml/Makefile | 9 | ||||
-rw-r--r-- | stubdom/ocaml.patch | 19 |
3 files changed, 61 insertions, 7 deletions
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) \ |