ACLOCAL_AMFLAGS = -I m4
-EXTRA_DIST = HACKING Throbber.png Throbber.gif
+EXTRA_DIST = \
+ $(SOURCES) \
+ HACKING \
+ Throbber.png Throbber.gif \
+ .gitignore guestfs-browser.spec \
+ guestfs-browser.pod \
+ guestfs-browser.1 \
+ html/pod.css
-CLEANFILES = *.cmi *.cmo *.cmx *.o guestfs-browser throbber.ml
+CLEANFILES = *.cmi *.cmo *.cmx *.o guestfs-browser
+# These are listed here in alphabetical order.
SOURCES = \
+ cmdline.mli \
+ cmdline.ml \
+ config.mli \
+ config.ml \
+ deviceSet.mli \
+ deviceSet.ml \
+ filetree.mli \
+ filetree.ml \
+ filetree_ops.mli \
+ filetree_ops.ml \
+ filetree_type.mli \
+ filetree_type.ml \
main.ml \
slave.mli \
slave.ml \
throbber.ml \
utils.mli \
- utils.ml
+ utils.ml \
+ window.mli \
+ window.ml
+# Note this list must be in dependency order.
OBJECTS = \
- main.cmx \
- slave.cmx \
+ config.cmx \
throbber.cmx \
- utils.cmx
+ utils.cmx \
+ cmdline.cmx \
+ deviceSet.cmx \
+ slave.cmx \
+ filetree_type.cmx \
+ filetree_ops.cmx \
+ filetree.cmx \
+ window.cmx \
+ main.cmx
bin_SCRIPTS = guestfs-browser
-OCAMLOPTFLAGS = \
- -warn-error A \
+OCAMLPACKAGES = libvirt,guestfs,lablgtk2,extlib,xml-light,threads
+OCAMLCFLAGS = \
+ -g \
+ -warn-error CDEFLMPSUVYZX \
-thread \
- -package libvirt,guestfs,lablgtk2,extlib,xml-light,threads
+ -package $(OCAMLPACKAGES) \
+ -predicates threads
+OCAMLOPTFLAGS = $(OCAMLCFLAGS)
+OCAMLDOCFLAGS = \
+ -package $(OCAMLPACKAGES) \
+ -predicates threads \
+ -I +threads \
+ -sort -html
guestfs-browser: $(OBJECTS)
- ocamlfind ocamlopt $(OCAMLOPTFLAGS) \
+ $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \
-predicates init,threads \
-linkpkg gtkThread.cmx \
$^ -o $@
+# This file is built. However gdk_pixbuf_mlsource requires X11 to
+# run, which prevents this from being built in places where an X
+# display is not available, such as on automated builders. So we'll
+# bundle this file in with the tarball anyway.
throbber.ml: Throbber.png Throbber.gif
- gdk_pixbuf_mlsource --build-list \
+ $(GDK_PIXBUF_MLSOURCE) --build-list \
static Throbber.png \
animation Throbber.gif \
> $@-t && mv $@-t $@
+
+.mli.cmi:
+ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@
+.ml.cmo:
+ $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@
+.ml.cmx:
+ $(OCAMLFIND) ocamlopt $(OCAMLCFLAGS) -c $< -o $@
+
+# Man page.
+man_MANS = guestfs-browser.1
+
+if HAVE_PERLDOC
+
+guestfs-browser.1: guestfs-browser.pod
+ pod2man \
+ --section 1 \
+ -c "Virtualization Support" \
+ --release "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
+ $< > $@
+
+noinst_DATA = \
+ html/guestfs-browser.1.html
+
+html/guestfs-browser.1.html: guestfs-browser.pod
+ mkdir -p html
+ pod2html \
+ --css 'pod.css' \
+ --htmldir html \
+ --outfile html/guestfs-browser.1.html \
+ guestfs-browser.pod
+
+endif
+
+# Maintainer website update.
+HTMLFILES = \
+ html/guestfs-browser.1.html
+
+WEBSITEDIR = $(HOME)/d/redhat/websites/libguestfs
+
+website: $(HTMLFILES)
+ cp $(HTMLFILES) $(WEBSITEDIR)
+
+CLEANFILES += $(HTMLFILES) pod2*.tmp
+
+# Convert internal documentation to HTML.
+docs:
+ rm -rf doc
+ mkdir -p doc
+ $(OCAMLFIND) ocamldoc -d doc $(OCAMLDOCFLAGS) $(SOURCES)
+
+# Dependencies.
+depend: .depend
+
+.depend: $(wildcard *.mli) $(wildcard *.ml)
+ rm -f $@ $@-t
+ $(OCAMLFIND) ocamldep $^ | \
+ $(SED) -e :a -e '/ *\\$$/N; s/ *\\\n */ /; ta' | \
+ sort > $@-t
+ mv $@-t $@
+
+include .depend
+
+.PHONY: depend docs