Commit 986d69e0 authored by Ian Campbell's avatar Ian Campbell

ocaml: install built modules

Previously the install target was having no effect because it ended up
calling the default target in the subdir Makefile instead of the
install target.

Resolve this by tying the tools/ocaml Makefiles into the generic
handling done by tools/Rules.mk.

Other changes arising in one way or another from this:
- Add libs/xl/META.in
- Update .hgignore for META files
- Create leading directories
- Remove existing module before installation in install targer
  (worksaround what appears to be a quirk of "ocamlfind install")
- Use the globally defined $(DESTDIR)
- Move "ocamlfind printfconf destdir" to a common variable,
  repurposing exising unused OCAMLDESTDIR, incorporating $(DESTDIR) at
  the same time.
- Drop a few unused variabe definitions (mainly to avoid deciding if
  $(DESTDIR) made sense for them or not.
- Pass -destdir to ocamlfind in uninstall target for symmetry with
  install target.
Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
Signed-off-by: default avatarIan Jackson <ian.jackson@eu.citrix.com>
parent dc53940e
......@@ -292,6 +292,7 @@
^tools/ioemu-dir$
^tools/ocaml/.*/.*\.annot$
^tools/ocaml/.*/.*\.cmx?a$
^tools/ocaml/.*/META$
^tools/ocaml/.*/\.ocamldep\.make$
^tools/ocaml/xenstored/oxenstored$
^xen/\.banner.*$
......
XEN_ROOT = ../..
include $(XEN_ROOT)/tools/Rules.mk
SUBDIRS_LIBS = \
libs/uuid libs/mmap \
libs/log libs/xc libs/eventchn \
libs/xb libs/xs libs/xl
SUBDIRS_PROGRAMS = xenstored
SUBDIRS = $(SUBDIRS_LIBS) $(SUBDIRS_PROGRAMS)
SUBDIRS = libs $(SUBDIRS_PROGRAMS)
.NOTPARALLEL:
# targets here must be run in order, otherwise we can try
# to build programs before the libraries are done
.PHONY: all
all: build
.PHONY: build
build: SUBDIRS
.PHONY: SUBDIRS SUBDIRS_PROGRAMS SUBDIRS_LIBS
SUBDIRS SUBDIRS_PROGRAMS SUBDIRS_LIBS:
@set -e; for d in $($@); do \
echo " === building $$d"; \
$(MAKE) --no-print-directory -C $$d; \
done
.PHONY: install install-libs install-program
install: install-libs install-program
install-program: SUBDIRS_PROGRAMS
$(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
$(INSTALL_PROG) xenstored/oxenstored $(DESTDIR)$(SBINDIR)
all: subdirs-all
install-libs: SUBDIRS_LIBS
.PHONY: install
install: subdirs-install
.PHONY: clean
clean:
@for dir in $(SUBDIRS); do \
$(MAKE) --no-print-directory -C $$dir clean; \
done
clean: subdirs-clean
......@@ -17,13 +17,8 @@ OCAMLOPTFLAG_G := $(shell $(OCAMLOPT) -h 2>&1 | sed -n 's/^ *\(-g\) .*/\1/p')
OCAMLOPTFLAGS = $(OCAMLOPTFLAG_G) -ccopt "$(LDFLAGS)" -dtypes $(OCAMLINCLUDE) -cc $(CC) -w F -warn-error F
OCAMLCFLAGS += -g $(OCAMLINCLUDE) -w F -warn-error F
#LDFLAGS = -cclib -L./
DESTDIR ?= /
VERSION := 4.1
OCAMLABI = $(shell $(OCAMLC) -version)
OCAMLLIBDIR = $(shell $(OCAMLC) -where)
OCAMLDESTDIR ?= $(OCAMLLIBDIR)
OCAMLDESTDIR ?= $(DESTDIR)$(shell ocamlfind printconf destdir)
o= >$@.new && mv -f $@.new $@
XEN_ROOT = ../../..
include $(XEN_ROOT)/tools/Rules.mk
SUBDIRS= \
uuid mmap \
log xc eventchn \
xb xs xl
.PHONY: all
all: subdirs-all
.PHONY: install
install: subdirs-install
.PHONY: clean
clean: subdirs-clean
......@@ -19,11 +19,13 @@ OCAML_LIBRARY = eventchn
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore eventchn META $(INTF) $(LIBS) *.a *.so *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) eventchn
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore eventchn META $(INTF) $(LIBS) *.a *.so *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove eventchn
ocamlfind remove -destdir $(OCAMLDESTDIR) eventchn
include $(TOPLEVEL)/Makefile.rules
......@@ -32,11 +32,13 @@ syslog.mli : syslog.ml
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore log META $(INTF) $(LIBS) *.a *.so *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) log
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore log META $(INTF) $(LIBS) *.a *.so *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove log
ocamlfind remove -destdir $(OCAMLDESTDIR) log
include $(TOPLEVEL)/Makefile.rules
......@@ -18,11 +18,13 @@ OCAML_LIBRARY = mmap
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore mmap META $(INTF) $(LIBS) *.a *.so *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) mmap
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore mmap META $(INTF) $(LIBS) *.a *.so *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove mmap
ocamlfind remove -destdir $(OCAMLDESTDIR) mmap
include $(TOPLEVEL)/Makefile.rules
......@@ -17,11 +17,13 @@ OCAML_NOC_LIBRARY = uuid
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore uuid META $(INTF) $(LIBS) *.a *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) uuid
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore uuid META $(INTF) $(LIBS) *.a *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove uuid
ocamlfind remove -destdir $(OCAMLDESTDIR) uuid
include $(TOPLEVEL)/Makefile.rules
......@@ -33,10 +33,12 @@ OCAML_LIBRARY = xb
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore xb META $(INTF) $(LIBS) *.a *.so *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) xb
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xb META $(INTF) $(LIBS) *.a *.so *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove xb
ocamlfind remove -destdir $(OCAMLDESTDIR) xb
include $(TOPLEVEL)/Makefile.rules
......@@ -20,10 +20,12 @@ libs: $(LIBS)
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore xc META $(INTF) $(LIBS) *.a *.so *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) xc
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xc META $(INTF) $(LIBS) *.a *.so *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove xc
ocamlfind remove -destdir $(OCAMLDESTDIR) xc
include $(TOPLEVEL)/Makefile.rules
version = "@VERSION@"
description = "Xen Toolstack Library"
archive(byte) = "xl.cma"
archive(native) = "xl.cmxa"
......@@ -17,10 +17,12 @@ libs: $(LIBS)
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore xl META $(INTF) $(LIBS) *.a *.so *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) xl
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xl META $(INTF) $(LIBS) *.a *.so *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove xl
ocamlfind remove -destdir $(OCAMLDESTDIR) xl
include $(TOPLEVEL)/Makefile.rules
......@@ -33,11 +33,13 @@ OCAML_NOC_LIBRARY = xs
.PHONY: install
install: $(LIBS) META
ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf destdir) -ldconf ignore xs META $(INTF) xs.mli xst.mli xsraw.mli $(LIBS) *.a *.cmx
mkdir -p $(OCAMLDESTDIR)
ocamlfind remove -destdir $(OCAMLDESTDIR) xs
ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xs META $(INTF) xs.mli xst.mli xsraw.mli $(LIBS) *.a *.cmx
.PHONY: uninstall
uninstall:
ocamlfind remove xs
ocamlfind remove -destdir $(OCAMLDESTDIR) xs
include $(TOPLEVEL)/Makefile.rules
......@@ -52,4 +52,8 @@ all: $(INTF) $(PROGRAMS)
bins: $(PROGRAMS)
install: all
$(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
$(INSTALL_PROG) oxenstored $(DESTDIR)$(SBINDIR)
include $(OCAML_TOPLEVEL)/Makefile.rules
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment