Version 1.2.8.
[hivex.git] / configure.ac
index 18cbd90..6c38cb1 100644 (file)
@@ -1,5 +1,5 @@
 # hivex
 # 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
 #
 # 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
@@ -17,8 +17,8 @@
 
 # major/minor/release must be numbers
 m4_define([hivex_major],   [1])
 
 # major/minor/release must be numbers
 m4_define([hivex_major],   [1])
-m4_define([hivex_minor],   [1])
-m4_define([hivex_release], [2])
+m4_define([hivex_minor],   [2])
+m4_define([hivex_release], [8])
 # extra can be any string
 m4_define([hivex_extra],   [])
 
 # extra can be any string
 m4_define([hivex_extra],   [])
 
@@ -40,7 +40,7 @@ AC_DEFINE([PACKAGE_VERSION_EXTRA],["hivex_extra"],[Extra version string])
 gl_EARLY
 gl_INIT
 
 gl_EARLY
 gl_INIT
 
-AC_PROG_LIBTOOL
+AM_PROG_LIBTOOL
 
 dnl Check for basic C environment.
 AC_PROG_CC_STDC
 
 dnl Check for basic C environment.
 AC_PROG_CC_STDC
@@ -87,6 +87,8 @@ if test "$gl_gcc_warnings" = yes; then
   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 -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])
 
   gl_MANYWARN_ALL_GCC([ws])
   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
@@ -116,6 +118,12 @@ test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
 
 AM_PROG_CC_C_O
 
 
 AM_PROG_CC_C_O
 
+dnl Work out how to specify the linker script to the linker.
+VERSION_SCRIPT_FLAGS=-Wl,--version-script=
+`/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
+    VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
+AC_SUBST(VERSION_SCRIPT_FLAGS)
+
 dnl Check support for 64 bit file offsets.
 AC_SYS_LARGEFILE
 
 dnl Check support for 64 bit file offsets.
 AC_SYS_LARGEFILE
 
@@ -143,7 +151,7 @@ AC_ARG_WITH([readline],
 LIBREADLINE=
 AS_IF([test "x$with_readline" != xno],
     [AC_CHECK_LIB([readline], [main],
 LIBREADLINE=
 AS_IF([test "x$with_readline" != xno],
     [AC_CHECK_LIB([readline], [main],
-        [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
+        [AC_SUBST([LIBREADLINE], ["-lreadline"])
          AC_DEFINE([HAVE_LIBREADLINE], [1],
                    [Define if you have libreadline])
         ],
          AC_DEFINE([HAVE_LIBREADLINE], [1],
                    [Define if you have libreadline])
         ],
@@ -151,7 +159,7 @@ AS_IF([test "x$with_readline" != xno],
          AC_MSG_FAILURE(
              [--with-readline was given, but test for readline failed])
          fi
          AC_MSG_FAILURE(
              [--with-readline was given, but test for readline failed])
          fi
-        ], -lncurses)])
+        ])])
 
 dnl For i18n.
 AM_GNU_GETTEXT([external])
 
 dnl For i18n.
 AM_GNU_GETTEXT([external])
@@ -165,7 +173,39 @@ AC_SUBST([LIBXML2_LIBS])
 dnl Check for OCaml (optional, for OCaml bindings).
 AC_PROG_OCAML
 AC_PROG_FINDLIB
 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).
+    old_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -I$OCAMLLIB"
+    AC_CHECK_HEADERS([caml/unixsupport.h],[],[],
+    [
+    #include <caml/config.h>
+    #include <caml/mlvalues.h>
+    ])
+    CFLAGS="$old_CFLAGS"
+
+    dnl Do we have function caml_raise_with_args?
+    f=caml_raise_with_args
+    AC_MSG_CHECKING([for function $f])
+    echo "char $f (); char foo() { return $f (); }" > conftest.c
+    rm -f conftest_ml.ml
+    touch conftest_ml.ml
+    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])
+    else
+        AC_MSG_RESULT([not found])
+    fi
+    rm -f conftest conftest.* conftest_ml.*
+fi
 
 dnl Check for Perl (optional, for Perl bindings).
 dnl XXX This isn't quite right, we should check for Perl devel library.
 
 dnl Check for Perl (optional, for Perl bindings).
 dnl XXX This isn't quite right, we should check for Perl devel library.
@@ -174,7 +214,7 @@ AC_CHECK_PROG([PERL],[perl],[perl],[no])
 dnl Check for Perl modules that must be present to compile and
 dnl test the Perl bindings.
 missing_perl_modules=no
 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; 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])
     AC_MSG_CHECKING([for $pm])
     if ! perl -M$pm -e1 >/dev/null 2>&1; then
         AC_MSG_RESULT([no])
@@ -188,47 +228,37 @@ if test "x$missing_perl_modules" = "xyes"; then
 fi
 
 AM_CONDITIONAL([HAVE_PERL],
 fi
 
 AM_CONDITIONAL([HAVE_PERL],
-    [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
+    [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=
 
 dnl Check for Python (optional, for Python bindings).
 AC_CHECK_PROG([PYTHON],[python],[python],[no])
 
 PYTHON_PREFIX=
 PYTHON_VERSION=
-PYTHON_INCLUDEDIR=
-PYTHON_SITE_PACKAGES=
 
 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]]"`
 
 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]]"`
