# hivex
-# Copyright (C) 2009-2010 Red Hat Inc.
+# Copyright (C) 2009-2011 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# major/minor/release must be numbers
m4_define([hivex_major], [1])
-m4_define([hivex_minor], [2])
-m4_define([hivex_release], [1])
+m4_define([hivex_minor], [3])
+m4_define([hivex_release], [0])
# extra can be any string
m4_define([hivex_extra], [])
gl_EARLY
gl_INIT
-AC_PROG_LIBTOOL
+AM_PROG_LIBTOOL
dnl Check for basic C environment.
AC_PROG_CC_STDC
nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization
# was not possible, safe to ignore
nw="$nw -Wpacked" # Allow attribute((packed)) on structs
+ nw="$nw -Wlong-long" # Allow long long since it's required
+ # by xstrtoll.
gl_MANYWARN_ALL_GCC([ws])
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
dnl Check for OCaml (optional, for OCaml bindings).
AC_PROG_OCAML
AC_PROG_FINDLIB
-AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
+AM_CONDITIONAL([HAVE_OCAML],
+ [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
+AM_CONDITIONAL([HAVE_OCAMLOPT],
+ [test "x$OCAMLOPT" != "xno" && test "x$OCAMLFIND" != "xno"])
if test "x$OCAMLC" != "xno"; then
dnl Check if we have caml/unixsupport.h header (OCaml bindings only).
echo "char $f (); char foo() { return $f (); }" > conftest.c
rm -f conftest_ml.ml
touch conftest_ml.ml
- if $OCAMLOPT -c conftest.c 2>/dev/null && \
- $OCAMLOPT -c conftest_ml.ml 2>/dev/null && \
- $OCAMLOPT conftest.o conftest_ml.cmx -o conftest 2>/dev/null ; then
+ if $OCAMLC -c conftest.c 2>/dev/null && \
+ $OCAMLC -c conftest_ml.ml 2>/dev/null && \
+ $OCAMLC conftest.o conftest_ml.cmo -o conftest 2>/dev/null ; then
AC_DEFINE([HAVE_CAML_RAISE_WITH_ARGS],[1],
[Defined if function caml_raise_with_args exists.])
AC_MSG_RESULT([found])
dnl Check for Perl modules that must be present to compile and
dnl test the Perl bindings.
missing_perl_modules=no
-for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker IO::Stringy; do
+for pm in Test::More ExtUtils::MakeMaker IO::Stringy; do
AC_MSG_CHECKING([for $pm])
if ! perl -M$pm -e1 >/dev/null 2>&1; then
AC_MSG_RESULT([no])
fi
AM_CONDITIONAL([HAVE_PERL],
- [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
-
-dnl dnl Check for Python (optional, for Python bindings).
-dnl AC_CHECK_PROG([PYTHON],[python],[python],[no])
-
-dnl PYTHON_PREFIX=
-dnl PYTHON_VERSION=
-dnl PYTHON_INCLUDEDIR=
-dnl PYTHON_SITE_PACKAGES=
-
-dnl if test "x$PYTHON" != "xno"; then
-dnl PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
-dnl PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
-dnl for d in \
-dnl $PYTHON_PREFIX/include/python$PYTHON_VERSION \
-dnl /usr/include/python$PYTHON_VERSION \
-dnl /usr/local/include/python$PYTHON_VERSION
-dnl do
-dnl AC_MSG_CHECKING([Python.h in $d])
-dnl if test -r "$d/Python.h"; then
-dnl AC_MSG_RESULT([found])
-dnl PYTHON_INCLUDEDIR=$d
-dnl break
-dnl fi
-dnl AC_MSG_RESULT([not found])
-dnl done
-dnl for d in \
-dnl $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
-dnl $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
-dnl /usr/lib64/python$PYTHON_VERSION/site-packages \
-dnl /usr/lib/python$PYTHON_VERSION/site-packages \
-dnl /usr/local/lib/python$PYTHON_VERSION/site-packages
-dnl do
-dnl AC_MSG_CHECKING([for $d])
-dnl if test -d "$d"; then
-dnl AC_MSG_RESULT([found])
-dnl PYTHON_SITE_PACKAGES=$d
-dnl break
-dnl fi
-dnl AC_MSG_RESULT([not found])
-dnl done
-dnl fi
+ [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
+
+dnl Check for Python (optional, for Python bindings).
+AC_CHECK_PROG([PYTHON],[python],[python],[no])
+
+PYTHON_PREFIX=
+PYTHON_VERSION=
+
+if test "x$PYTHON" != "xno"; then
+ PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
+ PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
+
+ AC_MSG_CHECKING([for Python include path])
+ if test -z "$PYTHON_INCLUDEDIR"; then
+ python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc ());"`
+ PYTHON_INCLUDEDIR=$python_path
+ fi
+ AC_MSG_RESULT([$PYTHON_INCLUDEDIR])
+
+ AC_MSG_CHECKING([for Python site-packages path])
+ if test -z "$PYTHON_SITE_PACKAGES"; then
+ PYTHON_SITE_PACKAGES=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_lib(1,0));"`
+ fi
+ AC_MSG_RESULT([$PYTHON_SITE_PACKAGES])
+
+ old_LIBS="$LIBS"
+ LIBS="$LIBS -lpython$PYTHON_VERSION"
+ AC_CHECK_FUNCS([PyCapsule_New])
+ LIBS="$old_LIBS"
+fi
-dnl AC_SUBST(PYTHON_PREFIX)
-dnl AC_SUBST(PYTHON_VERSION)
-dnl AC_SUBST(PYTHON_INCLUDEDIR)
-dnl AC_SUBST(PYTHON_SITE_PACKAGES)
+AC_SUBST(PYTHON_PREFIX)
+AC_SUBST(PYTHON_VERSION)
+AC_SUBST(PYTHON_INCLUDEDIR)
+AC_SUBST(PYTHON_SITE_PACKAGES)
-dnl AM_CONDITIONAL([HAVE_PYTHON],
-dnl [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"])
+AM_CONDITIONAL([HAVE_PYTHON],
+ [test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_SITE_PACKAGES" != "x"])
-dnl dnl Check for Ruby and rake (optional, for Ruby bindings).
-dnl AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
-dnl AC_CHECK_PROG([RAKE],[rake],[rake],[no])
+dnl Check for Ruby and rake (optional, for Ruby bindings).
+AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
+AC_CHECK_PROG([RAKE],[rake],[rake],[no])
-dnl AM_CONDITIONAL([HAVE_RUBY],
-dnl [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"])
+AM_CONDITIONAL([HAVE_RUBY],
+ [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
dnl dnl Check for Java.
dnl AC_ARG_WITH(java_home,
dnl [with_java_home=check])
dnl if test "x$with_java_home" != "xno"; then
-dnl if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
+dnl if test "x$with_java_home" != "xyes" && test "x$with_java_home" != "xcheck"
dnl then
dnl # Reject unsafe characters in $JAVA_HOME
dnl jh_lf='
dnl /usr/lib/jvm/java \
dnl /usr/lib/jvm/java-6-openjdk
dnl do
-dnl if test -d $d -a -f $d/bin/java; then
+dnl if test -d $d && test -f $d/bin/java; then
dnl JAVA_HOME=$d
dnl break
dnl fi
dnl Produce output files.
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile
+ generator/Makefile
gnulib/lib/Makefile
gnulib/tests/Makefile
hivex.pc
lib/tools/Makefile
ocaml/Makefile ocaml/META
perl/Makefile perl/Makefile.PL
+ python/Makefile
po/Makefile.in
regedit/Makefile
+ ruby/Makefile ruby/Rakefile
sh/Makefile
xml/Makefile])
+AC_CONFIG_FILES([python/run-python-tests], [chmod +x python/run-python-tests])
AC_OUTPUT
dnl Produce summary.
if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo -n "Perl bindings ....................... "
if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
-dnl echo -n "Python bindings ..................... "
-dnl if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
-dnl echo -n "Ruby bindings ....................... "
-dnl if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
+echo -n "Python bindings ..................... "
+if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
+echo -n "Ruby bindings ....................... "
+if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
dnl echo -n "Java bindings ....................... "
dnl if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
dnl echo -n "Haskell bindings .................... "