blob: 75fd2819583c2d3d724c75e1d920775c4bd95a1f [file] [log] [blame]
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 Get the version number of Subversion, using m4's esyscmd() command to run
dnl the command at m4-generation time. This allows us to create an m4
dnl symbol holding the correct version number. AC_INIT() requires the
dnl version number at m4-time, rather than when ./configure is run, so
dnl all this must happen as part of m4, not as part of the shell code
dnl contained in ./configure.
dnl
dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an apprpriate
dnl test. I believe this test will work, but I don't have a place with non-
dnl GNU M4 to test it right now.
define([subversion_version],
ifdef([__gnu__],
[esyscmd(build/getversion.py subversion/include/svn_version.h)],
[0.x]))
AC_INIT(subversion, subversion_version, [http://subversion.tigris.org/])
undefine([subversion_version])
dnl AC_CONFIG_SRCDIR is *required*; sanity-checks that our src dir exists.
AC_CONFIG_SRCDIR(subversion/include/svn_types.h)
AC_CONFIG_AUX_DIR(ac-helpers)
dnl What version of Subversion are we configuring?
# Note: this could be different from PACKAGE_VERSION. That symbol gets
# defined at M4 evaluation time, but only for GNU M4. Other M4
# implementations might end up with just "0.x"
svn_version="`$srcdir/build/getversion.py $srcdir/subversion/include/svn_version.h`"
echo "Configuring Subversion $svn_version"
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(build/ac-macros/berkeley-db.m4)
sinclude(build/ac-macros/svn-apache.m4)
sinclude(build/ac-macros/svn-macros.m4)
sinclude(build/ac-macros/neon.m4)
sinclude(build/ac-macros/find_apr.m4)
sinclude(build/ac-macros/apr.m4)
sinclude(build/ac-macros/find_apu.m4)
sinclude(build/ac-macros/aprutil.m4)
sinclude(build/ac-macros/java.m4)
sinclude(build/ac-macros/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 Check for programs ---------------------
dnl Look for a C compiler (before anything can set CFLAGS)
AC_PROG_CC
dnl Look for a C pre-processor
AC_PROG_CPP
dnl Look for an extended grep, this macro appeared in autoconf-2.53b
ifdef([AC_PROG_EGREP],[AC_PROG_EGREP],[])
dnl See if 'ln -s' works
AC_PROG_LN_S
dnl Sub-package configuration ---------------------
dnl Possibly reconfigure packages in subdirectories
AC_ARG_ENABLE(subdir-config,
AC_HELP_STRING([--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 --------------------------
dnl verify apr version and set apr flags
changequote(<<, >>)
APR_VER_REGEX="0\.9\.[4-9]"
APR_VER_REGEX_TOO="1\.0"
APU_VER_REGEX="0\.9\.[4-9]"
APU_VER_REGEX_TOO="1\.0"
changequote([, ])
SVN_LIB_APR($APR_VER_REGEX, $APR_VER_REGEX_TOO)
SVN_LIB_APRUTIL($APU_VER_REGEX, $APU_VER_REGEX_TOO)
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 What version of Expat are we using? -----------------
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 Set up a number of directories ---------------------
dnl Create SVN_BINDIR for proper substitution
if test "${bindir}" = '${exec_prefix}/bin'; then
if test "${exec_prefix}" = "NONE"; then
if test "${prefix}" = "NONE"; then
SVN_BINDIR="${ac_default_prefix}/bin"
else
SVN_BINDIR="${prefix}/bin"
fi
else
SVN_BINDIR="${exec_prefix}/bin"
fi
else
SVN_BINDIR="${bindir}"
fi
dnl fully evaluate this value. when we substitute it into our tool scripts,
dnl they will not have things such as ${bindir} available
SVN_BINDIR="`eval echo ${SVN_BINDIR}`"
AC_SUBST(SVN_BINDIR)
dnl This directory is where we will store our data. We don't want to
dnl evaluate it so that later changes in datadir will propagate properly
svndatadir='${datadir}/subversion'
docdir='${datadir}/doc'
docdir="${docdir}/subversion-${svn_version}"
AC_SUBST(docdir)
dnl Pass EXEEXT on to the Makefiles
AC_SUBST(EXEEXT)
dnl Check for libtool -- we'll definitely need it for all our shared libs!
echo "configuring libtool now"
AC_ARG_ENABLE(experimental-libtool,
AC_HELP_STRING([--experimental-libtool],[Use APR's libtool]),
[experimental_libtool=$enableval],[experimental_libtool=no])
if test "$experimental_libtool" = "yes"; then
echo "using APR's libtool"
LIBTOOL="`$apr_config --apr-libtool`"
SVN_LIBTOOL="`$apr_config --apr-libtool`"
else
SVN_LIBTOOL='$(SHELL) $(abs_builddir)/libtool'
dnl libtoolize requires that the following line not be indented
AC_PROG_LIBTOOL
fi
AC_SUBST(SVN_LIBTOOL)
dnl Before configuring libtool check for --enable-all-static option
AC_ARG_ENABLE(all-static,
AC_HELP_STRING([--enable-all-static],
[Build completely static (standalone) binaries.]),
[
if test "$enableval" = "yes" ; then
LT_LDFLAGS="-all-static $LT_LDFLAGS"
fi
])
AC_SUBST(LT_LDFLAGS)
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,
AC_HELP_STRING([--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 with a recent-enough magic module number.
SVN_FIND_APACHE(20020903)
dnl Check for libraries --------------------
# Berkeley DB on SCO OpenServer needs -lsocket
AC_CHECK_LIB(socket, socket)
# Build the filesystem library (and repository administration tool)
# only if we have an appropriate version of Berkeley DB.
case "$host" in
powerpc-apple-darwin*)
# Berkeley DB 4.0 does not work on OS X.
SVN_FS_WANT_DB_MAJOR=4
SVN_FS_WANT_DB_MINOR=1
SVN_FS_WANT_DB_PATCH=25
;;
*)
SVN_FS_WANT_DB_MAJOR=4
SVN_FS_WANT_DB_MINOR=0
SVN_FS_WANT_DB_PATCH=14
;;
esac
# Look for libdb4.so first:
SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
$SVN_FS_WANT_DB_PATCH, [db4 db])
# 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
if test "$svn_lib_neon" = "yes"; then
BUILD_RULES="$BUILD_RULES dav-lib"
INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-dav-lib"
INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-lib/install-dav-lib install-lib/'`"
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,
AC_HELP_STRING([--enable-debug],
[Turn on debugging and compile time warnings]),
[
if test "$enableval" = "yes" ; then
enable_debugging="yes"
else
enable_debugging="no"
fi
])
AC_ARG_WITH(editor,
AC_HELP_STRING([--with-editor=PATH],
[Specify a default editor for the subversion client.]),
[
if test "$withval" = "yes" ; then
AC_MSG_ERROR([--with-editor requires an argument.])
else
SVN_CLIENT_EDITOR=$withval
AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
[The path of a default editor for the client.])
fi
])
AC_ARG_WITH(zlib,
AC_HELP_STRING([--with-zlib], [enable zlib support]),
[
if test "$withval" = "yes" ; then
AC_CHECK_HEADER(zlib.h, [
AC_CHECK_LIB(z, inflate, [
AC_DEFINE([SVN_HAVE_ZLIB], [1], [Is zlib support enabled?])
LIBS="$LIBS -lz"
])
])
fi
])
MOD_ACTIVATION="-a"
AC_ARG_ENABLE(mod-activation,
AC_HELP_STRING([--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,
AC_HELP_STRING([--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
dnl SVN_DEBUG enables specific features for developer builds
dnl AP_DEBUG enables specific (Apache) features for developer builds
CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
if test "$GCC" = "yes"; then
CFLAGS="$CFLAGS -Wpointer-arith -Wwrite-strings -Wshadow"
case "$host" in
*freebsd*|*linux*)
CFLAGS="$CFLAGS -std=c89"
;;
esac
fi
fi
])
AC_ARG_ENABLE(gprof,
AC_HELP_STRING([--enable-gprof],
[Produce gprof profiling data in 'gmon.out' (GCC only).]),
[
if test "$enableval" = "yes" ; then
dnl Probably other compilers support -pg or something similar;
dnl feel free to extend this to include them.
if test "$GCC" = "yes"; then
if test "$enable_shared" = "yes" ; then
AC_MSG_ERROR(Can't have --enable-gprof without --disable-shared (we
recommend also using --enable-all-static).)
fi
if test ! "$enable_all_static" = "yes" ; then
AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
fi
AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
CFLAGS="$CFLAGS -pg"
LT_LDFLAGS="$LT_LDFLAGS -pg"
else
AC_MSG_ERROR(We only support --enable-gprof with GCC right now.)
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 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_NULL_DEVICE_NAME, "/dev/null",
[Defined to be the null device for the system])
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_JDK
AC_PATH_PROG(PERL, perl, none)
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,
AC_HELP_STRING([--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
if test "$svn_lib_neon" = "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)"
fi
AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
[Defined if libsvn_client should link against libsvn_ra_svn])
svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_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) $svn_ra_lib_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) $svn_ra_lib_link"
fi
SVN_RA_LIB_DEPS=$svn_ra_lib_deps
SVN_RA_LIB_LINK=$svn_ra_lib_link
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_CONFIG_FILES([Makefile])
SVN_CONFIG_SCRIPT(svn-config)
SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
SVN_CONFIG_SCRIPT(contrib/client-side/svn_load_dirs.pl)
SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-email.pl)
SVN_CONFIG_SCRIPT(tools/hook-scripts/propchange-email.pl)
AC_OUTPUT
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/index.shtml
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