slave: Use slightly modified event_callback.
[guestfs-browser.git] / Makefile.am
1 # Guestfs Browser.
2 # Copyright (C) 2010-2011 Red Hat Inc.
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along
15 # with this program; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 ACLOCAL_AMFLAGS = -I m4
19
20 EXTRA_DIST = \
21         $(SOURCES) \
22         HACKING \
23         Throbber.png Throbber.gif \
24         config.ml.in \
25         .gitignore \
26         guestfs-browser.pod \
27         guestfs-browser.1 \
28         guestfs-browser.desktop.in \
29         guestfs-browser.png \
30         guestfs-browser-large.png \
31         guestfs-browser.svg \
32         test-desktop-file-validate.sh \
33         html/pod.css
34
35 CLEANFILES = *.cmi *.cmo *.cmx *.cmxa *.o guestfs-browser *~
36
37 TESTS =
38
39 # These are listed here in alphabetical order.
40 SOURCES = \
41         cmdline.mli \
42         cmdline.ml \
43         config.mli \
44         deviceSet.mli \
45         deviceSet.ml \
46         filetree.mli \
47         filetree.ml \
48         filetree_markup.mli \
49         filetree_markup.ml \
50         main.ml \
51         menu_about.mli \
52         menu_about.ml \
53         menu_open_disk.mli \
54         menu_open_disk.ml \
55         menu_open_uri.mli \
56         menu_open_uri.ml \
57         op_checksum_file.mli \
58         op_checksum_file.ml \
59         op_copy_regvalue.mli \
60         op_copy_regvalue.ml \
61         op_disk_usage.mli \
62         op_disk_usage.ml \
63         op_download_as_reg.mli \
64         op_download_as_reg.ml \
65         op_download_dir_find0.mli \
66         op_download_dir_find0.ml \
67         op_download_dir_tarball.mli \
68         op_download_dir_tarball.ml \
69         op_download_file.mli \
70         op_download_file.ml \
71         op_file_information.mli \
72         op_file_information.ml \
73         op_file_properties.mli \
74         op_file_properties.ml \
75         op_inspection_dialog.mli \
76         op_inspection_dialog.ml \
77         op_view_file.mli \
78         op_view_file.ml \
79         slave.mli \
80         slave.ml \
81         slave_types.mli \
82         slave_types.ml \
83         slave_utils.mli \
84         slave_utils.ml \
85         throbber.ml \
86         utils.mli \
87         utils.ml \
88         window.mli \
89         window.ml
90
91 BUILT_SOURCES = \
92         config.ml
93
94 # Note this list must be in dependency order.
95 OBJECTS = \
96         config.cmo \
97         throbber.cmo \
98         utils.cmo \
99         cmdline.cmo \
100         deviceSet.cmo \
101         slave_types.cmo \
102         slave_utils.cmo \
103         slave.cmo \
104         filetree_markup.cmo \
105         filetree.cmo \
106         op_checksum_file.cmo \
107         op_copy_regvalue.cmo \
108         op_disk_usage.cmo \
109         op_download_as_reg.cmo \
110         op_download_dir_find0.cmo \
111         op_download_dir_tarball.cmo \
112         op_download_file.cmo \
113         op_file_information.cmo \
114         op_file_properties.cmo \
115         op_inspection_dialog.cmo \
116         op_view_file.cmo \
117         window.cmo \
118         menu_open_uri.cmo \
119         menu_open_disk.cmo \
120         menu_about.cmo \
121         main.cmo
122
123 XOBJECTS = $(OBJECTS:.cmo=.cmx)
124
125 bin_SCRIPTS = guestfs-browser
126
127 OCAMLPACKAGES = \
128         -package libvirt,guestfs,hivex,lablgtk2,lablgtk2.auto-init,extlib,xml-light,calendar,camomile,threads,bitstring,bitstring.syntax -syntax bitstring
129 OCAMLCFLAGS = \
130         -g \
131         -warn-error CDEFLMPSUVYZX-3 \
132         -thread \
133         $(OCAMLPACKAGES) \
134         -predicates threads
135 OCAMLOPTFLAGS = \
136         -ccopt -g \
137         $(OCAMLCFLAGS)
138 OCAMLDOCFLAGS = \
139         $(OCAMLPACKAGES) \
140         -predicates threads \
141         -I +threads \
142         -sort -html
143
144 if HAVE_OCAMLOPT
145 guestfs-browser: $(XOBJECTS)
146         $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \
147           -linkpkg \
148           $^ -o $@
149 else
150 guestfs-browser: $(OBJECTS)
151         $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \
152           -linkpkg \
153           $^ -o $@
154 endif
155
156 # This file is built.  However gdk_pixbuf_mlsource requires X11 to
157 # run, which prevents this from being built in places where an X
158 # display is not available, such as on automated builders.  So we'll
159 # bundle this file in with the tarball anyway.
160 throbber.ml: Throbber.png Throbber.gif
161         $(GDK_PIXBUF_MLSOURCE) --build-list \
162           static Throbber.png \
163           animation Throbber.gif \
164           > $@-t && mv $@-t $@
165
166 .mli.cmi:
167         $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@
168 .ml.cmo:
169         $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -c $< -o $@
170 .ml.cmx:
171         $(OCAMLFIND) ocamlopt $(OCAMLCFLAGS) -c $< -o $@
172
173 # Icon.
174 icondir = $(datadir)/$(PACKAGE_NAME)/pixmaps
175 icon_DATA = guestfs-browser.svg guestfs-browser-large.png guestfs-browser.png
176
177 # Desktop file.
178 desktopdir = $(datadir)/applications
179 desktop_DATA = guestfs-browser.desktop
180
181 guestfs-browser.desktop: guestfs-browser.desktop.in Makefile
182         $(SED) "s,\@icondir\@,$(icondir),g" < $< > $@-t
183         mv $@-t $@
184
185 TESTS += test-desktop-file-validate.sh
186
187 # Config.  Can't use autoconf to build this because we want
188 # to embed the true icondir path.
189 config.ml: config.ml.in Makefile
190         < $< \
191         $(SED) \
192           -e "s,\@PACKAGE_NAME\@,$(PACKAGE_NAME),g" \
193           -e "s,\@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g" \
194           -e "s,\@HIVEXREGEDIT\@,$(HIVEXREGEDIT),g" \
195           -e "s,\@OPENER\@,$(OPENER),g" \
196           -e "s,\@icondir\@,$(icondir),g" \
197           > $@-t
198         mv $@-t $@
199
200 # Man page.
201 man_MANS = guestfs-browser.1
202
203 if HAVE_PERLDOC
204
205 guestfs-browser.1: guestfs-browser.pod
206         pod2man \
207           --section 1 \
208           -c "Virtualization Support" \
209           --release "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" \
210           $< > $@
211
212 noinst_DATA = \
213         html/guestfs-browser.1.html
214
215 html/guestfs-browser.1.html: guestfs-browser.pod
216         mkdir -p html
217         pod2html \
218           --css 'pod.css' \
219           --htmldir html \
220           --outfile html/guestfs-browser.1.html \
221           guestfs-browser.pod
222
223 endif
224
225 # Maintainer website update.
226 HTMLFILES = \
227         html/guestfs-browser.1.html
228
229 WEBSITEDIR = $(HOME)/d/redhat/websites/libguestfs
230
231 website: $(HTMLFILES)
232         cp $(HTMLFILES) $(WEBSITEDIR)
233
234 CLEANFILES += $(HTMLFILES) pod2*.tmp
235
236 # Convert internal documentation to HTML.
237 docs:
238         rm -rf doc
239         mkdir -p doc
240         $(OCAMLFIND) ocamldoc -d doc $(OCAMLDOCFLAGS) $(SOURCES)
241
242 # Dependencies.
243 depend: .depend
244
245 .depend: $(wildcard *.mli) $(wildcard *.ml)
246         $(OCAMLFIND) ocamldep $(OCAMLPACKAGES) $^ | \
247           $(SED) -e 's/ *$$//' | \
248           $(SED) -e 's/[ \t]:/:/' | \
249           $(SED) -e :a -e '/ *\\$$/N; s/ *\\\n */ /; ta' | \
250           LANG=C sort > $@-t
251         mv $@-t $@
252
253 include .depend
254
255 .PHONY: depend docs
256
257 # The dependencies aren't safe for parallel make (XXX fixme).
258 .NOTPARALLEL: