2 # Copyright (C) 2007 Red Hat Inc., Richard W.M. Jones
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2 of the License, or (at your option) any later version.
9 # This library 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 GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 dnl Process this file with autoconf to produce a configure script.
20 AC_INIT(ocaml-libvirt,0.4.0.2)
22 dnl Check for basic C environment.
28 test "x$U" != "x" && AC_MSG_ERROR(Compiler not ANSI compliant)
32 dnl Select some C flags based on the host type.
36 WARNINGS="-Wall -Werror"
41 WARNINGS="$WARNINGS -Wno-unused"
50 dnl Check for libvirt development environment.
52 AC_HELP_STRING([--with-libvirt=PATH],[Set path to installed libvirt]),
53 [if test "x$withval" != "x"; then
54 CFLAGS="$CFLAGS -I$withval/include"
55 LDFLAGS="$LDFLAGS -L$withval/lib"
58 AC_CHECK_LIB(virt,virConnectOpen,
60 AC_MSG_ERROR([You must install libvirt library]))
61 AC_CHECK_HEADER([libvirt/libvirt.h],
63 AC_MSG_ERROR([You must install libvirt development package]))
65 dnl Check for libvirt >= 0.2.1 (our minimum supported version).
66 dnl See: http://libvirt.org/hvsupport.html
67 AC_CHECK_FUNC(virConnectGetCapabilities,
69 AC_MSG_ERROR([You must have libvirt >= 0.2.1]))
71 dnl Check for optional libvirt functions added since 0.2.1.
72 dnl See: http://libvirt.org/hvsupport.html
73 AC_CHECK_FUNCS([virConnectGetHostname \
76 virDomainGetSchedulerParameters \
77 virDomainGetSchedulerType \
78 virDomainInterfaceStats \
80 virDomainSetSchedulerParameters \
81 virNodeGetFreeMemory \
82 virNodeGetCellsFreeMemory \
88 virDomainCreateLinuxJob \
91 virDomainCoreDumpJob \
93 virNetworkCreateXMLJob \
95 virStoragePoolGetConnect \
96 virConnectNumOfStoragePools \
97 virConnectListStoragePools \
98 virConnectNumOfDefinedStoragePools \
99 virConnectListDefinedStoragePools \
100 virConnectDiscoverStoragePools \
101 virStoragePoolLookupByName \
102 virStoragePoolLookupByUUID \
103 virStoragePoolLookupByUUIDString \
104 virStoragePoolLookupByVolume \
105 virStoragePoolCreateXML \
106 virStoragePoolDefineXML \
107 virStoragePoolUndefine \
108 virStoragePoolCreate \
109 virStoragePoolDestroy \
110 virStoragePoolShutdown \
112 virStoragePoolRefresh \
113 virStoragePoolGetName \
114 virStoragePoolGetUUID \
115 virStoragePoolGetUUIDString \
116 virStoragePoolGetInfo \
117 virStoragePoolGetXMLDesc \
118 virStoragePoolGetAutostart \
119 virStoragePoolSetAutostart \
120 virStoragePoolNumOfVolumes \
121 virStoragePoolListVolumes \
122 virStorageVolLookupByName \
123 virStorageVolLookupByKey \
124 virStorageVolLookupByPath \
125 virStorageVolGetName \
126 virStorageVolGetKey \
127 virStorageVolCreateXML \
128 virStorageVolDestroy \
130 virStorageVolGetInfo \
131 virStorageVolGetXMLDesc \
132 virStorageVolGetPath \
135 dnl Check for optional types added since 0.2.1.
136 AC_CHECK_TYPES([virJobPtr, virStoragePoolPtr, virStorageVolPtr])
138 dnl We also use <libvirt/virterror.h>
139 AC_CHECK_HEADER([libvirt/virterror.h],
141 AC_MSG_ERROR([You must install libvirt development package]))
143 dnl Check for optional ncurses.
144 AC_CHECK_LIB(ncurses,initscr)
146 dnl Check for basic OCaml environment & findlib.
147 dnl Note that findlib is not necessary, but things will work better
148 dnl if it is present.
152 if test "x$OCAMLFIND" != "x"; then
153 dnl Use ocamlfind to find the required packages ...
155 dnl Check for required OCaml packages.
156 AC_CHECK_OCAML_PKG(unix)
157 if test "x$pkg_unix" != "xyes"; then
158 AC_MSG_ERROR([Cannot find required OCaml package 'unix'])
161 dnl Check for optional OCaml packages.
162 AC_CHECK_OCAML_PKG(extlib)
163 AC_CHECK_OCAML_PKG(lablgtk2)
164 AC_CHECK_OCAML_PKG(curses)
165 AC_CHECK_OCAML_PKG(gettext)
166 AC_CHECK_OCAML_PKG(xml-light)
167 AC_CHECK_OCAML_PKG(csv)
168 AC_CHECK_OCAML_PKG(calendar)
172 AC_SUBST(pkg_lablgtk2)
174 AC_SUBST(pkg_gettext)
175 AC_SUBST(pkg_xml_light)
177 AC_SUBST(pkg_calendar)
179 dnl Use a basic module test if there is no findlib ...
181 dnl Check for required OCaml modules.
182 AC_CHECK_OCAML_MODULE(unix,pkg_unix,Unix,[.])
183 if test "x$pkg_unix" = "xno"; then
184 AC_MSG_ERROR([Cannot find required OCaml package 'unix'])
187 dnl Check for optional OCaml modules.
188 AC_CHECK_OCAML_MODULE(extlib,pkg_extlib,ExtString,[+extlib])
189 AC_CHECK_OCAML_MODULE(lablgtk2,pkg_lablgtk2,GMain,[+lablgtk2])
190 AC_CHECK_OCAML_MODULE(curses,pkg_curses,Curses,[+curses])
191 AC_CHECK_OCAML_MODULE(gettext,pkg_gettext,Gettext,[+gettext]) dnl XXX
192 AC_CHECK_OCAML_MODULE(xml-light,pkg_xml_light,Xml,[+xml-light])
193 AC_CHECK_OCAML_MODULE(csv,pkg_csv,Csv,[+csv])
194 AC_CHECK_OCAML_MODULE(calendar,pkg_calendar,Calendar,[+calendar])
197 dnl Which subpackages (== subdirs) will we build?
198 subdirs="libvirt examples mlvirsh"
199 if test "x$pkg_lablgtk2" != "xno"; then
200 subdirs="$subdirs virt-ctrl"
202 if test "x$pkg_extlib" != "xno" -a "x$pkg_curses" != "xno"; then
203 subdirs="$subdirs virt-top"
205 if test "x$pkg_extlib" != "xno" -a "x$pkg_xml_light" != "xno"; then
206 subdirs="$subdirs virt-df"
210 dnl Check for optional perldoc (for building manual pages).
211 AC_CHECK_PROG(HAVE_PERLDOC,perldoc,perldoc)
213 dnl Check for optional NSIS (for building a Windows installer).
215 [AS_HELP_STRING([--with-nsis],
216 [use NSIS to build a Windows installer])],
230 eval pushd "\$$1" > /dev/null
236 if test "x$with_nsis" != "xno"; then
237 AC_PATH_PROG(MAKENSIS,makensis,[],[$with_nsis:$PATH])
238 if test "x$MAKENSIS" = "x"; then
239 AC_MSG_FAILURE([--with-nsis was given, but could not find MAKENSIS.EXE])
242 # MAKENSIS is set so we will build a rule for making a Windows
243 # installer. To support this, generate wininstaller.nsis.
248 echo Checking $d for DLLs ... >&5
249 if test -f "$d/libvirt-0.dll"; then
250 LIBVIRT_DLL_PATH="$d"
252 if test -f "$d/libxdr.dll"; then
255 if test -f "$d/libxml2-2.dll"; then
256 LIBXML2_DLL_PATH="$d"
258 if test -f "$d/libgpg-error-0.dll"; then
261 if test -f "$d/libgtk-win32-2.0-0.dll"; then
268 if test "x$LIBVIRT_DLL_PATH" = "x"; then
269 AC_MSG_FAILURE([cannot find libvirt-0.dll in PATH])
271 if test "x$LIBXDR_DLL_PATH" = "x"; then
272 AC_MSG_FAILURE([cannot find libxdr.dll in PATH])
274 if test "x$LIBXML2_DLL_PATH" = "x"; then
275 AC_MSG_FAILURE([cannot find libxml2-2.dll in PATH])
277 if test "x$GNUTLS_DLL_PATH" = "x"; then
278 AC_MSG_FAILURE([cannot find GnuTLS DLLs in PATH])
280 if test "x$GTK_DLL_PATH" = "x"; then
281 AC_MSG_WARN([cannot find GTK DLLs in PATH])
284 # Change the paths to Windows paths.
285 msys_to_win_dir LIBVIRT_DLL_PATH
286 msys_to_win_dir LIBXDR_DLL_PATH
287 msys_to_win_dir LIBXML2_DLL_PATH
288 msys_to_win_dir GNUTLS_DLL_PATH
289 if test "x$GTK_DLL_PATH" != "x"; then
290 msys_to_win_dir GTK_DLL_PATH
291 msys_to_win_dir GTK_PATH
295 AC_SUBST(LIBVIRT_DLL_PATH)
296 AC_SUBST(LIBXDR_DLL_PATH)
297 AC_SUBST(LIBXML2_DLL_PATH)
298 AC_SUBST(GNUTLS_DLL_PATH)
299 AC_SUBST(GTK_DLL_PATH)
303 echo "------------------------------------------------------------"
304 echo "Thanks for downloading" $PACKAGE_STRING
305 echo " subpackages to build : $subdirs"
306 echo "------------------------------------------------------------"
308 dnl Produce output files.
309 AC_CONFIG_HEADERS([config.h])
310 AC_CONFIG_FILES([META
311 libvirt/libvirt_version.ml
321 if test "x$MAKENSIS" != "x"; then
322 AC_CONFIG_FILES([wininstaller.nsis])