dnl -*- Mode: autoconf -*- dnl dnl configure.in - top level autoconf file for Redland dnl (Process this file with autoconf to produce a configure script.) dnl dnl Copyright (C) 2000-2007 David Beckett http://purl.org/net/dajobe/ dnl Copyright (C) 2000-2005 University of Bristol, UK http://www.bristol.ac.uk/ dnl dnl This package is Free Software and part of Redland http://librdf.org/ dnl dnl It is licensed under the following three licenses as alternatives: dnl 1. GNU Lesser General Public License (LGPL) V2.1 or any newer version dnl 2. GNU General Public License (GPL) V2 or any newer version dnl 3. Apache License, V2.0 or any newer version dnl dnl You may not use this file except in compliance with at least one of dnl the above three licenses. dnl dnl See LICENSE.html or LICENSE.txt at the top of this package for the dnl complete terms and further detail along with the license texts for dnl the licenses in COPYING.LIB, COPYING and LICENSE-2.0.txt respectively. dnl dnl AC_INIT([Redland RDF Application Framework], 1.0.8, http://bugs.librdf.org/, redland) AC_PREREQ(2.53) AC_CONFIG_SRCDIR(librdf/rdf_node.c) AC_REVISION($Revision: 1.2 $)dnl AM_INIT_AUTOMAKE([1.7 check-news std-options -Wobsolete -Wportability -Wsyntax -Wunsupported]) AM_CONFIG_HEADER(librdf/rdf_config.h) AM_MAINTAINER_MODE AC_CANONICAL_HOST changequote(<<, >>)dnl version_major=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\1/'` version_minor=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\2/'` version_release=`echo $VERSION | sed -e 's/^\([^\.]*\)\.\([^\.]*\)\.\(.*\)$/\3/'` changequote([, ])dnl version_decimal=`expr $version_major \* 10000 + $version_minor \* 100 + $version_release` AC_DEFINE_UNQUOTED(LIBRDF_VERSION_MAJOR, $version_major, [Major version number]) AC_DEFINE_UNQUOTED(LIBRDF_VERSION_MINOR, $version_minor, [Minor version number]) AC_DEFINE_UNQUOTED(LIBRDF_VERSION_RELEASE, $version_release, [Release version number]) AC_DEFINE_UNQUOTED(LIBRDF_VERSION_DECIMAL, $version_decimal, [Release version as a decimal]) # for redland-config.in LIBRDF_VERSION_DECIMAL=$version_decimal AC_SUBST(LIBRDF_VERSION_DECIMAL) # Libtool versioning # # CURRENT # The most recent interface number that this library implements. # # REVISION # The implementation number of the CURRENT interface. # # AGE # The difference between the newest and oldest interfaces that this # library implements. In other words, the library implements all the # interface numbers in the range from number `CURRENT - AGE' to # `CURRENT'. # # Rules: # 1. Start with version information of `0:0:0' for each libtool library. # # 2. Update the version information only immediately before a public # release of your software. More frequent updates are unnecessary, # and only guarantee that the current interface number gets larger # faster. # # 3. If the library source code has changed at all since the last # update, then increment REVISION (`C:R:A' becomes `C:r+1:A'). # # 4. If any interfaces have been added, removed, or changed since the # last update, increment CURRENT, and set REVISION to 0. # # 5. If any interfaces have been added since the last public release, # then increment AGE. # # 6. If any interfaces have been removed since the last public release, # then set AGE to 0. # # syntax: CURRENT[:REVISION[:AGE]] LIBRDF_LIBTOOL_VERSION=0:0:0 AC_SUBST(LIBRDF_LIBTOOL_VERSION) dnl Checks for programs. AM_SANITY_CHECK AC_PROG_CC AM_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET m4_undefine([AC_PROG_CXX]) m4_defun([AC_PROG_CXX],[]) m4_undefine([AC_PROG_F77]) m4_defun([AC_PROG_F77],[]) AC_LIBTOOL_DLOPEN AC_LIBLTDL_INSTALLABLE AC_PROG_LIBTOOL # Find a tar command for 'make dist' AC_CHECK_PROGS(TAR, gnutar gtar tar) AC_CHECK_PROGS(PERL, perl) # Gnome AC_CHECK_PROGS(PKG_CONFIG, pkg-config) AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) release_version=no AC_ARG_ENABLE(release, [ --enable-release Turn on optimizations (for maintainer). ], \ if test "$enableval" = "yes"; then \ release_version=yes fi;) modular=no AC_ARG_ENABLE(modular, [ --enable-modular Modularize storage backends. ], \ if test "$enableval" = "yes"; then \ modular=yes fi;) dnl compiler checks AC_DEFUN([REDLAND_CC_TRY_FLAG], [ AC_MSG_CHECKING([whether $CC supports $1]) redland_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" AC_COMPILE_IFELSE([ ], [redland_cc_flag=yes], [redland_cc_flag=no]) CFLAGS="$redland_save_CFLAGS" if test "X$redland_cc_flag" = "Xyes"; then ifelse([$2], , :, [$2]) else ifelse([$3], , :, [$3]) fi AC_MSG_RESULT($redland_cc_flag) ]) possible_warnings="-Wall -Wextra \ -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ -Wmissing-declarations -Wnested-externs -Wredundant-decls -Wswitch-enum \ -Wsign-compare -Werror-implicit-function-declaration -Wwrite-strings -Wpacked -Wmissing-format-attribute -Wpointer-arith -Wcast-align -Winit-self \ -Wunsafe-loop-optimizations -Wdeclaration-after-statement \ -Wold-style-definition \ -Wno-missing-field-initializers -Wno-unused-parameter \ -Wformat-security" warning_cflags= if test "$USE_MAINTAINER_MODE" = yes; then AC_MSG_CHECKING(for supported $CC warning flags) AC_MSG_RESULT($warning_cflags) for warning in $possible_warnings; do REDLAND_CC_TRY_FLAG([$warning], [warning_cflags="$warning_cflags $warning"]) done AC_MSG_CHECKING($CC supports warning flags) AC_MSG_RESULT($warning_cflags) fi STANDARD_CFLAGS= MAINTAINER_CFLAGS="$warning_cflags" # Externally linked libraries - appear in redland-config # -Dfoo -Idir LIBRDF_CPPFLAGS=$CPPFLAGS # -Ldir LIBRDF_LDFLAGS=$LDFLAGS # -llib LIBRDF_LIBS=$LIBS # Internally linked libraries - never given to users # -Dfoo -Idir LIBRDF_INTERNAL_CPPFLAGS= # -Ldir -llib LIBRDF_INTERNAL_LIBS= # Libraries linked externally also may be internal - presently just # raptor and rasqal but in future may include others # Currently only substituted into redland-src-config. # -Dfoo -Idir LIBRDF_EXTERNAL_CPPFLAGS= # -Ldir -llib LIBRDF_EXTERNAL_LIBS= # do these first because somehow they get messed up by bdb checks AC_CHECK_TYPES([byte]) AC_CHECK_TYPES([u32]) AC_CHECK_TYPES([u64]) AC_CHECK_SIZEOF(unsigned char, 1) AC_CHECK_SIZEOF(unsigned int, 4) AC_CHECK_SIZEOF(unsigned long, 4) AC_CHECK_SIZEOF(unsigned long long, 8) dnl Checks for libraries. dnl Berkeley DB AC_ARG_WITH(bdb, [ --with-bdb=DIR Berkeley DB install area (default=/usr)], bdb_prefix="$withval", bdb_prefix="no") AC_ARG_WITH(bdb_lib, [ --with-bdb-lib=DIR Berkeley DB lib directory (default=/usr/lib)], bdb_lib_dir="$withval", bdb_lib_dir="none") AC_ARG_WITH(bdb_include, [ --with-bdb-include=DIR Berkeley DB include directory (default=/usr/include)], bdb_include_dir="$withval", bdb_include_dir="none") AC_ARG_WITH(bdb_dbname, [ --with-bdb-dbname=NAME Berkeley DB library name (auto)], bdb_dbname="$withval", bdb_dbname="none") bdb_version=unknown bdb_available=Missing if test "x$bdb_prefix" != "xno" ; then if test "x$bdb_prefix" = "xyes" ; then bdb_prefix="none" fi # Only prefix given - set lib and include if test "X$bdb_prefix" != "Xnone" -a "X$bdb_lib_dir" = "Xnone" -a "X$bdb_include_dir" = "Xnone" ; then bdb_lib_dir="$bdb_prefix/lib" bdb_include_dir="$bdb_prefix/include" fi # Nothing given - search if test "X$bdb_prefix" = "Xnone" -a "X$bdb_lib_dir" = "Xnone" -a "X$bdb_include_dir" = "Xnone" -a "X$bdb_dbname" = "Xnone" ; then bdb_prefix="/usr" bdb_lib_dir="/usr/lib" bdb_include_dir="/usr/include" extraprefix= # OSX fink area added if found and /sw/bin is in the PATH if test -d /sw/include -a -d /sw/lib ; then if echo $PATH |grep /sw/bin >/dev/null; then extraprefix=/sw fi fi # Sigh! And this still might not be good enough. for bdbc_version in 4.6 4.5 4.4 4.3 4.2 4.1 4.0 4 3.3 3.2 3.1 3 2; do bdbc_major=`echo $bdbc_version | sed -e 's/^\(.\).*$/\1/'`; bdbc_version2=`echo $bdbc_version | sed -e 's/^\(.\).\(.\)$/\1\2/'` for bdbc_prefix in $extraprefix /usr/local/BerkeleyDB.$bdbc_version /usr/local /opt/local /usr; do bdbc_libdir=$bdbc_prefix/lib for bdbc_incdir in $bdbc_prefix/include/db$bdbc_version $bdbc_prefix/include/db$bdbc_version2 $bdbc_prefix/include/db$bdbc_major $bdbc_prefix/include ; do if test -r $bdbc_incdir/db.h ; then header_bdbc_version=`sed -ne 's/^.*DB_VERSION_STRING.*Berkeley DB \(...\).*/\1/p' $bdbc_incdir/db.h` if test "X$header_bdbc_version" = "X$bdbc_version" ; then for bdbc_name in db-$bdbc_version db$bdbc_version db-$bdbc_version2 db$bdbc_version2; do for bdbc_libdir2 in $bdbc_libdir $bdbc_libdir/db$bdbc_version $bdbc_libdir/db$bdbc_version2; do if test -r $bdbc_libdir2/lib$bdbc_name.a -o -r $bdbc_libdir2/lib$bdbc_name.so -o -r $bdbc_libdir2/lib$bdbc_name.dylib; then bdb_version=$bdbc_version bdb_prefix=$bdbc_prefix bdb_include_dir=$bdbc_incdir bdb_lib_dir=$bdbc_libdir2 bdb_dbname=$bdbc_name break 5 fi done done fi fi done done done fi AC_MSG_CHECKING(BDB version) AC_MSG_RESULT($bdb_version) AC_MSG_CHECKING(location of BDB libs) AC_MSG_RESULT($bdb_lib_dir) AC_MSG_CHECKING(location of BDB includes) AC_MSG_RESULT($bdb_include_dir) if test "$bdb_prefix" != no; then nLDFLAGS=$LDFLAGS nCPPFLAGS= if test "$bdb_lib_dir" != /usr/lib; then nLDFLAGS="-L$bdb_lib_dir"; fi if test "$bdb_dbname" = none; then # Yuck, yuck, yuck - can't they create a bdb-config program like GNOME? bdb_dbname=`cd $bdb_lib_dir; ls -1 libdb*.a 2>/dev/null |sed -e 's/^lib//' -e 's/\.a$//' | head -1` if test "X$bdb_dbname" = X; then AC_MSG_WARN(Cannot find the BDB library name from the files in $bdb_lib_dir) AC_MSG_WARN(Assuming it is 'db' and will link like -ldb) AC_MSG_WARN(Use --with-bdb-dbname=NAME if this is wrong) bdb_dbname=db fi fi AC_MSG_CHECKING(name of BDB library) AC_MSG_RESULT($bdb_dbname) if test "$bdb_include_dir" != /usr/include; then nCPPFLAGS="-I$bdb_include_dir"; fi LDFLAGS="$nLDFLAGS $LDFLAGS" CPPFLAGS="$nCPPFLAGS $CPPFLAGS" LIBS="-l$bdb_dbname $LIBS" AC_CHECK_HEADERS(db.h) if test "$ac_cv_header_db_h" = yes ; then have_libdb=no AC_MSG_CHECKING(for BDB V1 dbopen) AC_TRY_LINK([#include #include ], [dbopen(NULL, 0, 0, DB_BTREE, NULL);], AC_DEFINE(HAVE_DBOPEN, 1, [BDB has dbopen method]) if test $have_libdb = no; then bdb_available="Version 1.x - not supported" have_libdb=no fi AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB V2 db_open) AC_TRY_LINK([#include #include ], [db_open(NULL, DB_BTREE, 0, 0, NULL, NULL, NULL);], AC_DEFINE(HAVE_DB_OPEN, 1, [BDB has db_open method]) have_libdb=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB V3/V4.x db_create) AC_TRY_LINK([#include #include ], [db_create(NULL, NULL, 0);], AC_DEFINE(HAVE_DB_CREATE, 1, [BDB has db_create method]) have_libdb=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB V4.0 DB->open with 6 arguments) AC_TRY_LINK([#include #include ], [DB *bdb; bdb->open(bdb, NULL, NULL, DB_BTREE, 0, 0);], AC_DEFINE(HAVE_BDB_OPEN_6_ARGS, 1, [BDB has open method with 6 args]) have_libdb=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB DB->close with 2 arguments) AC_TRY_LINK([#include #include ], [DB *bdb; bdb->close(bdb, 0);], AC_DEFINE(HAVE_BDB_CLOSE_2_ARGS, 1, [BDB has close method with 2 args]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB DB->fd with 2 arguments) AC_TRY_LINK([#include #include ], [DB *bdb; bdb->fd(bdb, 0);], AC_DEFINE(HAVE_BDB_FD_2_ARGS, 1, [BDB has fd method with 2 args]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB DB->set_flags) AC_TRY_LINK([#include #include ], [DB *bdb; bdb->set_flags(bdb, 0);], AC_DEFINE(HAVE_BDB_SET_FLAGS, 1, [BDB has set_flags method]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(for BDB V4.1+ DB->open with 7 arguments) AC_TRY_LINK([#include #include ], [DB *bdb; bdb->open(bdb, NULL, NULL, NULL, DB_BTREE, 0, 0);], AC_DEFINE(HAVE_BDB_OPEN_7_ARGS, 1, [BDB has open method with 7 args]) have_libdb=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(whether DB_TXN defined in db.h) dnl In BDB, DB_TXN is a pointer to a structure never defined AC_TRY_LINK([#include #include ], [DB_TXN* ptr=(DB_TXN*)NULL], AC_DEFINE(HAVE_BDB_DB_TXN, 1, [BDB defines DB_TXN]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(whether DBC defined in db.h) AC_TRY_LINK([#include ], [size_t len=sizeof(DBC)], AC_DEFINE(HAVE_BDB_CURSOR, 1, [BDB defines DBC]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_MSG_CHECKING(number of arguments to db_cursor) AC_TRY_LINK([#include #include ], [DB* db; db->cursor(db, NULL, NULL, 0);], AC_DEFINE(HAVE_BDB_CURSOR_4_ARGS, 1, [BDB cursor method has 4 arguments]) AC_MSG_RESULT(4), AC_MSG_RESULT(3)) fi if test "$have_libdb" = yes; then bdb_available="Version $bdb_version (library $bdb_dbname in $bdb_lib_dir)" LIBRDF_LIBS="$LIBRDF_LIBS $nLDFLAGS -l$bdb_dbname" LIBRDF_CPPFLAGS="$LIBRDF_CPPFLAGS $nCPPFLAGS" fi fi fi CPPFLAGS="$LIBRDF_CPPFLAGS" LDFLAGS="$LIBRDF_LDFLAGS" LIBS="$LIBRDF_LIBS" dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(errno.h stdlib.h unistd.h string.h fcntl.h dmalloc.h time.h sys/time.h sys/stat.h getopt.h) AC_HEADER_TIME dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_BIGENDIAN dnl Checks for library functions. AC_CHECK_FUNCS(getopt getopt_long memcmp mkstemp mktemp tmpnam gettimeofday getenv) AM_CONDITIONAL(MEMCMP, test $ac_cv_func_memcmp = no) AM_CONDITIONAL(GETOPT, test $ac_cv_func_getopt = no -a $ac_cv_func_getopt_long = no) dnl Checks for URI resolvers CPPFLAGS="$LIBRDF_CPPFLAGS" LDFLAGS="$LIBRDF_LDFLAGS" LIBS="$LIBRDF_LIBS" dnl Checks for XML parsers # At present this is for passing on to raptor and not used here AC_ARG_WITH(xml-parser, [ --with-xml-parser=NAME Use XML parser - expat, libxml (default=libxml)], xml_parser="$withval", xml_parser="expat") dnl Checks for RDF parsers parser_modules=raptor rdf_parsers_available= # raptor is REQUIRED despite the checking here AC_CHECK_PROG(RAPTOR_CONFIG, raptor-config, raptor-config) AC_ARG_WITH(raptor, [ --with-raptor=SOURCE Pick raptor source - system/internal (default=internal)], with_raptor="$withval", with_raptor="internal") RAPTOR_MIN_VERSION=1.4.17 AC_SUBST(RAPTOR_MIN_VERSION) if test "X$RAPTOR_CONFIG" = "X"; then with_raptor=internal else RAPTOR_VERSION=`$RAPTOR_CONFIG --version 2>/dev/null` # FIXME - could use raptor-config --decimal-version at some point RAPTOR_VERSION_DEC=`echo $RAPTOR_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` RAPTOR_MIN_VERSION_DEC=`echo $RAPTOR_MIN_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` if test "X$with_raptor" = Xauto; then if test "X$RAPTOR_VERSION" -a $RAPTOR_VERSION_DEC -ge $RAPTOR_MIN_VERSION_DEC; then with_raptor=system else with_raptor=internal fi elif test $with_raptor = system; then if test $RAPTOR_VERSION_DEC -lt $RAPTOR_MIN_VERSION_DEC; then AC_MSG_WARN(System raptor $RAPTOR_VERSION is too old - need $RAPTOR_MIN_VERSION) AC_MSG_WARN(Proceeding anyway since --with-raptor=system was given) AC_MSG_WARN(To use the internal raptor use --with-raptor=internal) AC_MSG_WARN(or omit any --with-raptor argument.) fi fi fi AC_MSG_CHECKING(raptor library source) if test $with_raptor = system; then AC_MSG_RESULT(system $RAPTOR_VERSION) rdf_parsers_available="$parser_available raptor(system $RAPTOR_VERSION)" else with_raptor=internal AC_MSG_RESULT(internal) rdf_parsers_available="$parser_available raptor(internal)" fi AC_SUBST(with_raptor) # Always have these raptor_dir=raptor config_subdir_raptor=no if test $with_raptor = internal; then LIBRDF_INTERNAL_CPPFLAGS="-I\$(top_srcdir)/raptor/src $LIBRDF_INTERNAL_CPPFLAGS" LIBRDF_INTERNAL_LIBS="\$(top_builddir)/raptor/src/libraptor.la $LIBRDF_INTERNAL_LIBS" config_subdir_raptor=yes else LIBRDF_EXTERNAL_CPPFLAGS="`$RAPTOR_CONFIG --cflags` $LIBRDF_EXTERNAL_CPPFLAGS" LIBRDF_EXTERNAL_LIBS="`$RAPTOR_CONFIG --libs` $LIBRDF_EXTERNAL_LIBS" raptor_dir= fi if test "$config_subdir_raptor" = yes -o "$USE_MAINTAINER_MODE" = yes; then AC_CONFIG_SUBDIRS(raptor) fi # rasqal is REQUIRED despite the checking here AC_CHECK_PROG(RASQAL_CONFIG, rasqal-config, rasqal-config) AC_ARG_WITH(rasqal, [ --with-rasqal=SOURCE Pick rasqal source - system/internal (default=internal)], with_rasqal="$withval", with_rasqal="internal") RASQAL_MIN_VERSION=0.9.16 RASQAL_MAX_VERSION=0.9.99 AC_SUBST(RASQAL_MIN_VERSION) AC_SUBST(RASQAL_MAX_VERSION) if test "X$RASQAL_CONFIG" = "X"; then with_rasqal=internal else RASQAL_VERSION=`$RASQAL_CONFIG --version 2>/dev/null` RASQAL_VERSION_DEC=`$RASQAL_CONFIG --version-decimal` RASQAL_MIN_VERSION_DEC=`echo $RASQAL_MIN_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` RASQAL_MAX_VERSION_DEC=`echo $RASQAL_MAX_VERSION | $AWK -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` if test "X$with_rasqal" = Xauto; then if test "X$RASQAL_VERSION" -a $RASQAL_VERSION_DEC -ge $RASQAL_MIN_VERSION_DEC -a $RASQAL_VERSION_DEC -le $RASQAL_MAX_VERSION_DEC; then with_rasqal=system else with_rasqal=internal fi elif test $with_rasqal = system; then if test $RASQAL_VERSION_DEC -lt $RASQAL_MIN_VERSION_DEC -o $RASQAL_VERSION_DEC -gt $RASQAL_MAX_VERSION_DEC; then AC_MSG_WARN(System rasqal $RASQAL_VERSION is not in range $RASQAL_MIN_VERSION to $RASQAL_MAX_VERSION) AC_MSG_WARN(Proceeding anyway since --with-rasqal=system was given) AC_MSG_WARN(To use the internal rasqal use --with-rasqal=internal) AC_MSG_WARN(or omit any --with-rasqal argument.) fi fi fi if test "X$with_rasqal" = Xinternal; then rdf_query="rasqal(internal)" else rdf_query="rasqal(system $RASQAL_VERSION)" fi AC_SUBST(with_rasqal) dnl Checks for modules digest_modules="md5 sha1 ripemd160" AC_MSG_CHECKING(digests wanted) AC_ARG_ENABLE(digests, [ --enable-digests=LIST Use digests (default=md5 sha1 ripemd160)], digest_modules="$enableval") AC_MSG_RESULT($digest_modules) DIGEST_OBJS= DIGEST_SRCS= AC_ARG_WITH(openssl-digests, [ --with-openssl-digests Use openssl digests (default=yes)], enable_openssl_digests="$withval", enable_openssl_digests="no") # This is needed because autoheader can't work out which computed # symbols must be pulled from acconfig.h into config.h.in if test "x" = "y"; then AC_DEFINE(HAVE_OPENSSL_CRYPTO_MD5_DIGEST, 1, [Have openssl MD5 digest]) AC_DEFINE(HAVE_OPENSSL_CRYPTO_SHA1_DIGEST, 1, [Have openssl SHA1 digest]) AC_DEFINE(HAVE_OPENSSL_CRYPTO_RIPEMD160_DIGEST, 1, [Have openssl RIPEMD160 digest]) fi digest_modules_available= AC_MSG_CHECKING(whether to use openssl digests) if test "$enable_openssl_digests" = yes ; then AC_MSG_RESULT(yes) AC_CHECK_HEADERS(openssl/crypto.h) if test "$ac_cv_header_openssl_crypto_h" = yes ; then AC_DEFINE(HAVE_OPENSSL_DIGESTS, 1, [Have openssl digests]) new_digest_modules= LIBS="$LIBRDF_LIBS -lcrypto" have_libcrypto=no for module in $digest_modules; do func=`echo $module | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` found= AC_MSG_CHECKING(for openssl $func digest module) AC_CACHE_VAL(ac_cv_lib_crypto_$func, [AC_TRY_LINK(, $func(), [eval "ac_cv_lib_crypto_$func=yes"], [eval "ac_cv_lib_crypto_$func=no"])]) if eval "test \"`echo '$ac_cv_lib_crypto_'$func`\" = yes"; then AC_MSG_RESULT(yes) n=HAVE_OPENSSL_CRYPTO_${func}_DIGEST AC_DEFINE_UNQUOTED($n) have_libcrypto=yes digest_modules_available="$digest_modules_available $module(openssl)" else AC_MSG_RESULT(no) new_digest_modules="${new_digest_modules} $module" fi done if test "$have_libcrypto" = yes; then LIBRDF_LIBS="$LIBRDF_LIBS -lcrypto" fi DIGEST_OBJS="$DIGEST_OBJS rdf_digest_openssl.lo" DIGEST_SRCS="$DIGEST_SRCS rdf_digest_openssl.c" digest_modules=$new_digest_modules fi else AC_MSG_RESULT(no) fi dnl hashes HASH_OBJS= HASH_SRCS= AC_MSG_CHECKING(for bdb hash support) if test "$have_libdb" = yes; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BDB_HASH, 1, [Have BDB hash support]) HASH_OBJS="$HASH_OBJS rdf_hash_bdb.lo" HASH_SRCS="$HASH_SRCS rdf_hash_bdb.c" else AC_MSG_RESULT(no) fi AC_SUBST(HASH_OBJS) AC_SUBST(HASH_SRCS) dnl Storages persistent_storages="/file/tstore/mysql/sqlite/" persistent_store=no all_storages="memory file hashes trees mysql sqlite tstore postgresql" always_available_storages="memory file hashes trees" dnl default availabilities and enablements for storage in $all_storages; do eval $storage'_storage_available=no' eval $storage'_storage=no' done for storage in $always_available_storages; do eval $storage'_storage_available=yes' eval $storage'_storage=yes' done storages_available="file hashes(memory) trees" if test "$have_libdb" = yes; then storages_available="$storages_available hashes(bdb $bdb_version)" fi AC_ARG_WITH(threestore, [ --with-threestore(=CONFIG|yes|no) Location of 3store-config (default=no)], tstore_config="$withval", tstore_config="no") if test "X$tstore_config" != "Xno"; then if test "X$tstore_config" != "Xyes" ; then TSTORE_CONFIG=$tstore_config fi tstore_config=yes fi if test $tstore_config = yes -a "X$TSTORE_CONFIG" = "X" ; then AC_CHECK_PROGS(TSTORE_CONFIG, 3store-config) fi AC_MSG_CHECKING(for 3store library) if test "X$TSTORE_CONFIG" != X -a "X$PKG_CONFIG" != X ; then tstore_version=`$TSTORE_CONFIG --version` storages_available="$storages_available 3store($tstore_version)" tstore_storage_available=yes AC_MSG_RESULT(yes - version $tstore_version) else AC_MSG_RESULT(no) fi AC_ARG_WITH(mysql, [ --with-mysql(=CONFIG|yes|no) Location of MySQL 3/4 mysql_config (default=no)], mysql_config="$withval", mysql_config="no") if test "X$mysql_config" != "Xno"; then if test "X$mysql_config" != "Xyes" ; then MYSQL_CONFIG=$mysql_config fi mysql_config=yes fi if test $mysql_config = yes -a "X$MYSQL_CONFIG" = "X" ; then AC_CHECK_PROGS(MYSQL_CONFIG, mysql_config) fi libmysql_min_version=3.23.56 # Also tested on 4.0.14 mysql_cflags= mysql_libs= if test "X$MYSQL_CONFIG" != X; then dnl need to change quotes to allow square brackets changequote(<<, >>)dnl mysql_libs=`$MYSQL_CONFIG --libs | sed -e "s/'//g"` # Stop the MySQL config program adding -Os or -O options to CFLAGS mysql_cflags=`$MYSQL_CONFIG --cflags | sed -e "s/'//g" -e "s/[ \t]-O[A-Za-z0-9]*/ /" ` changequote([, ])dnl LIBS="$LIBRDF_LIBS $mysql_libs" CPPFLAGS="$LIBRDF_CPPFLAGS $mysql_cflags" AC_MSG_CHECKING(for mysql library) LIBMYSQL_VERSION=`$MYSQL_CONFIG --version` libmysql_version_dec=`echo $LIBMYSQL_VERSION | awk -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` libmysql_min_version_dec=`echo $libmysql_min_version | awk -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` AC_MSG_RESULT(yes - version $LIBMYSQL_VERSION) if test $libmysql_version_dec -lt $libmysql_min_version_dec; then AC_MSG_WARN(Using libmysql $LIBMYSQL_VERSION is unsupported - $libmysql_min_version or newer recommended.) else storages_available="$storages_available mysql($LIBMYSQL_VERSION)" mysql_storage_available=yes fi AC_MSG_CHECKING(whether MYSQL_OPT_RECONNECT is declared) AC_COMPILE_IFELSE([#include int x=MYSQL_OPT_RECONNECT;], AC_DEFINE(HAVE_MYSQL_OPT_RECONNECT, 1, [have MYSQL_OPT_RECONNECT declared]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) LIBS="$LIBRDF_LIBS" CPPFLAGS="$LIBRDF_CPPFLAGS" fi AC_ARG_WITH(sqlite, [ --with-sqlite(=yes|no|2|3) Enable SQLite store with version (default=no)], sqlite_api_version="$withval", sqlite_api_version="no") AC_ARG_WITH(sqlite-version, [ --with-sqlite-version(=yes|no|2|3) SQLite version to use (default=no)], sqlite_api_version="no") if test "x$sqlite_api_version" = "xyes" ; then sqlite_api_version="auto" fi AC_MSG_CHECKING(for sqlite library versions available) sqlite_versions= if test "X$PKG_CONFIG" != X ; then sqlite_version=`$PKG_CONFIG sqlite3 --modversion 2>/dev/null` if test "X$sqlite_version" != X; then if test "X$sqlite_api_version" = Xauto; then sqlite_api_version=3 fi sqlite_versions=$sqlite_version fi sqlite_version=`$PKG_CONFIG sqlite --modversion 2>/dev/null` if test "X$sqlite_version" != X; then if test "X$sqlite_api_version" = Xauto; then sqlite_api_version=2 fi sqlite_versions="$sqlite_version $sqlite_versions" fi fi AC_MSG_RESULT($sqlite_versions) if test "X$sqlite_api_version" = Xauto; then sqlite_api_version=no fi AC_MSG_CHECKING(using sqlite library) if test "X$sqlite_api_version" != Xno ; then if test "$sqlite_api_version" = 3; then SQLITE_CONFIG="$PKG_CONFIG sqlite3" else SQLITE_CONFIG="$PKG_CONFIG sqlite" fi sqlite_version=`$SQLITE_CONFIG --modversion 2>/dev/null` AC_DEFINE_UNQUOTED(SQLITE_API, $sqlite_api_version, [SQLite API version]) storages_available="$storages_available sqlite($sqlite_version)" sqlite_storage_available=yes AC_MSG_RESULT(yes - version $sqlite_version) CPPFLAGS="$LIBRDF_CPPFLAGS `$SQLITE_CONFIG --cflags`" AC_CHECK_HEADERS(sqlite3.h sqlite.h) CPPFLAGS="$LIBRDF_CPPFLAGS" else AC_MSG_RESULT(no) fi AC_ARG_WITH(postgresql, [ --with-postgresql(=CONFIG|yes|no) Location of pg_config (default=no)], pg_config="$withval", pg_config="no") if test "X$pg_config" != "Xno"; then if test "X$pg_config" != "Xyes" ; then PG_CONFIG=$pg_config fi pg_config=yes fi if test $pg_config = yes -a "X$PG_CONFIG" = "X" ; then AC_CHECK_PROGS(PG_CONFIG, pg_config) fi AC_MSG_CHECKING(for postgresql library) if test "X$PG_CONFIG" != X ; then postgresql_version=`$PG_CONFIG --version | sed -e 's/^.* //'` storages_available="$storages_available postgresql($postgresql_version)" postgresql_storage_available=yes AC_MSG_RESULT(yes - version $postgresql_version) CPPFLAGS="$LIBRDF_CPPFLAGS -I`$PG_CONFIG --includedir`" AC_CHECK_HEADERS(libpq-fe.h) CPPFLAGS="$LIBRDF_CPPFLAGS" LIBS="$LIBRDF_LIBS -L`$PG_CONFIG --libdir` -lpq" else AC_MSG_RESULT(no) fi # This is needed because autoheader can't work out which computed # symbols must be pulled from acconfig.h into config.h.in if test "x" = "y"; then AC_DEFINE(STORAGE_FILE, 1, [Building file storage]) AC_DEFINE(STORAGE_HASHES, 1, [Building hashes storage]) AC_DEFINE(STORAGE_TREES, 1, [Building trees storage]) AC_DEFINE(STORAGE_MEMORY, 1, [Building memory storage]) AC_DEFINE(STORAGE_MYSQL, 1, [Building MySQL storage]) AC_DEFINE(STORAGE_SQLITE, 1, [Building SQLite storage]) AC_DEFINE(STORAGE_TSTORE, 1, [Building 3store storage]) AC_DEFINE(STORAGE_POSTGRESQL, 1, [Building PostgreSQL storage]) fi AC_MSG_CHECKING(storages required) AC_ARG_ENABLE(storages, [ --enable-storages=LIST Use storages (default=all)], storages="$enableval") if test "X$storages" = Xall -o "X$storages" = X; then storages="$all_storages" AC_MSG_RESULT(all) else AC_MSG_RESULT($storages) fi dnl absolutely ensuring memory is enabled if echo $storages | grep memory >/dev/null; then : else storages="memory $storages" fi for storage in $storages; do if eval test \$$storage'_storage_available' = yes; then eval $storage'_storage=yes' NAME=`echo $storage | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` n=STORAGE_${NAME} AC_DEFINE_UNQUOTED($n) storages_enabled="$storages_enabled $storage" if echo $persistent_storages | grep "/$storage/" >/dev/null; then persistent_store=yes fi fi done AM_CONDITIONAL(STORAGE_FILE, test $file_storage = yes) AM_CONDITIONAL(STORAGE_HASHES, test $hashes_storage = yes) AM_CONDITIONAL(STORAGE_TREES, test $trees_storage = yes) AM_CONDITIONAL(STORAGE_MEMORY, test $memory_storage = yes) AM_CONDITIONAL(STORAGE_MYSQL, test $mysql_storage = yes) AM_CONDITIONAL(STORAGE_SQLITE, test $sqlite_storage = yes) AM_CONDITIONAL(STORAGE_TSTORE, test $tstore_storage = yes) AM_CONDITIONAL(STORAGE_POSTGRESQL, test $postgresql_storage = yes) if test $mysql_storage = yes; then MYSQL_CPPFLAGS=`$MYSQL_CONFIG --cflags | sed -e "s/'//g" -e "s/-O[A-Za-z0-9]*//" ` MYSQL_LIBS="$LIBRDF_LIBS $mysql_libs" fi if test $sqlite_storage = yes; then SQLITE_CPPFLAGS="`$SQLITE_CONFIG --cflags`" SQLITE_LIBS="`$SQLITE_CONFIG --libs`" fi if test $tstore_storage = yes; then TSTORE_CPPFLAGS="`$TSTORE_CONFIG --cflags` `$PKG_CONFIG glib --cflags`" TSTORE_LIBS="`$TSTORE_CONFIG --libs` `$PKG_CONFIG glib --libs`" fi if test $postgresql_storage = yes; then POSTGRESQL_CPPFLAGS="-I`$PG_CONFIG --includedir`" POSTGRESQL_LIBS="-L`$PG_CONFIG --libdir` -lpq" fi if test "$persistent_store" = no; then AC_MSG_WARN(No persistant storage is available or enabled) fi AC_SUBST(MYSQL_CPPFLAGS) AC_SUBST(MYSQL_LIBS) AC_SUBST(SQLITE_CPPFLAGS) AC_SUBST(SQLITE_LIBS) AC_SUBST(TSTORE_CPPFLAGS) AC_SUBST(TSTORE_LIBS) AC_SUBST(POSTGRESQL_CPPFLAGS) AC_SUBST(POSTGRESQL_LIBS) if test "$modular" = yes; then LIBRDF_CPPFLAGS="$LIBRDF_CPPFLAGS $INCLTDL" LIBRDF_LIBS="$LIBRDF_LIBS $LIBLTDL" AC_DEFINE(MODULAR_LIBRDF, 1, [Build storage backends as modules]) else LIBRDF_CPPFLAGS="$LIBRDF_CPPFLAGS $MYSQL_CPPFLAGS $SQLITE_CPPFLAGS $TSTORE_CPPFLAGS $POSTGRESQL_CPPFLAGS" LIBRDF_LIBS="$LIBRDF_LIBS $MYSQL_LIBS $SQLITE_LIBS $TSTORE_LIBS $POSTGRESQL_LIBS" fi AM_CONDITIONAL(MODULAR_LIBRDF, test $modular = yes) CPPFLAGS="$LIBRDF_CPPFLAGS" LDFLAGS="$LIBRDF_LDFLAGS" LIBS="$LIBRDF_LIBS" dnl Check for use of threads AC_ARG_WITH(threads, [ --with-threads With POSIX thread support (default=no)], with_threads="$withval", with_threads="no") AC_CHECK_HEADERS(pthread.h) AC_MSG_CHECKING(if POSIX threads should be used) if test $with_threads = "yes" ; then if test "$ac_cv_header_pthread_h" = yes ; then AC_DEFINE(WITH_THREADS, 1, [Use POSIX threads]) LIBRDF_LIBS="$LIBRDF_LIBS -lpthread" AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi else AC_MSG_RESULT(no) fi LIBS=$LIBRDF_LIBS # Maybe add some local digest modules for module in $digest_modules; do module_u=`echo $module | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` AC_MSG_CHECKING(for local $module digest module) base=rdf_digest_$module if test -r $srcdir/librdf/$base.c; then AC_MSG_RESULT(yes) n=HAVE_LOCAL_${module_u}_DIGEST AC_DEFINE_UNQUOTED($n) DIGEST_OBJS="$DIGEST_OBJS $base.lo" DIGEST_SRCS="$DIGEST_SRCS $base.c" digest_modules_available="$digest_modules_available $module" else AC_MSG_RESULT(no) fi done AC_SUBST(DIGEST_OBJS) AC_SUBST(DIGEST_SRCS) # This is needed because autoheader can't work out which computed # symbols must be pulled from acconfig.h into config.h.in if test "x" = "y"; then AC_DEFINE(HAVE_LOCAL_MD5_DIGEST, 1, [Have local MD5 digest]) AC_DEFINE(HAVE_LOCAL_SHA1_DIGEST, 1, [Have local SHA1 digest]) AC_DEFINE(HAVE_LOCAL_RIPEMD160_DIGEST, 1, [Have local RIPEMD160 digest]) fi dnl RDF query rasqal_dir= config_subdir_rasqal=no if test $with_rasqal = internal; then LIBRDF_INTERNAL_CPPFLAGS="-I\$(top_srcdir)/rasqal/src $LIBRDF_INTERNAL_CPPFLAGS" LIBRDF_INTERNAL_LIBS="\$(top_builddir)/rasqal/src/librasqal.la $LIBRDF_INTERNAL_LIBS" rasqal_dir=rasqal config_subdir_rasqal=yes else LIBRDF_EXTERNAL_CPPFLAGS="`$RASQAL_CONFIG --cflags` $LIBRDF_EXTERNAL_CPPFLAGS" LIBRDF_EXTERNAL_LIBS="`$RASQAL_CONFIG --libs` $LIBRDF_EXTERNAL_LIBS" fi if test "$config_subdir_rasqal" = yes -o "$USE_MAINTAINER_MODE" = yes; then AC_CONFIG_SUBDIRS(rasqal) fi #LIBRDF_EXTERNAL_CPPFLAGS="$LIBRDF_EXTERNAL_CPPFLAGS $LIBRDF_CPPFLAGS" LIBRDF_EXTERNAL_LIBS="$LIBRDF_EXTERNAL_LIBS $LIBRDF_LIBS" # Everything except things with .pc files (raptor and rasqal) # 3store uses it but is optional and thus tricky to specify this way LIBRDF_PKGCONFIG_PRIVATE_LIBS=$LIBRDF_LIBS dnl Local sub-packages in sub directories needed to build librdf dnl Ordering constraints: rasqal needs raptor if test "$USE_MAINTAINER_MODE" = yes; then LOCAL_SUBDIRS="raptor rasqal" else LOCAL_SUBDIRS="$raptor_dir $rasqal_dir" fi AC_SUBST(LOCAL_SUBDIRS) # Make final changes to cflags CFLAGS="-DLIBRDF_INTERNAL=1 $CFLAGS" MEM= MEM_LIBS= AC_ARG_WITH(dmalloc, [ --with-dmalloc Use dmalloc debugging library (default=no)], use_dmalloc="$withval", use_dmalloc="no") AC_MSG_CHECKING(using dmalloc library) if test "$USE_MAINTAINER_MODE" = yes; then if test "$ac_cv_header_dmalloc_h" = yes; then if test "X$use_dmalloc" = Xauto; then use_dmalloc=yes fi else use_dmalloc=no fi else use_dmalloc=no fi AC_MSG_RESULT($use_dmalloc) if test $use_dmalloc = yes; then MEM=-DLIBRDF_MEMORY_DEBUG_DMALLOC=1 MEM_LIBS=-ldmalloc fi AC_ARG_WITH(memory-signing, [ --with-memory-signing Sign allocated memory (default=no)], use_memory_signing="$withval", use_memory_signing="no") AC_MSG_CHECKING(using memory signing) AC_MSG_RESULT($use_memory_signing) if test $use_memory_signing = yes; then MEM=-DLIBRDF_MEMORY_SIGN=1 MEM_LIBS= fi assert=yes AC_ARG_ENABLE(assertions, [ --enable-assertions Perform run time assertion checks (default yes). ], assert=$enableval) if test "$assert" = "yes"; then AC_DEFINE(LIBRDF_ASSERT, 1, [Run time assertion checks.]) fi assert_messages=yes AC_ARG_ENABLE(assert-messages, [ --enable-assert-messages Print run time assertion check failure messages (default yes). ], assert_messages=$enableval) if test "$assert_messages" = "yes"; then AC_DEFINE(LIBRDF_ASSERT_MESSAGES, 1, [Print run time assertion check failure messages.]) fi if test "$USE_MAINTAINER_MODE" = yes; then LIBRDF_CPPFLAGS="-g -DLIBRDF_DEBUG=1 $LIBRDF_CPPFLAGS" fi STANDARD_CFLAGS="$STANDARD_CFLAGS $CFLAGS" if test "$USE_MAINTAINER_MODE" = yes; then CFLAGS="$MAINTAINER_CFLAGS $CFLAGS" fi if test "$USE_MAINTAINER_MODE" = yes -a $release_version = no; then dnl need to change quotes to allow square brackets changequote(<<, >>)dnl CFLAGS=`echo $CFLAGS | sed -e "s/-O[A-Za-z0-9]*//"` CXXFLAGS=`echo $CXXFLAGS | sed -e "s/-O[A-Za-z0-9]*//"` STANDARD_CFLAGS=`echo $STANDARD_CFLAGS | sed -e "s/-O[A-Za-z0-9]*//"` LIBRDF_CPPFLAGS=`echo $LIBRDF_CPPFLAGS | sed -e "s/-O[A-Za-z0-9]*//"` LIBRDF_EXTERNAL_CPPFLAGS=`echo $LIBRDF_EXTERNAL_CPPFLAGS | sed -e "s/-O[A-Za-z0-9]*//"` LIBRDF_INTERNAL_CPPFLAGS=`echo $LIBRDF_INTERNAL_CPPFLAGS | sed -e "s/-O[A-Za-z0-9]*//"` changequote([, ])dnl fi LIBS= CPPFLAGS= LDFLAGS= LIBRDF_LIBTOOLLIBS=librdf.la AC_SUBST(LIBRDF_EXTERNAL_CPPFLAGS) AC_SUBST(LIBRDF_EXTERNAL_LIBS) AC_SUBST(LIBRDF_INTERNAL_CPPFLAGS) AC_SUBST(LIBRDF_INTERNAL_LIBS) AC_SUBST(LIBRDF_CPPFLAGS) AC_SUBST(LIBRDF_LDFLAGS) AC_SUBST(LIBRDF_LIBTOOLLIBS) AC_SUBST(LIBRDF_PKGCONFIG_PRIVATE_LIBS) AC_SUBST(MEM) AC_SUBST(MEM_LIBS) AC_SUBST(STANDARD_CFLAGS) abs_top_srcdir=`cd $srcdir; pwd` AC_SUBST(abs_top_srcdir) abs_top_builddir=`pwd` AC_SUBST(abs_top_builddir) AC_CONFIG_FILES([Makefile redland.rdf librdf/redland.spec docs/Makefile docs/version.xml librdf/Makefile librdf/win32/Makefile examples/Makefile utils/Makefile demos/Makefile data/Makefile redland.pc]) AC_CONFIG_FILES([redland-config], [chmod +x redland-config]) AC_CONFIG_FILES([redland-src-config], [chmod +x redland-src-config]) dnl Check for gtk-doc and docbook GTK_DOC_CHECK([1.3]) AC_OUTPUT AC_MSG_RESULT([ Redland build summary: ]) if test "$modular" = yes; then AC_MSG_RESULT([ Using modular storage backends]) else AC_MSG_RESULT([ Using monolithic storage backends]) fi AC_MSG_RESULT([ Berkeley/Sleepycat DB : $bdb_available Triple stores available : $storages_available Triple stores enabled :$storages_enabled RDF parsers :$rdf_parsers_available RDF query : $rdf_query Content digests :$digest_modules_available ])