dnl Process this file with autoconf to produce a configure script. dnl Autoconfiscation for Subversion dnl General Setup ----------------------- dnl Ensure that subversion is configured with autoconf 2.50 or newer dnl Don't even think about removing this check! AC_PREREQ(2.50) dnl First line is *required*; sanity-checks that the our src dir exists. AC_INIT(subversion/include/svn_types.h) AC_CONFIG_AUX_DIR(ac-helpers) abs_srcdir="`cd $srcdir && pwd`" abs_builddir="`pwd`" dnl ### should we ever bother with the system install? dnl use abs_srcdir. sometimes during installation, libtool will relink the dnl library. when it does this, it does a "cd", so a relative use of dnl install-sh will not work. INSTALL="$abs_srcdir/ac-helpers/install-sh -c" AC_SUBST(INSTALL) MKDIR="$INSTALL -d" AC_SUBST(MKDIR) dnl Grab our own macros sinclude(ac-helpers/berkeley-db.m4) sinclude(ac-helpers/svn-apache.m4) sinclude(ac-helpers/svn-macros.m4) sinclude(ac-helpers/neon.m4) sinclude(ac-helpers/find_apr.m4) sinclude(ac-helpers/apr.m4) sinclude(ac-helpers/find_apu.m4) sinclude(ac-helpers/aprutil.m4) sinclude(ac-helpers/swig.m4) dnl Grab the libtool macros sinclude(ac-helpers/libtool.m4) dnl Generate config.nice early (before the args are munged) SVN_CONFIG_NICE(config.nice) dnl AC_CONFIG_HEADER causes `autoheader' to produce svn_private_config.h.in for us. dnl (We can add custom defines by creating ./acconfig.h if we wish.) AC_CONFIG_HEADER(svn_private_config.h) dnl Todo: we're English-only now, but GNU Gettext eventually? dnl Set of available languages. dnl ALL_LINGUAS="de fr es ko nl no pl pt sl sv" dnl I volunteer for this ^^ translation :-) -xbc dnl Sub-package configuration --------------------- dnl Possibly reconfigure packages in subdirectories AC_ARG_ENABLE(subdir-config, [ --disable-subdir-config do not reconfigure packages in subdirectories ], [ if test "$enableval" = "yes" ; then do_subdir_config="yes" fi ], [ do_subdir_config=yes ]) dnl the extra bits to include into our build process SVN_EXTRA_INCLUDES='-I$(top_srcdir)/subversion/include -I$(top_builddir)' SVN_EXTRA_LIBS= SVN_SUBDIRS= AC_SUBST(SVN_EXTRA_INCLUDES) AC_SUBST(SVN_EXTRA_LIBS) AC_SUBST(SVN_SUBDIRS) dnl Configure APR, and local Berkeley DB if any -------------------------- SVN_LIB_APR SVN_LIB_APRUTIL if test -d $abs_srcdir/db ; then # Note: We have to configure and build a db subdirectory even if # some other berkeley db is configured via --with-berkeley-db ### why do we "have to" ?? -gjs SVN_SUBDIR_CONFIG(db/dist) SVN_SUBDIRS="$SVN_SUBDIRS db/dist" fi dnl Set include dir and module library lists for Makefiles ----------------- dnl Expat APU_HAVE_OLD_EXPAT="`$apu_config --old-expat`" if test "$APU_HAVE_OLD_EXPAT" = "yes"; then AC_DEFINE(SVN_HAVE_OLD_EXPAT, 1, [Defined if Expat 1.0 or 1.1 was found]) fi dnl Check for programs --------------------- dnl Look for a C compiler AC_PROG_CC dnl See if 'ln -s' works AC_PROG_LN_S dnl Check for libtool -- we'll definitely need it for all our shared libs! echo "configuring libtool now" AC_PROG_LIBTOOL NEON_WANTED_REGEX="`sed -n '/NEON_WANTED_REGEX=/s/.*=//p' $srcdir/build/buildcheck.sh`" dnl You can skip the neon version check only if you know what you are doing AC_ARG_ENABLE(neon-version-check, [ --disable-neon-version-check do not check the Neon version ], [ if test "$enableval" = "no" ; then NEON_WANTED_REGEX="*" fi ], []) NEON_LATEST_WORKING_VER="`sed -n '/NEON_LATEST_WORKING_VER=/s/.*=//p' $srcdir/build/buildcheck.sh`" eval "`grep '^ *NEON_URL=' $srcdir/build/buildcheck.sh`" SVN_LIB_NEON($NEON_WANTED_REGEX, $NEON_LATEST_WORKING_VER, $NEON_URL) dnl find Apache SVN_FIND_APACHE dnl Check for libraries -------------------- dnl AC_CHECK_LIB() calls go here, if we ever need any # Build the filesystem library (and repository administration tool) # only if we have an appropriate version of Berkeley DB. SVN_FS_WANT_DB_MAJOR=4 SVN_FS_WANT_DB_MINOR=0 SVN_FS_WANT_DB_PATCH=14 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_PATCH) # Only add *_APACHE_RULE if we also have db, since mod_dav_svn depends on it. INSTALL_STATIC_RULES="install-bin install-docs" INSTALL_RULES="install-base-lib install-lib install-include install-static" BUILD_RULES="base-lib lib bin test" if test "$svn_lib_berkeley_db" = "yes"; then BUILD_RULES="base-lib fs-lib lib bin fs-bin $BUILD_APACHE_RULE test fs-test" INSTALL_STATIC_RULES="install-bin install-fs-bin install-docs" INSTALL_RULES="install-base-lib install-fs-lib install-lib install-include install-static $INSTALL_APACHE_RULE" FS_TEST_DEPS="\$(FS_TEST_DEPS)" FS_TEST_PROGRAMS="\$(FS_TEST_PROGRAMS)" fi AC_SUBST(BUILD_RULES) AC_SUBST(INSTALL_STATIC_RULES) AC_SUBST(INSTALL_RULES) AC_SUBST(FS_TEST_DEPS) AC_SUBST(FS_TEST_PROGRAMS) AC_SUBST(SVN_DB_INCLUDES) AC_SUBST(SVN_DB_LIBS) AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR, [The desired major version for the Berkeley DB]) AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR, [The desired minor version for the Berkeley DB]) AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH, [The desired patch version for the Berkeley DB]) dnl Check for header files ---------------- dnl Standard C headers AC_HEADER_STDC dnl Check for typedefs, structures, and compiler characteristics ---------- dnl if compiler doesn't understand `const', then define it empty AC_C_CONST dnl if non-existent, define size_t to be `unsigned' AC_TYPE_SIZE_T dnl Check for library functions ---------- dnl libsvn_string uses memcmp() AC_FUNC_MEMCMP dnl svn_error's default warning handler uses vfprintf() AC_FUNC_VPRINTF dnl Process some configuration options ---------- AC_ARG_ENABLE(debug, [ --enable-debug Turn on debugging and compile time warnings], [ if test "$enableval" = "yes" ; then enable_debugging="yes" else enable_debugging="no" fi ]) MOD_ACTIVATION="-a" AC_ARG_ENABLE(mod-activation, [ --disable-mod-activation Do not enable mod_dav_svn in httpd.conf], [ if test "$enableval" = "no" ; then MOD_ACTIVATION="" AC_MSG_NOTICE([Disabling apache module activation]) else AC_MSG_NOTICE([Enabling apache module activation]) fi ]) AC_SUBST(MOD_ACTIVATION) AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode Turn on debugging and very strict compile-time warnings], [ if test "$enableval" = "yes" ; then if test "$enable_debugging" = "no" ; then AC_MSG_ERROR(Can't have --disable-debug and --enable-maintainer-mode) fi enable_debugging=yes if test "$GCC" = "yes"; then dnl SVN_DEBUG enables specific features for developer builds dnl AP_DEBUG enables specific (Apache) features for developer builds CFLAGS="$CFLAGS -Wpointer-arith -Wwrite-strings -Wshadow -DSVN_DEBUG -DAP_DEBUG"; fi fi ]) if test "$enable_debugging" = "yes" ; then dnl At the moment, we don't want optimization, because we're dnl debugging. dnl ### actually, debugging should be fine with the default -O2 changequote(,) CFLAGS="`echo $CFLAGS' ' | sed -e 's/-O[^ ]* //g'`" changequote([,]) else if test "$enable_debugging" = "no" ; then changequote(,) CFLAGS="`echo $CFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`" changequote([,]) fi fi dnl Find a diff that supports the "-u" flag AC_MSG_CHECKING([for diff]) SVN_CLIENT_DIFF="`${abs_srcdir}/ac-helpers/check-diff.sh ${abs_srcdir}/ac-helpers`" if test "$SVN_CLIENT_DIFF" = ""; then AC_MSG_ERROR([not found Cannot find a diff in your PATH that supports the -u flag. We recommend GNU diff (version 2.7 or later). You can get it from ftp://ftp.gnu.org/pub/gnu/diffutils. ]) fi AC_MSG_RESULT([$SVN_CLIENT_DIFF]) AC_DEFINE_UNQUOTED(SVN_CLIENT_DIFF, "$SVN_CLIENT_DIFF", [Define to be the full path to diff]) dnl Find a (non-broken) version of GNU diff3 AC_MSG_CHECKING([for non-broken GNU diff3]) SVN_CLIENT_DIFF3="`$SHELL ${abs_srcdir}/ac-helpers/gnu-diff3.sh ${abs_srcdir}/ac-helpers`" if test "$SVN_CLIENT_DIFF3" = ""; then AC_MSG_ERROR([not found Cannot find an unbroken GNU diff3 program in your PATH. Please make sure you have GNU diff (version 2.7 or later) installed. You can get it from ftp://ftp.gnu.org/pub/gnu/diffutils. (Note that FreeBSD uses a modified version of GNU diff that is unable to handle certain types of text files. Since diff3 uses GNU diff to do the actual diffing, this effectively breaks diff3 as well. If you are using FreeBSD, please install the /usr/ports/textproc/diffutils port.) ]) fi AC_MSG_RESULT([$SVN_CLIENT_DIFF3]) AC_DEFINE_UNQUOTED(SVN_CLIENT_DIFF3, "$SVN_CLIENT_DIFF3", [Define to be the full path to your GNU diff3 program]) dnl Determine whether diff3 supports the --diff-program arg. AC_MSG_CHECKING([whether diff3 supports --diff-program arg]) $SVN_CLIENT_DIFF3 --diff-program=$SVN_CLIENT_DIFF ${0} ${0} ${0} > /dev/null 2>&1 if test "$?" = "0"; then AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(SVN_DIFF3_HAS_DIFF_PROGRAM_ARG, 1, [Defined if diff3 supports the --diff-program argument]) else AC_MSG_RESULT([no]) fi dnl Since this is used only on Unix-y systems, define the path separator as '/' AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/', [Defined to be the path separator used on your local filesystem]) AC_DEFINE_UNQUOTED(SVN_PATH_STRIP_TRAILING_SLASHDOT, 0, [Non-zero if the trailing /. in paths should be stripped]) dnl Find a python 2.X binary, test cases will not run with Python 1.X AC_PATH_PROG(PYTHON2, python2, none) if test "$PYTHON2" = "none"; then AC_PATH_PROG(PYTHON, python, none) else PYTHON=$PYTHON2 fi if test "$PYTHON" != "none"; then echo "checking for Python 2.0 or newer" ${PYTHON} ${abs_srcdir}/build/pycheck.py fi SVN_CHECK_SWIG dnl try to find the "makeinfo" program AC_PATH_PROG(MAKEINFO, makeinfo, [echo cannot run makeinfo]) if test "MAKEINFO" = "echo cannot run makeinfo"; then dnl we won't install/make any info pages then INSTALL_INFO="" else INSTALL_INFO='install-info' fi AC_SUBST(INSTALL_INFO) dnl decide whether we want to link against the RA libraries AC_ARG_ENABLE(dso, [ --enable-dso Turn on DSO loading of RA libraries], [ if test "$enableval" = "yes"; then enable_dso=yes if test "$enable_shared" = "no"; then AC_MSG_ERROR([--enable-dso conflicts with --disable-shared]) fi fi ]) if test "$enable_shared" = "no" -o "$enable_dso" != "yes"; then AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_DAV, 1, [Defined if libsvn_client should link against libsvn_ra_dav]) SVN_RA_LIB_DEPS="\$(RA_DAV_DEPS)" SVN_RA_LIB_LINK="\$(RA_DAV_LINK)" if test "$svn_lib_berkeley_db" = "yes"; then AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1, [Defined if libsvn_client should link against libsvn_ra_local]) SVN_RA_LIB_DEPS="\$(RA_LOCAL_DEPS) \$(RA_DAV_DEPS)" ### We can't just append to SVN_RA_LIB_LINK because of the following ### scenario: user has neon and db3 in /usr/local, and db4 in ### /usr/local/BerkeleyDB.4.0. If libsvn_ra_dav.la comes before ### libsvn_fs.la then libtool ends up linking libsvn_fs to the db3 in ### /usr/local/lib SVN_RA_LIB_LINK="\$(RA_LOCAL_LINK) \$(RA_DAV_LINK)" fi fi AC_SUBST(SVN_RA_LIB_DEPS) AC_SUBST(SVN_RA_LIB_LINK) dnl Pass some config data ---------------------------- AC_SUBST(abs_builddir) AC_SUBST(abs_srcdir) dnl dnl BSD/OS (BSDi) needs to use a different include syntax in the Makefiles dnl case "$host" in *bsdi*) # Check whether they've installed GNU make if make --version > /dev/null 2>&1; then INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk" else # BSDi make INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\"" fi ;; *) INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk" ;; esac AC_SUBST(INCLUDE_OUTPUTS) dnl Final step: create the Makefile ---------------------------- AC_OUTPUT([Makefile svn-config], [chmod +x svn-config]) dnl Create all of the build directories if test "$abs_srcdir" != "$abs_builddir"; then make mkdir-init fi dnl Print warning messages about what we did and didn't configure at the dnl end, where people will actually see them. case "$svn_lib_berkeley_db" in "no" ) db_version="$SVN_FS_WANT_DB_MAJOR.$SVN_FS_WANT_DB_MINOR.$SVN_FS_WANT_DB_PATCH" AC_MSG_WARN([we have configured for a client-only build The Subversion filesystem library, part of the server, requires Berkeley DB version $db_version or newer, which you don't seem to have installed. We have created makefiles which will build the Subversion client code only, and skip the server. You can find latest version of Berkeley DB at http://www.sleepycat.com/. You can find the latest version of Berkeley DB here: http://www.sleepycat.com/download.html As an option, you may build Berkeley DB directly within the Subversion source tree. Download and extract the Berkeley distribution, then rename db-$db_version/ to db/ in the top level of the Subversion source tree. ]) ;; esac