VERSION = @PACKAGE_VERSION@
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
+datarootdir = @datarootdir@
+mandir = @mandir@
+
+OCAMLDOCFLAGS = -html -sort -package bitstring,extlib,libvirt -I lib
+OCAMLDOC = @OCAMLDOC@
+OCAMLDOCFILES = lib/virt_mem_utils.ml \
+ lib/virt_mem_mmap.mli \
+ lib/virt_mem_types.mli \
+ lib/virt_mem_ksyms.mli \
+ lib/virt_mem_kallsyms.mli \
+ lib/virt_mem_utsname.mli \
+ lib/virt_mem.mli
+
+HAVE_PERLDOC = @HAVE_PERLDOC@
+
+TOOLS = uname dmesg ps
+export TOOLS
+
+SUBDIRS_NOT_PO = lib $(TOOLS) mem extract/fedora-koji extract/codegen
+SUBDIRS = $(SUBDIRS_NOT_PO) po
+
+ifeq ($(HAVE_PERLDOC),perldoc)
+MANPAGES = virt-mem.1 $(TOOLS:%=virt-%.1)
+TEXTMANPAGES = virt-mem.txt
+endif
-SYNTAX = -pp "camlp4o -I`ocamlc -where`/bitmatch bitmatch.cma pa_bitmatch.cmo"
+TARGETS = $(MANPAGES) $(TEXTMANPAGES)
-#OCAMLCPACKAGES = -package unix,bigarray,extlib,bitmatch
-OCAMLCPACKAGES = -package unix,bigarray,extlib -I +bitmatch
+all: $(TARGETS)
+ for d in $(SUBDIRS); do \
+ $(MAKE) -C $$d $@; \
+ if [ $$? -ne 0 ]; then exit 1; fi; \
+ done
-ifneq ($(pkg_gettext),no)
-OCAMLCPACKAGES += -package gettext-stub
-endif
+install: install-man
+ for d in $(SUBDIRS); do \
+ $(MAKE) -C $$d $@; \
+ if [ $$? -ne 0 ]; then exit 1; fi; \
+ done
-OCAMLCFLAGS = @OCAMLCFLAGS@ $(SYNTAX)
-OCAMLCLIBS = -linkpkg bitmatch.cma
+depend:
+ for d in $(SUBDIRS_NOT_PO); do \
+ $(MAKE) -C $$d $@; \
+ if [ $$? -ne 0 ]; then exit 1; fi; \
+ done
-OCAMLOPTFLAGS = @OCAMLOPTFLAGS@ $(SYNTAX)
-OCAMLOPTPACKAGES = $(OCAMLCPACKAGES)
-OCAMLOPTLIBS = -linkpkg bitmatch.cmxa
+clean:
+ for d in . $(SUBDIRS); do \
+ (cd $$d; rm -f *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a \
+ *.so *.opt *~ *.dll *.exe *.annot core); \
+ done
+ rm -f uname/virt-uname
+ rm -f dmesg/virt-dmesg
+ rm -f ps/virt-ps
+ rm -f mem/virt-mem
+
+distclean: clean
+ rm -f config.h config.log config.status configure
+ rm -rf autom4te.cache
+ rm -f Makefile
+ rm -f */Makefile
-OCAMLDOCFLAGS = -html -stars -sort $(OCAMLCPACKAGES) $(SYNTAX)
+# Developer documentation (in html/ subdirectory).
-TARGETS = virt-mem virt-mem.opt
+ifneq ($(OCAMLDOC),)
+ifneq ($(OCAMLDOCFILES),)
+doc:
+ rm -rf html
+ mkdir html
+ -ocamlfind ocamldoc $(OCAMLDOCFLAGS) -d html $(OCAMLDOCFILES)
+endif
+endif
-OBJS = virt_mem_gettext.cmo \
- virt_mem_utils.cmo \
- virt_mem_mmap.cmo \
- virt_mem.cmo
-XOBJS = virt_mem_gettext.cmx \
- virt_mem_utils.cmx \
- virt_mem_mmap.cmx \
- virt_mem.cmx
+# Manual page.
-all: $(TARGETS)
+ifeq ($(HAVE_PERLDOC),perldoc)
+virt-mem.1: virt-mem.pod
+ pod2man -c "Virtualization Support" --release "$(PACKAGE)-$(VERSION)" \
+ $< > $@
-virt-mem: $(OBJS)
- ocamlfind ocamlc \
- $(OCAMLCFLAGS) $(OCAMLCPACKAGES) $(OCAMLCLIBS) $^ -o $@
+virt-mem.txt: virt-mem.pod
+ pod2text $< > $@
-virt-mem.opt: $(XOBJS)
- ocamlfind ocamlopt \
- $(OCAMLOPTFLAGS) $(OCAMLOPTPACKAGES) $(OCAMLOPTLIBS) $^ -o $@
+virt-%.1:
+ echo '.so man1/virt-mem.1' > $@
-# Common rules for building OCaml objects.
+install-man:
+ $(MKDIR_P) $(DESTDIR)$(mandir)/man1
+ $(INSTALL) -m 0644 $(MANPAGES) $(DESTDIR)$(mandir)/man1/
-.mli.cmi:
- ocamlfind ocamlc $(OCAMLCFLAGS) $(OCAMLCPACKAGES) -c $<
-.ml.cmo:
- ocamlfind ocamlc $(OCAMLCFLAGS) $(OCAMLCPACKAGES) -c $<
-.ml.cmx:
- ocamlfind ocamlopt $(OCAMLOPTFLAGS) $(OCAMLOPTPACKAGES) -c $<
+else
-clean:
- rm -f *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a \
- *.so *.opt *~ *.dll *.exe *.annot core
+install-man:
+
+endif
# Distribution.
rm -rf $(PACKAGE)-$(VERSION)
mkdir $(PACKAGE)-$(VERSION)
tar -cf - -T MANIFEST | tar -C $(PACKAGE)-$(VERSION) -xf -
+ hg log --style changelog > $(PACKAGE)-$(VERSION)/ChangeLog
$(INSTALL) -m 0755 configure $(PACKAGE)-$(VERSION)/
+ $(INSTALL) -m 0644 config.h.in $(PACKAGE)-$(VERSION)/
tar zcf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
rm -rf $(PACKAGE)-$(VERSION)
ls -l $(PACKAGE)-$(VERSION).tar.gz
check-manifest:
- @for d in `find -type d -name CVS | grep -v '^\./debian/'`; \
- do \
- b=`dirname $$d`/; \
- awk -F/ '$$1 != "D" {print $$2}' $$d/Entries | \
- sed -e "s|^|$$b|" -e "s|^\./||"; \
- done | sort > .check-manifest; \
+ hg manifest | sort > .check-manifest; \
sort MANIFEST > .orig-manifest; \
diff -u .orig-manifest .check-manifest; rv=$$?; \
rm -f .orig-manifest .check-manifest; \
exit $$rv
-#check-manifest:
-# hg manifest | sort > .check-manifest; \
-# sort MANIFEST > .orig-manifest; \
-# diff -u .orig-manifest .check-manifest; rv=$$?; \
-# rm -f .orig-manifest .check-manifest; \
-# exit $$rv
-
-# Developer documentation (in html/ subdirectory).
-
-doc:
- rm -rf html
- mkdir html
- -ocamlfind ocamldoc $(OCAMLDOCFLAGS) -d html *.{ml,mli}
-
-# Dependencies.
-
-depend: .depend
-
-.depend: $(wildcard *.mli) $(wildcard *.ml)
- rm -f .depend
- ocamldep $(SYNTAX) $^ > $@
-
-ifeq ($(wildcard .depend),.depend)
-include .depend
-endif
-
.PHONY: all opt depend install clean distclean configure dist check-manifest \
- release release_stage_2 release_stage_3 force
-
-.SUFFIXES: .cmo .cmi .cmx .ml .mli
+ release release_stage_2 release_stage_3 force
\ No newline at end of file