X-Git-Url: http://git.annexia.org/?p=hivex.git;a=blobdiff_plain;f=configure.ac;h=8d24848b530076c016fafb6c698319fa504e5d02;hp=5dbea370fbf6cb0a246a49b61b4ed66969e44c3d;hb=70760da7f41e0ebc45122090ed624a6fea60b5d7;hpb=5e765cda4ddece4f20ebc57f0154fdf14035cd9d diff --git a/configure.ac b/configure.ac index 5dbea37..8d24848 100644 --- a/configure.ac +++ b/configure.ac @@ -17,8 +17,8 @@ # major/minor/release must be numbers m4_define([hivex_major], [1]) -m4_define([hivex_minor], [0]) -m4_define([hivex_release], [75]) +m4_define([hivex_minor], [2]) +m4_define([hivex_release], [0]) # extra can be any string m4_define([hivex_extra], []) @@ -123,7 +123,7 @@ dnl Check sizeof long. AC_CHECK_SIZEOF([long]) dnl Headers. -dnl AC_CHECK_HEADERS([]) +AC_CHECK_HEADERS([endian.h byteswap.h]) dnl Check for pod2man and pod2text. AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no]) @@ -167,6 +167,35 @@ AC_PROG_OCAML AC_PROG_FINDLIB AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "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 + #include + ]) + 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 $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 + 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. AC_CHECK_PROG([PERL],[perl],[perl],[no]) @@ -174,7 +203,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 -for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do +for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker IO::Stringy; do AC_MSG_CHECKING([for $pm]) if ! perl -M$pm -e1 >/dev/null 2>&1; then AC_MSG_RESULT([no]) @@ -190,215 +219,223 @@ fi AM_CONDITIONAL([HAVE_PERL], [test "x$PERL" != "xno" -a "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_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]]"` - 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 -fi - -AC_SUBST(PYTHON_PREFIX) -AC_SUBST(PYTHON_VERSION) -AC_SUBST(PYTHON_INCLUDEDIR) -AC_SUBST(PYTHON_SITE_PACKAGES) - -AM_CONDITIONAL([HAVE_PYTHON], - [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"]) - -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]) - -AM_CONDITIONAL([HAVE_RUBY], - [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"]) - -dnl Check for Java. -AC_ARG_WITH(java_home, - [AS_HELP_STRING([--with-java-home], - [specify path to JDK directory @<:@default=check@:>@])], - [], - [with_java_home=check]) - -if test "x$with_java_home" != "xno"; then - if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck" - then - # Reject unsafe characters in $JAVA_HOME - jh_lf=' -' - case $JAVA_HOME in - *[\\\"\#\$\&\'\`$jh_lf\ \ ]*) - AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);; - esac - if test -d "$with_java_home"; then - JAVA_HOME="$with_java_home" - else - AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)]) - fi - fi - - if test "x$JAVA_HOME" = "x"; then - # Look for Java in some likely locations. - for d in \ - /usr/lib/jvm/java \ - /usr/lib/jvm/java-6-openjdk - do - if test -d $d -a -f $d/bin/java; then - JAVA_HOME=$d - break - fi - done - fi - - if test "x$JAVA_HOME" != "x"; then - AC_MSG_CHECKING(for JDK in $JAVA_HOME) - if test ! -x "$JAVA_HOME/bin/java"; then - AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)]) - else - JAVA="$JAVA_HOME/bin/java" - fi - if test ! -x "$JAVA_HOME/bin/javac"; then - AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary]) - else - JAVAC="$JAVA_HOME/bin/javac" - fi - if test ! -x "$JAVA_HOME/bin/javah"; then - AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary]) - else - JAVAH="$JAVA_HOME/bin/javah" - fi - if test ! -x "$JAVA_HOME/bin/javadoc"; then - AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary]) - else - JAVADOC="$JAVA_HOME/bin/javadoc" - fi - if test ! -x "$JAVA_HOME/bin/jar"; then - AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary]) - else - JAR="$JAVA_HOME/bin/jar" - fi - java_version=`$JAVA -version 2>&1 | grep "java version"` - AC_MSG_RESULT(found $java_version in $JAVA_HOME) - - dnl Find jni.h. - AC_MSG_CHECKING([for jni.h]) - if test -f "$JAVA_HOME/include/jni.h"; then - JNI_CFLAGS="-I$JAVA_HOME/include" - else - if test "`find $JAVA_HOME -name jni.h`" != ""; then - head=`find $JAVA_HOME -name jni.h | tail -1` - dir=`dirname "$head"` - JNI_CFLAGS="-I$dir" - else - AC_MSG_FAILURE([missing jni.h header file]) - fi - fi - AC_MSG_RESULT([$JNI_CFLAGS]) - - dnl Find jni_md.h. - AC_MSG_CHECKING([for jni_md.h]) - case "$build_os" in - *linux*) system="linux" ;; - *SunOS*) system="solaris" ;; - *cygwin*) system="win32" ;; - *) system="$build_os" ;; - esac - if test -f "$JAVA_HOME/include/$system/jni_md.h"; then - JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system" - else - if test "`find $JAVA_HOME -name jni_md.h`" != ""; then - head=`find $JAVA_HOME -name jni_md.h | tail -1` - dir=`dirname "$head"` - JNI_CFLAGS="$JNI_CFLAGS -I$dir" - else - AC_MSG_FAILURE([missing jni_md.h header file]) - fi - fi - AC_MSG_RESULT([$JNI_CFLAGS]) - - dnl Need extra version flag? - AC_MSG_CHECKING([extra javac flags]) - JAVAC_FLAGS= - javac_version=`$JAVAC -version 2>&1` - case "$javac_version" in - *Eclipse*) - JAVAC_FLAGS="-source 1.5" ;; - esac - AC_MSG_RESULT([$JAVAC_FLAGS]) - - dnl Where to install jarfiles. - dnl XXX How to make it configurable? - JAR_INSTALL_DIR=\${prefix}/share/java - JNI_INSTALL_DIR=\${libdir} - - dnl JNI version. - jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'` - jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'` - jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'` - JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version" - fi -fi - -AC_SUBST(JAVA_HOME) -AC_SUBST(JAVA) -AC_SUBST(JAVAC) -AC_SUBST(JAVAH) -AC_SUBST(JAVADOC) -AC_SUBST(JAR) -AC_SUBST(JNI_CFLAGS) -AC_SUBST(JAVAC_FLAGS) -AC_SUBST(JAR_INSTALL_DIR) -AC_SUBST(JNI_INSTALL_DIR) -AC_SUBST(JNI_VERSION_INFO) - -AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"]) - -dnl Check for Haskell (GHC). -AC_CHECK_PROG([GHC],[ghc],[ghc],[no]) - -AM_CONDITIONAL([HAVE_HASKELL], - [test "x$GHC" != "xno"]) +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 + +dnl AC_SUBST(PYTHON_PREFIX) +dnl AC_SUBST(PYTHON_VERSION) +dnl AC_SUBST(PYTHON_INCLUDEDIR) +dnl AC_SUBST(PYTHON_SITE_PACKAGES) + +dnl AM_CONDITIONAL([HAVE_PYTHON], +dnl [test "x$PYTHON_INCLUDEDIR" != "x" -a "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" -a -n "$HAVE_LIBRUBY"]) + +dnl dnl Check for Java. +dnl AC_ARG_WITH(java_home, +dnl [AS_HELP_STRING([--with-java-home], +dnl [specify path to JDK directory @<:@default=check@:>@])], +dnl [], +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 then +dnl # Reject unsafe characters in $JAVA_HOME +dnl jh_lf=' +dnl ' +dnl case $JAVA_HOME in +dnl *[\\\"\#\$\&\'\`$jh_lf\ \ ]*) +dnl AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);; +dnl esac +dnl if test -d "$with_java_home"; then +dnl JAVA_HOME="$with_java_home" +dnl else +dnl AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)]) +dnl fi +dnl fi + +dnl if test "x$JAVA_HOME" = "x"; then +dnl # Look for Java in some likely locations. +dnl for d in \ +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 JAVA_HOME=$d +dnl break +dnl fi +dnl done +dnl fi + +dnl if test "x$JAVA_HOME" != "x"; then +dnl AC_MSG_CHECKING(for JDK in $JAVA_HOME) +dnl if test ! -x "$JAVA_HOME/bin/java"; then +dnl AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)]) +dnl else +dnl JAVA="$JAVA_HOME/bin/java" +dnl fi +dnl if test ! -x "$JAVA_HOME/bin/javac"; then +dnl AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary]) +dnl else +dnl JAVAC="$JAVA_HOME/bin/javac" +dnl fi +dnl if test ! -x "$JAVA_HOME/bin/javah"; then +dnl AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary]) +dnl else +dnl JAVAH="$JAVA_HOME/bin/javah" +dnl fi +dnl if test ! -x "$JAVA_HOME/bin/javadoc"; then +dnl AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary]) +dnl else +dnl JAVADOC="$JAVA_HOME/bin/javadoc" +dnl fi +dnl if test ! -x "$JAVA_HOME/bin/jar"; then +dnl AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary]) +dnl else +dnl JAR="$JAVA_HOME/bin/jar" +dnl fi +dnl java_version=`$JAVA -version 2>&1 | grep "java version"` +dnl AC_MSG_RESULT(found $java_version in $JAVA_HOME) + +dnl dnl Find jni.h. +dnl AC_MSG_CHECKING([for jni.h]) +dnl if test -f "$JAVA_HOME/include/jni.h"; then +dnl JNI_CFLAGS="-I$JAVA_HOME/include" +dnl else +dnl if test "`find $JAVA_HOME -name jni.h`" != ""; then +dnl head=`find $JAVA_HOME -name jni.h | tail -1` +dnl dir=`dirname "$head"` +dnl JNI_CFLAGS="-I$dir" +dnl else +dnl AC_MSG_FAILURE([missing jni.h header file]) +dnl fi +dnl fi +dnl AC_MSG_RESULT([$JNI_CFLAGS]) + +dnl dnl Find jni_md.h. +dnl AC_MSG_CHECKING([for jni_md.h]) +dnl case "$build_os" in +dnl *linux*) system="linux" ;; +dnl *SunOS*) system="solaris" ;; +dnl *cygwin*) system="win32" ;; +dnl *) system="$build_os" ;; +dnl esac +dnl if test -f "$JAVA_HOME/include/$system/jni_md.h"; then +dnl JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system" +dnl else +dnl if test "`find $JAVA_HOME -name jni_md.h`" != ""; then +dnl head=`find $JAVA_HOME -name jni_md.h | tail -1` +dnl dir=`dirname "$head"` +dnl JNI_CFLAGS="$JNI_CFLAGS -I$dir" +dnl else +dnl AC_MSG_FAILURE([missing jni_md.h header file]) +dnl fi +dnl fi +dnl AC_MSG_RESULT([$JNI_CFLAGS]) + +dnl dnl Need extra version flag? +dnl AC_MSG_CHECKING([extra javac flags]) +dnl JAVAC_FLAGS= +dnl javac_version=`$JAVAC -version 2>&1` +dnl case "$javac_version" in +dnl *Eclipse*) +dnl JAVAC_FLAGS="-source 1.5" ;; +dnl esac +dnl AC_MSG_RESULT([$JAVAC_FLAGS]) + +dnl dnl Where to install jarfiles. +dnl dnl XXX How to make it configurable? +dnl JAR_INSTALL_DIR=\${prefix}/share/java +dnl JNI_INSTALL_DIR=\${libdir} + +dnl dnl JNI version. +dnl jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'` +dnl jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'` +dnl jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'` +dnl JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version" +dnl fi +dnl fi + +dnl AC_SUBST(JAVA_HOME) +dnl AC_SUBST(JAVA) +dnl AC_SUBST(JAVAC) +dnl AC_SUBST(JAVAH) +dnl AC_SUBST(JAVADOC) +dnl AC_SUBST(JAR) +dnl AC_SUBST(JNI_CFLAGS) +dnl AC_SUBST(JAVAC_FLAGS) +dnl AC_SUBST(JAR_INSTALL_DIR) +dnl AC_SUBST(JNI_INSTALL_DIR) +dnl AC_SUBST(JNI_VERSION_INFO) + +dnl AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"]) + +dnl dnl Check for Haskell (GHC). +dnl AC_CHECK_PROG([GHC],[ghc],[ghc],[no]) + +dnl AM_CONDITIONAL([HAVE_HASKELL], +dnl [test "x$GHC" != "xno"]) dnl Produce output files. AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile gnulib/lib/Makefile gnulib/tests/Makefile - hivex/Makefile - hivex.pc]) + hivex.pc + images/Makefile + lib/Makefile + lib/tools/Makefile + ocaml/Makefile ocaml/META + perl/Makefile perl/Makefile.PL + po/Makefile.in + regedit/Makefile + sh/Makefile + xml/Makefile]) AC_OUTPUT dnl Produce summary. @@ -413,14 +450,14 @@ echo -n "OCaml bindings ...................... " 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 -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 -echo -n "Java bindings ....................... " -if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi -echo -n "Haskell bindings .................... " -if test "x$HAVE_HASKELL" = "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 +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 .................... " +dnl if test "x$HAVE_HASKELL" = "x"; then echo "yes"; else echo "no"; fi echo echo "If any optional component is configured 'no' when you expected 'yes'" echo "then you should check the preceeding messages."