# major/minor/release must be numbers
m4_define([hivex_major], [1])
-m4_define([hivex_minor], [2])
-m4_define([hivex_release], [7])
+m4_define([hivex_minor], [3])
+m4_define([hivex_release], [3])
# extra can be any string
m4_define([hivex_extra], [])
nw="$nw -Wpacked" # Allow attribute((packed)) on structs
nw="$nw -Wlong-long" # Allow long long since it's required
# by xstrtoll.
+ nw="$nw -Wsuggest-attribute=pure" # Don't suggest pure functions.
+# nw="$nw -Wsuggest-attribute=const" # Don't suggest const functions.
+# nw="$nw -Wunsuffixed-float-constants" # Don't care about these.
gl_MANYWARN_ALL_GCC([ws])
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
AC_CHECK_SIZEOF([long])
dnl Headers.
-AC_CHECK_HEADERS([endian.h byteswap.h])
+AC_CHECK_HEADERS([byteswap.h endian.h libintl.h])
+
+dnl Check for mmap
+AC_REPLACE_FUNCS([mmap])
+
+dnl Functions.
+AC_CHECK_FUNCS([bindtextdomain])
dnl Check for pod2man and pod2text.
AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
AC_SUBST([LIBXML2_CFLAGS])
AC_SUBST([LIBXML2_LIBS])
+dnl hivexsh depends on open_memstream, which is absent on OS X.
+AC_CHECK_FUNC([open_memstream])
+AM_CONDITIONAL([HAVE_HIVEXSH],[test "x$ac_cv_func_open_memstream" = "xyes"])
+
dnl Check for OCaml (optional, for OCaml bindings).
AC_PROG_OCAML
AC_PROG_FINDLIB
[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=
+PYTHON_INCLUDEDIR=
+PYTHON_INSTALLDIR=
+
+AC_CHECK_PROG([PYTHON],[python],[python],[no])
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([Python prefix])
+ PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"`
+ AC_MSG_RESULT([$PYTHON_PREFIX])
+
+ AC_MSG_CHECKING([Python version])
+ PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
+ PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
+ PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
+ AC_MSG_RESULT([$PYTHON_VERSION])
AC_MSG_CHECKING([for Python include path])
if test -z "$PYTHON_INCLUDEDIR"; then
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));"`
+ AC_ARG_WITH([python-installdir],
+ [AS_HELP_STRING([--with-python-installdir],
+ [directory to install python modules @<:@default=check@:>@])],
+ [PYTHON_INSTALLDIR="$withval"
+ AC_MSG_NOTICE([Python install dir $PYTHON_INSTALLDIR])],
+ [PYTHON_INSTALLDIR=check])
+
+ if test "x$PYTHON_INSTALLDIR" = "xcheck"; then
+ PYTHON_INSTALLDIR=
+ AC_MSG_CHECKING([for Python site-packages path])
+ if test -z "$PYTHON_INSTALLDIR"; then
+ PYTHON_INSTALLDIR=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_lib(1,0));"`
+ fi
+ AC_MSG_RESULT([$PYTHON_INSTALLDIR])
fi
- AC_MSG_RESULT([$PYTHON_SITE_PACKAGES])
+ dnl Look for libpython and some optional symbols in it.
old_LIBS="$LIBS"
- LIBS="$LIBS -lpython$PYTHON_VERSION"
- AC_CHECK_FUNCS([PyCapsule_New])
+ if test "x$PYTHON_VERSION_MAJOR" = "x3"; then
+ dnl libpython3 is called "libpython3.Xmu.so"
+ LIBPYTHON="python${PYTHON_VERSION}mu"
+ else
+ LIBPYTHON="python$PYTHON_VERSION"
+ fi
+ AC_CHECK_LIB([$LIBPYTHON], [PyList_Size], [],
+ [AC_MSG_FAILURE([$LIBPYTHON is not installed])])
+
+ AC_CHECK_FUNCS([PyCapsule_New \
+ PyString_AsString])
LIBS="$old_LIBS"
fi
AC_SUBST(PYTHON_PREFIX)
AC_SUBST(PYTHON_VERSION)
AC_SUBST(PYTHON_INCLUDEDIR)
-AC_SUBST(PYTHON_SITE_PACKAGES)
+AC_SUBST(PYTHON_INSTALLDIR)
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 AM_CONDITIONAL([HAVE_RUBY],
-dnl [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
+ [test "x$PYTHON" != "xno" && test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_INSTALLDIR" != "x"])
+
+dnl Check for Ruby and rake (optional, for Ruby bindings).
+AC_ARG_ENABLE([ruby],
+ AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]),
+ [],
+ [enable_ruby=yes])
+AS_IF([test "x$enable_ruby" != "xno"],
+ [
+ AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
+ AC_CHECK_PROG([RAKE],[rake],[rake],[no])
+ AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
+ AC_SUBST(RAKE)
+ ])
+AM_CONDITIONAL([HAVE_RUBY],
+ [test "x$RAKE" != "xno" && test -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,
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])
if test "x$HAVE_PERL_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
-dnl echo -n "Ruby bindings ....................... "
-dnl if test "x$HAVE_RUBY_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 .................... "