-    for d in \
-        $PYTHON_PREFIX/include/python$PYTHON_VERSION \
-        /usr/include/python$PYTHON_VERSION \
-        /usr/local/include/python$PYTHON_VERSION
-    do
-        AC_MSG_CHECKING([Python.h in $d])
-        if test -r "$d/Python.h"; then
-            AC_MSG_RESULT([found])
-            PYTHON_INCLUDEDIR=$d
-            break
-        fi
-        AC_MSG_RESULT([not found])
-    done
-    for d in \
-        $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
-        $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
-        /usr/lib64/python$PYTHON_VERSION/site-packages \
-        /usr/lib/python$PYTHON_VERSION/site-packages \
-        /usr/local/lib/python$PYTHON_VERSION/site-packages
-    do
-        AC_MSG_CHECKING([for $d])
-        if test -d "$d"; then
-            AC_MSG_RESULT([found])
-            PYTHON_SITE_PACKAGES=$d
-            break
-        fi
-        AC_MSG_RESULT([not found])
-    done
+
+    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
 
 AC_SUBST(PYTHON_PREFIX)
 fi
 
 AC_SUBST(PYTHON_PREFIX)
@@ -237,14 +267,14 @@ AC_SUBST(PYTHON_INCLUDEDIR)
 AC_SUBST(PYTHON_SITE_PACKAGES)
 
 AM_CONDITIONAL([HAVE_PYTHON],
 AC_SUBST(PYTHON_SITE_PACKAGES)
 
 AM_CONDITIONAL([HAVE_PYTHON],
-    [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"])
+    [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 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" -a -n "$HAVE_LIBRUBY"])
+dnl     [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
 
 dnl dnl Check for Java.
 dnl AC_ARG_WITH(java_home,
 
 dnl dnl Check for Java.
 dnl AC_ARG_WITH(java_home,
@@ -254,7 +284,7 @@ dnl     [],
 dnl     [with_java_home=check])
 
 dnl if test "x$with_java_home" != "xno"; then
 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     then
 dnl         # Reject unsafe characters in $JAVA_HOME
 dnl         jh_lf='
@@ -276,7 +306,7 @@ dnl         for d in \
 dnl             /usr/lib/jvm/java \
 dnl             /usr/lib/jvm/java-6-openjdk
 dnl         do
 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                 JAVA_HOME=$d
 dnl                 break
 dnl             fi
@@ -395,6 +425,7 @@ dnl     [test "x$GHC" != "xno"])
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([Makefile
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([Makefile
+                 generator/Makefile
                  gnulib/lib/Makefile
                  gnulib/tests/Makefile
                  hivex.pc
                  gnulib/lib/Makefile
                  gnulib/tests/Makefile
                  hivex.pc
@@ -403,10 +434,12 @@ AC_CONFIG_FILES([Makefile
                  lib/tools/Makefile
                  ocaml/Makefile ocaml/META
                  perl/Makefile perl/Makefile.PL
                  lib/tools/Makefile
                  ocaml/Makefile ocaml/META
                  perl/Makefile perl/Makefile.PL
-                 po/Makefile.in
                  python/Makefile
                  python/Makefile
+                 po/Makefile.in
+                 regedit/Makefile
                  sh/Makefile
                  xml/Makefile])
                  sh/Makefile
                  xml/Makefile])
+AC_CONFIG_FILES([python/run-python-tests], [chmod +x python/run-python-tests])
 AC_OUTPUT
 
 dnl Produce summary.
 AC_OUTPUT
 
 dnl Produce summary.