aboutsummaryrefslogtreecommitdiffstats
path: root/stubdom
diff options
context:
space:
mode:
Diffstat (limited to 'stubdom')
-rw-r--r--stubdom/Makefile40
-rw-r--r--stubdom/caml/Makefile9
-rw-r--r--stubdom/ocaml.patch19
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) \