| 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) |
| |
| 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 |
| SVN_EXPAT_INCLUDES='-I$(top_srcdir)/expat-lite' |
| AC_SUBST(SVN_EXPAT_INCLUDES) |
| |
| 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`" |
| 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_RULES="install-base-lib install-lib install-bin install-include install-docs" |
| 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_RULES="install-base-lib install-fs-lib install-lib install-bin install-fs-bin $INSTALL_APACHE_RULE install-include install-docs" |
| FS_TEST_DEPS="\$(FS_TEST_DEPS)" |
| FS_TEST_PROGRAMS="\$(FS_TEST_PROGRAMS)" |
| fi |
| AC_SUBST(BUILD_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 |
| ]) |
| |
| 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 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 |
| |
| dnl try to find "swig" to build the SWIG bindings |
| AC_PATH_PROG(SWIG, swig, none) |
| if test "$SWIG" != "none"; then |
| if test "$PYTHON" != "none"; then |
| SWIG_BUILD_RULES="$SWIG_BUILD_RULES swig-py-lib" |
| SWIG_INSTALL_RULES="$SWIG_INSTALL_RULES install-swig-py-lib" |
| |
| AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[ |
| ac_cv_python_includes="`$PYTHON ${abs_srcdir}/ac-helpers/get-py-info.py --includes`" |
| ]) |
| SWIG_PY_INCLUDES="-I$ac_cv_python_includes" |
| fi |
| fi |
| AC_SUBST(SWIG_BUILD_RULES) |
| AC_SUBST(SWIG_INSTALL_RULES) |
| AC_SUBST(SWIG_PY_INCLUDES) |
| |
| 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="subversion/libsvn_ra_dav/libsvn_ra_dav.la" |
| SVN_RA_LIB_LINK="\$(abs_builddir)/subversion/libsvn_ra_dav/libsvn_ra_dav.la" |
| |
| 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="subversion/libsvn_ra_local/libsvn_ra_local.la \ |
| subversion/libsvn_repos/libsvn_repos.la \ |
| subversion/libsvn_fs/libsvn_fs.la \ |
| subversion/libsvn_ra_dav/libsvn_ra_dav.la" |
| |
| ### 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 link libsvn_fs to the db3 in |
| ### /usr/local/lib |
| SVN_RA_LIB_LINK="\$(abs_builddir)/subversion/libsvn_ra_local/libsvn_ra_local.la \ |
| \$(abs_builddir)/subversion/libsvn_repos/libsvn_repos.la \ |
| \$(abs_builddir)/subversion/libsvn_fs/libsvn_fs.la \ |
| \$(abs_builddir)/subversion/libsvn_ra_dav/libsvn_ra_dav.la" |
| 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]) |
| |
| |
| 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 |
| |