X-Git-Url: http://git.annexia.org/?p=hivex.git;a=blobdiff_plain;f=configure.ac;h=f3c1037257214a09db452b1dd66881f541575a8f;hp=0d1294a1b9492fffc81ac2be7e62057a80a0837e;hb=0b317929f9b76fc06ddca1abd7f7b1ae3b548070;hpb=253def9de52d744e5ecb75fe0e163276d8ab9653 diff --git a/configure.ac b/configure.ac index 0d1294a..f3c1037 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], [4]) # extra can be any string m4_define([hivex_extra], []) @@ -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 -Wlong-long" # Allow long long since it's required + # by xstrtoll. 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 +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 @@ -143,7 +151,7 @@ AC_ARG_WITH([readline], 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]) ], @@ -151,7 +159,7 @@ AS_IF([test "x$with_readline" != xno], AC_MSG_FAILURE( [--with-readline was given, but test for readline failed]) fi - ], -lncurses)]) + ])]) dnl For i18n. AM_GNU_GETTEXT([external]) @@ -167,6 +175,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 +211,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 ExtUtils::MakeMaker IO::Stringy; do AC_MSG_CHECKING([for $pm]) if ! perl -M$pm -e1 >/dev/null 2>&1; then AC_MSG_RESULT([no]) @@ -214,6 +251,10 @@ if test "x$PYTHON" != "xno"; then fi AC_MSG_RESULT([not found]) done + if test "x$PYTHON_INCLUDEDIR" = "x"; then + AC_MSG_WARN([Python include directory not found]) + fi + for d in \ $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \ $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \ @@ -229,6 +270,14 @@ if test "x$PYTHON" != "xno"; then fi AC_MSG_RESULT([not found]) done + if test "x$PYTHON_SITE_PACKAGES" = "x"; then + AC_MSG_WARN([Python site-packages directory not found]) + fi + + old_LIBS="$LIBS" + LIBS="$LIBS -lpython$PYTHON_VERSION" + AC_CHECK_FUNCS([PyCapsule_New]) + LIBS="$old_LIBS" fi AC_SUBST(PYTHON_PREFIX) @@ -239,158 +288,158 @@ 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 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]) @@ -398,8 +447,16 @@ AC_CONFIG_FILES([Makefile gnulib/lib/Makefile gnulib/tests/Makefile hivex.pc - hivex/Makefile - hivex/tools/Makefile]) + images/Makefile + lib/Makefile + lib/tools/Makefile + ocaml/Makefile ocaml/META + perl/Makefile perl/Makefile.PL + python/Makefile + po/Makefile.in + regedit/Makefile + sh/Makefile + xml/Makefile]) AC_OUTPUT dnl Produce summary. @@ -416,12 +473,12 @@ 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 "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."