mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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>
This commit is contained in:
1 parent
0e57a92cc3
commit
ff7d47a80a
4 files changed
+62
-7
No files matched your search
@@ -99,6 +99,7 @@
|
||||
^stubdom/pciutils-.*$
|
||||
^stubdom/zlib-.*$
|
||||
^stubdom/grub-.*$
|
||||
^stubdom/ocaml-.*$
|
||||
^stubdom/lwip/
|
||||
^stubdom/ioemu/
|
||||
^tools/.*/build/lib.*/.*\.py$
|
||||
|
||||
+38
-2
@@ -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
|
||||
@@ -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
|
||||
@@ -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) \
|
||||