2 # Copyright (C) 2009 Red Hat Inc.
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.
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.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 AC_INIT([libguestfs],[1.0.4])
21 AC_CONFIG_MACRO_DIR([m4])
25 dnl Check for basic C environment.
31 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
35 dnl Check support for 64 bit file offsets.
39 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h])
41 dnl Check for rpcgen and XDR library. rpcgen is optional.
42 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
43 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
44 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
45 AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
48 dnl Check for pod2man and pod2text.
49 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
50 test "x$POD2MAN" = "xno" &&
51 AC_MSG_ERROR([pod2man must be installed])
52 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
53 test "x$POD2TEXT" = "xno" &&
54 AC_MSG_ERROR([pod2text must be installed])
56 dnl Check for QEMU for running binaries on this $host_cpu, fall
57 dnl back to basic 'qemu'.
58 AC_PATH_PROGS([QEMU],[qemu-system-$host_cpu qemu],[no],
59 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
60 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
61 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
63 dnl Check for febootstrap etc.
64 AC_CHECK_PROG([FEBOOTSTRAP],
65 [febootstrap],[febootstrap],[no])
66 test "x$FEBOOTSTRAP" = "xno" && \
67 AC_MSG_ERROR([febootstrap must be installed])
68 AC_CHECK_PROG([FEBOOTSTRAP_RUN],
69 [febootstrap-run],[febootstrap-run],[no])
70 test "x$FEBOOTSTRAP_RUN" = "xno" && \
71 AC_MSG_ERROR([febootstrap-run must be installed])
72 AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
73 [febootstrap-minimize],[febootstrap-minimize],[no])
74 test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
75 AC_MSG_ERROR([febootstrap-minimize must be installed])
76 AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
77 [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
78 test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
79 AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
81 dnl --with-repo to specify a Fedora repository.
83 [AS_HELP_STRING([--with-repo],
84 [set name of Fedora repository @<:@default=fedora-10@:>@])],
86 [with_repo=fedora-10])
89 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
91 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
93 dnl --with-updates to specify a Fedora updates repository.
94 AC_ARG_WITH([updates],
95 [AS_HELP_STRING([--with-updates],
96 [set name of Fedora updates repository @<:@default=updates-released-f10@:>@])],
98 [with_updates=updates-released-f10])
99 UPDATES="$with_updates"
101 AC_DEFINE_UNQUOTED([UPDATES],["$UPDATES"],[Name of Fedora updates repository.])
103 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
105 dnl --with-mirror to specify a local Fedora mirror.
106 AC_ARG_WITH([mirror],
107 [AS_HELP_STRING([--with-mirror],
108 [set URI of a local Fedora mirror])],
111 MIRROR="$with_mirror"
115 AC_ARG_WITH([readline],
116 [AS_HELP_STRING([--with-readline],
117 [support fancy command line editing @<:@default=check@:>@])],
119 [with_readline=check])
122 AS_IF([test "x$with_readline" != xno],
123 [AC_CHECK_LIB([readline], [main],
124 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
125 AC_DEFINE([HAVE_LIBREADLINE], [1],
126 [Define if you have libreadline])
128 [if test "x$with_readline" != xcheck; then
130 [--with-readline was given, but test for readline failed])
134 dnl Check for OCaml (optional, for OCaml bindings).
137 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
139 dnl Check for Perl (optional, for Perl bindings).
140 dnl XXX This isn't quite right, we should check for devel libraries.
141 AC_CHECK_PROG([PERL],[perl],[perl],[no])
142 AM_CONDITIONAL([HAVE_PERL],[test "x$PERL" != "xno"])
144 dnl Check for Python (optional, for Python bindings).
145 AC_CHECK_PROG([PYTHON],[python],[python],[no])
150 PYTHON_SITE_PACKAGES=
152 if test "x$PYTHON" != "xno"; then
153 PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
154 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
156 $PYTHON_PREFIX/include/python$PYTHON_VERSION \
157 /usr/include/python$PYTHON_VERSION \
158 /usr/local/include/python$PYTHON_VERSION
160 AC_MSG_CHECKING([Python.h in $d])
161 if test -r "$d/Python.h"; then
162 AC_MSG_RESULT([found])
166 AC_MSG_RESULT([not found])
169 $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
170 $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
171 /usr/lib64/python$PYTHON_VERSION/site-packages \
172 /usr/lib/python$PYTHON_VERSION/site-packages \
173 /usr/local/lib/python$PYTHON_VERSION/site-packages
175 AC_MSG_CHECKING([for $d])
176 if test -d "$d"; then
177 AC_MSG_RESULT([found])
178 PYTHON_SITE_PACKAGES=$d
181 AC_MSG_RESULT([not found])
185 AC_SUBST(PYTHON_PREFIX)
186 AC_SUBST(PYTHON_VERSION)
187 AC_SUBST(PYTHON_INCLUDEDIR)
188 AC_SUBST(PYTHON_SITE_PACKAGES)
190 AM_CONDITIONAL([HAVE_PYTHON],
191 [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"])
193 dnl Check for Ruby and rake (optional, for Ruby bindings).
194 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
195 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
197 AM_CONDITIONAL([HAVE_RUBY],
198 [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"])
201 AC_ARG_WITH(java_home,
202 [AS_HELP_STRING([--with-java-home],
203 [specify path to JDK directory @<:@default=check@:>@])],
205 [with_java_home=check])
207 if test "x$with_java_home" != "xno"; then
208 if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
210 if test -d "$with_java_home"; then
211 JAVA_HOME="$with_java_home"
213 AC_MSG_FAILURE([$with_java_home is not a directory])
216 if test "x$JAVA_HOME" = "x"; then
217 JAVA_HOME=/usr/lib/jvm/java
219 AC_MSG_CHECKING(for JDK in $JAVA_HOME)
220 if test ! -x "$JAVA_HOME/bin/java"; then
221 AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary])
223 JAVA="$JAVA_HOME/bin/java"
225 if test ! -x "$JAVA_HOME/bin/javac"; then
226 AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
228 JAVAC="$JAVA_HOME/bin/javac"
230 if test ! -x "$JAVA_HOME/bin/javah"; then
231 AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
233 JAVAH="$JAVA_HOME/bin/javah"
235 if test ! -x "$JAVA_HOME/bin/javadoc"; then
236 AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
238 JAVADOC="$JAVA_HOME/bin/javadoc"
240 if test ! -x "$JAVA_HOME/bin/jar"; then
241 AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
243 JAR="$JAVA_HOME/bin/jar"
245 java_version=`$JAVA -version 2>&1 | grep "java version"`
246 AC_MSG_RESULT(found $java_version in $JAVA_HOME)
249 AC_MSG_CHECKING([for jni.h])
250 if test -f "$JAVA_HOME/include/jni.h"; then
251 JNI_CFLAGS="-I$JAVA_HOME/include"
253 if test "`find $JAVA_HOME -name jni.h`" != ""; then
254 head=`find $JAVA_HOME -name jni.h | tail -1`
258 AC_MSG_FAILURE([missing jni.h header file])
261 AC_MSG_RESULT([$JNI_CFLAGS])
264 AC_MSG_CHECKING([for jni_md.h])
266 *linux*) system="linux" ;;
267 *SunOS*) system="solaris" ;;
268 *cygwin*) system="win32" ;;
269 *) system="$build_os" ;;
271 if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
272 JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
274 if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
275 head=`find $JAVA_HOME -name jni_md.h | tail -1`
277 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
279 AC_MSG_FAILURE([missing jni_md.h header file])
282 AC_MSG_RESULT([$JNI_CFLAGS])
284 dnl Need extra version flag?
285 AC_MSG_CHECKING([extra javac flags])
287 javac_version=`$JAVAC -version 2>&1`
288 case "$javac_version" in
290 JAVAC_FLAGS="-source 1.5" ;;
292 AC_MSG_RESULT([$JAVAC_FLAGS])
294 dnl Where to install jarfiles.
295 dnl XXX How to make it configurable?
296 JAR_INSTALL_DIR=\${prefix}/share/java
297 JNI_INSTALL_DIR=\${libdir}
300 jni_major_version=`echo $VERSION | awk -F. '{print $1}'`
301 jni_minor_version=`echo $VERSION | awk -F. '{print $2}'`
302 jni_micro_version=`echo $VERSION | awk -F. '{print $3}'`
303 JNI_VERSION_INFO=`expr $jni_major_version + $jni_minor_version`:$jni_micro_version:$jni_minor_version
313 AC_SUBST(JAVAC_FLAGS)
314 AC_SUBST(JAR_INSTALL_DIR)
315 AC_SUBST(JNI_INSTALL_DIR)
316 AC_SUBST(JNI_VERSION_INFO)
318 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
321 AC_CONFIG_SUBDIRS([daemon])
323 dnl Produce output files.
324 AC_CONFIG_HEADERS([config.h])
325 AC_CONFIG_FILES([Makefile src/Makefile fish/Makefile examples/Makefile
327 ocaml/Makefile ocaml/examples/Makefile
330 ruby/Makefile ruby/Rakefile
332 make-initramfs.sh update-initramfs.sh
334 ocaml/META perl/Makefile.PL])
338 chmod +x make-initramfs.sh update-initramfs.sh
343 echo "------------------------------------------------------------"
344 echo "Thank you for downloading $PACKAGE_STRING"
346 echo "This is how we have configured the optional components for you today:"
348 echo -n "OCaml bindings ...................... "
349 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
350 echo -n "Perl bindings ....................... "
351 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
352 echo -n "Python bindings ..................... "
353 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
354 echo -n "Ruby bindings ....................... "
355 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
356 echo -n "Java bindings ....................... "
357 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
359 echo "If any optional component is configured 'no' when you expected 'yes'"
360 echo "then you should check the preceeding messages."
362 echo "Please report bugs back to the fedora-virt mailing list:"
363 echo "http://www.redhat.com/mailman/listinfo/fedora-virt"
365 echo "Next you should type 'make' to build the package,"
366 echo "then 'make check' to run the tests."
367 echo "------------------------------------------------------------"