1251881Speterdnl     Licensed to the Apache Software Foundation (ASF) under one
2251881Speterdnl     or more contributor license agreements.  See the NOTICE file
3251881Speterdnl     distributed with this work for additional information
4251881Speterdnl     regarding copyright ownership.  The ASF licenses this file
5251881Speterdnl     to you under the Apache License, Version 2.0 (the
6251881Speterdnl     "License"); you may not use this file except in compliance
7251881Speterdnl     with the License.  You may obtain a copy of the License at
8251881Speterdnl    
9251881Speterdnl       http://www.apache.org/licenses/LICENSE-2.0
10251881Speterdnl    
11251881Speterdnl     Unless required by applicable law or agreed to in writing,
12251881Speterdnl     software distributed under the License is distributed on an
13251881Speterdnl     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14251881Speterdnl     KIND, either express or implied.  See the License for the
15251881Speterdnl     specific language governing permissions and limitations
16251881Speterdnl     under the License.
17251881Speter
18251881Speterdnl configure.ac: Autoconfiscation for Subversion
19251881Speterdnl Process this file with autoconf to produce a configure script.
20251881Speter
21251881SpeterAC_PREREQ(2.59)
22251881Speter
23251881Speterdnl Get the version of Subversion, using m4's esyscmd() command to do this
24251881Speterdnl at m4-time, since AC_INIT() requires it then.
25251881SpeterAC_INIT([subversion],
26251881Speter     [esyscmd(python build/getversion.py SVN subversion/include/svn_version.h)],
27251881Speter     [http://subversion.apache.org/])
28251881Speter
29251881SpeterAC_CONFIG_SRCDIR(subversion/include/svn_types.h)
30251881SpeterAC_CONFIG_AUX_DIR([build])
31251881Speter
32251881SpeterAC_MSG_NOTICE([Configuring Subversion ]AC_PACKAGE_VERSION)
33251881Speter
34251881SpeterAC_SUBST([abs_srcdir], ["`cd $srcdir && pwd`"])
35251881SpeterAC_SUBST([abs_builddir], ["`pwd`"])
36251881Speterif test "$abs_srcdir" = "$abs_builddir"; then
37251881Speter  canonicalized_srcdir=""
38251881Speterelse
39251881Speter  canonicalized_srcdir="$srcdir/"
40251881Speterfi
41251881SpeterAC_SUBST([canonicalized_srcdir])
42251881Speter
43251881SpeterSWIG_LDFLAGS="$LDFLAGS"
44251881SpeterAC_SUBST([SWIG_LDFLAGS])
45251881Speter
46251881Speter# Generate config.nice early (before the arguments are munged)
47251881SpeterSVN_CONFIG_NICE(config.nice)
48251881Speter
49251881Speter# ==== Check for programs ====================================================
50251881Speter
51251881Speter# Look for a C compiler (before anything can set CFLAGS)
52251881SpeterCMAINTAINERFLAGS="$CUSERFLAGS"
53251881SpeterCUSERFLAGS="$CFLAGS"
54251881SpeterAC_PROG_CC
55251881SpeterSVN_CC_MODE_SETUP
56251881Speter
57251881Speter# Look for a C++ compiler (before anything can set CXXFLAGS)
58251881SpeterCXXMAINTAINERFLAGS="$CXXUSERFLAGS"
59251881SpeterCXXUSERFLAGS="$CXXFLAGS"
60251881SpeterAC_PROG_CXX
61251881SpeterSVN_CXX_MODE_SETUP
62251881Speter
63251881Speter# Look for a C pre-processor
64251881SpeterAC_PROG_CPP
65251881Speter
66251881Speter# Look for a good sed
67251881Speter# AC_PROG_SED was introduced in Autoconf 2.59b
68251881Speterm4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"])
69251881Speter
70251881Speter# Grab target_cpu, so we can use it in the Solaris pkginfo file
71251881SpeterAC_CANONICAL_TARGET
72251881Speter
73251881Speter# Look for an extended grep
74251881SpeterAC_PROG_EGREP
75251881Speter
76251881SpeterAC_PROG_LN_S
77251881Speter
78251881SpeterAC_PROG_INSTALL
79251881Speter# If $INSTALL is relative path to our fallback install-sh, then convert
80251881Speter# to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool
81251881Speter# may try to use it from a changed working directory.
82251881Speterif test "$INSTALL" = "build/install-sh -c"; then
83251881Speter  INSTALL="$abs_srcdir/$INSTALL"
84251881Speterfi
85251881Speter
86251881Speterif test -z "$MKDIR"; then
87251881Speter  MKDIR="$INSTALL -d"
88251881Speterfi
89251881SpeterAC_SUBST([MKDIR])
90251881Speter
91251881Speter# ==== Libraries, for which we may have source to build ======================
92251881Speter
93251881Speterdnl verify apr version and set apr flags
94251881Speterdnl These regular expressions should not contain "\(" and "\)".
95251881Speterdnl The specific reason we require APR 0.9.7 is:
96251881Speterdnl   It contains fixes to its file writing routines
97251881Speterdnl   now generating errors instead of silently ignoring
98251881Speterdnl   them.  Only .7 and later can guarantee repository
99251881Speterdnl   integrity with FSFS.
100251881Speter
101251881SpeterAPR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\. 2\."]
102251881Speter
103251881SpeterSVN_LIB_APR($APR_VER_REGEXES)
104251881Speter
105251881Speterif test `expr $apr_version : 2` -ne 0; then
106251881Speter  dnl Bump the library so-version to 2 if using APR-2
107251881Speter  dnl (Debian uses so-version 1 for APR-1-with-largefile)
108251881Speter  svn_lib_ver=2
109251881Speter  dnl APR-2 provides APRUTIL
110251881Speter  apu_config=$apr_config
111251881Speter  AC_SUBST(SVN_APRUTIL_INCLUDES)
112251881Speter  AC_SUBST(SVN_APRUTIL_CONFIG, ["$apu_config"])
113251881Speter  AC_SUBST(SVN_APRUTIL_LIBS)
114251881Speterelse
115251881Speter  svn_lib_ver=0
116251881Speter  APU_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\."]
117251881Speter  SVN_LIB_APRUTIL($APU_VER_REGEXES)
118251881Speterfi
119251881SpeterSVN_LT_SOVERSION="-version-info $svn_lib_ver"
120251881SpeterAC_SUBST(SVN_LT_SOVERSION)
121251881SpeterAC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
122251881Speter                   [Subversion library major verson])
123251881Speter
124251881Speterdnl Search for pkg-config
125251881SpeterAC_PATH_PROG(PKG_CONFIG, pkg-config)
126251881Speter
127251881Speterdnl Search for serf
128251881SpeterSVN_LIB_SERF(1,2,1)
129251881Speter
130251881Speterif test "$svn_lib_serf" = "yes"; then
131251881Speter  AC_DEFINE([SVN_HAVE_SERF], 1,
132251881Speter            [Defined if support for Serf is enabled])
133251881Speterfi
134251881Speter
135251881Speterdnl Search for apr_memcache (only affects fs_fs)
136251881SpeterSVN_LIB_APR_MEMCACHE
137251881Speter
138251881Speterif test "$svn_lib_apr_memcache" = "yes"; then
139251881Speter  AC_DEFINE(SVN_HAVE_MEMCACHE, 1,
140251881Speter            [Defined if apr_memcache (standalone or in apr-util) is present])
141251881Speterfi
142251881Speter
143251881Speter
144251881Speterdnl Find Apache with a recent-enough magic module number
145251881SpeterSVN_FIND_APACHE(20020903)
146251881Speter
147251881Speterdnl Search for SQLite.  If you change SQLITE_URL from a .zip to
148251881Speterdnl something else also update build/ac-macros/sqlite.m4 to reflect
149251881Speterdnl the correct command to unpack the downloaded file.
150251881SpeterSQLITE_MINIMUM_VER="3.7.12"
151251881SpeterSQLITE_RECOMMENDED_VER="3.7.15.1"
152251881SpeterSQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
153251881Speter
154251881SpeterSVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
155251881Speter               ${SQLITE_URL})
156251881Speter
157251881SpeterAC_ARG_ENABLE(sqlite-compatibility-version,
158251881Speter  AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z],
159251881Speter                 [Allow binary to run against SQLite as old as ARG]),
160251881Speter  [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no])
161251881Speter
162251881Speterif test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then
163251881Speter  SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver],
164251881Speter                          [sqlite_compat_ver_num])
165251881Speter  CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS"
166251881Speter  CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS"
167251881Speterfi
168251881Speter
169251881SpeterSVN_CHECK_FOR_ATOMIC_BUILTINS
170251881Speter
171251881Speterif test "$svn_cv_atomic_builtins" = "yes"; then
172251881Speter    AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
173251881Speterfi
174251881Speter
175251881Speterdnl Set up a number of directories ---------------------
176251881Speter
177251881Speterdnl Create SVN_BINDIR for proper substitution
178251881Speterif test "${bindir}" = '${exec_prefix}/bin'; then
179251881Speter        if test "${exec_prefix}" = "NONE"; then
180251881Speter                if test "${prefix}" = "NONE"; then
181251881Speter                        SVN_BINDIR="${ac_default_prefix}/bin"
182251881Speter                else
183251881Speter                        SVN_BINDIR="${prefix}/bin"
184251881Speter                fi
185251881Speter        else
186251881Speter                SVN_BINDIR="${exec_prefix}/bin"
187251881Speter        fi
188251881Speterelse
189251881Speter        SVN_BINDIR="${bindir}"
190251881Speterfi
191251881Speter
192251881Speterdnl fully evaluate this value. when we substitute it into our tool scripts,
193251881Speterdnl they will not have things such as ${bindir} available
194251881SpeterSVN_BINDIR="`eval echo ${SVN_BINDIR}`"
195251881SpeterAC_SUBST(SVN_BINDIR)
196251881Speter
197251881Speterdnl provide ${bindir} in svn_private_config.h for use in compiled code
198251881SpeterAC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
199251881Speter        [Defined to be the path to the installed binaries])
200251881Speter
201251881Speterdnl This purposely does *not* allow for multiple parallel installs.
202251881Speterdnl However, it is compatible with most gettext usages.
203251881Speterlocaledir='${datadir}/locale'
204251881SpeterAC_SUBST(localedir)
205251881Speter
206251881Speterdnl For SVN_LOCALE_DIR, we have to expand it to something.  See SVN_BINDIR.
207251881Speterif test "${datadir}" = '${prefix}/share' && test "${prefix}" = "NONE"; then
208251881Speter  exp_localedir='${ac_default_prefix}/share/locale'
209251881Speterelse
210251881Speter  exp_localedir=$localedir
211251881Speterfi
212251881SpeterSVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
213251881SpeterAC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
214251881Speter                   [Defined to be the path to the installed locale dirs])
215251881Speter
216251881Speterdnl Check for libtool -- we'll definitely need it for all our shared libs!
217251881SpeterAC_MSG_NOTICE([configuring libtool now])
218251881Speterifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
219251881SpeterAC_ARG_ENABLE(experimental-libtool,
220251881Speter  AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
221251881Speter  [experimental_libtool=$enableval],[experimental_libtool=no])
222251881Speter
223251881Speterif test "$experimental_libtool" = "yes"; then
224251881Speter  echo "using APR's libtool"
225251881Speter  sh_libtool="`$apr_config --apr-libtool`"
226251881Speter  LIBTOOL="$sh_libtool"
227251881Speter  SVN_LIBTOOL="$sh_libtool"
228251881Speterelse
229251881Speter  sh_libtool="$abs_builddir/libtool"
230251881Speter  SVN_LIBTOOL="\$(SHELL) $sh_libtool"
231251881Speterfi
232251881SpeterAC_SUBST(SVN_LIBTOOL)
233251881Speter
234251881Speterdnl Determine the libtool version
235251881Speterchangequote(, )dnl
236251881Speterlt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
237251881Speterlt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
238251881Speterlt_major_version=`echo $lt_version | cut -d'.' -f 1`
239251881Speterchangequote([, ])dnl
240251881Speter
241251881Speterdnl set the default parameters
242251881Spetersvn_enable_static=yes
243251881Spetersvn_enable_shared=yes
244251881Speter
245251881Speterdnl check for --enable-static option
246251881SpeterAC_ARG_ENABLE(static,
247251881Speter  AS_HELP_STRING([--enable-static],
248251881Speter                 [Build static libraries]),
249251881Speter  [svn_enable_static="$enableval"], [svn_enable_static="yes"])
250251881Speter
251251881Speterdnl check for --enable-shared option
252251881SpeterAC_ARG_ENABLE(shared,
253251881Speter  AS_HELP_STRING([--enable-shared],
254251881Speter                 [Build shared libraries]),
255251881Speter  [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
256251881Speter
257251881Speterif test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
258251881Speter  AC_MSG_NOTICE([building both shared and static libraries])
259251881Speterelif test "$svn_enable_static" = "yes" ; then
260251881Speter  AC_MSG_NOTICE([building static libraries only])
261251881Speter  LT_CFLAGS="-static $LT_CFLAGS"
262251881Speter  LT_LDFLAGS="-static $LT_LDFLAGS"
263251881Speterelif test "$svn_enable_shared" = "yes" ; then
264251881Speter  AC_MSG_NOTICE([building shared libraries only])
265251881Speter  if test "$lt_major_version" = "1" ; then
266251881Speter    LT_CFLAGS="-prefer-pic $LT_CFLAGS"
267251881Speter  elif test "$lt_major_version" = "2" ; then
268251881Speter    LT_CFLAGS="-shared $LT_CFLAGS"
269251881Speter  fi
270251881Speter  LT_LDFLAGS="-shared $LT_LDFLAGS"
271251881Speterelse
272251881Speter  AC_MSG_ERROR([cannot disable both shared and static libraries])
273251881Speterfi
274251881Speter
275251881Speterdnl Check for --enable-all-static option
276251881SpeterAC_ARG_ENABLE(all-static,
277251881Speter  AS_HELP_STRING([--enable-all-static],
278251881Speter                 [Build completely static (standalone) binaries.]),
279251881Speter  [
280251881Speter    if test "$enableval" = "yes" ; then
281251881Speter      LT_LDFLAGS="-all-static $LT_LDFLAGS"
282251881Speter    elif test "$enableval" != "no" ; then
283251881Speter      AC_MSG_ERROR([--enable-all-static doesn't accept argument])
284251881Speter    fi
285251881Speter])
286251881Speter
287251881SpeterAC_SUBST(LT_CFLAGS)
288251881SpeterAC_SUBST(LT_LDFLAGS)
289251881Speter
290251881SpeterAC_ARG_ENABLE(local-library-preloading,
291251881Speter  AS_HELP_STRING([--enable-local-library-preloading], 
292251881Speter                 [Enable preloading of locally built libraries in locally
293251881Speter                  built executables.  This may be necessary for testing
294251881Speter                  prior to installation on some platforms.  It does not
295251881Speter                  work on some platforms (Darwin, OpenBSD, ...).]),
296251881Speter  [
297251881Speter  if test "$enableval" != "no"; then
298251881Speter    if test "$svn_enable_shared" = "yes"; then
299251881Speter      TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
300251881Speter    else
301251881Speter      AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
302251881Speter    fi
303251881Speter  else
304251881Speter    TRANSFORM_LIBTOOL_SCRIPTS=""
305251881Speter  fi
306251881Speter  ], [
307251881Speter  TRANSFORM_LIBTOOL_SCRIPTS=""
308251881Speter])
309251881SpeterAC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
310251881Speter
311251881Speterdnl Check if -no-undefined is needed for the platform.
312251881Speterdnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
313251881Speterdnl So we only turn it on for platforms where we know we really need it.
314251881SpeterAC_MSG_CHECKING([whether libtool needs -no-undefined])
315251881Spetercase $host in
316251881Speter  *-*-cygwin*)
317251881Speter    AC_MSG_RESULT([yes])
318251881Speter    LT_NO_UNDEFINED="-no-undefined"
319251881Speter    ;;
320251881Speter  *)
321251881Speter    AC_MSG_RESULT([no])
322251881Speter    LT_NO_UNDEFINED=""
323251881Speter    ;;
324251881Speteresac
325251881SpeterAC_SUBST(LT_NO_UNDEFINED)
326251881Speter
327251881SpeterAC_MSG_CHECKING([whether to avoid circular linkage at all costs])
328251881Spetercase $host in
329251881Speter  *-*-cygwin*)
330251881Speter    AC_MSG_RESULT([yes])
331251881Speter    AC_DEFINE([SVN_AVOID_CIRCULAR_LINKAGE_AT_ALL_COSTS_HACK], 1,
332251881Speter              [Define if circular linkage is not possible on this platform.])
333251881Speter    ;;
334251881Speter  *)
335251881Speter    AC_MSG_RESULT([no])
336251881Speter    ;;
337251881Speteresac
338251881Speter
339251881Speterdnl Check for trang.
340251881Spetertrang=yes
341251881SpeterAC_ARG_WITH(trang,
342251881SpeterAS_HELP_STRING([--with-trang=PATH],
343251881Speter               [Specify the command to run the trang schema converter]),
344251881Speter[
345251881Speter    trang="$withval"
346251881Speter])
347251881Speterif test "$trang" = "yes"; then
348251881Speter    AC_PATH_PROG(TRANG, trang, none)
349251881Speterelse
350251881Speter    TRANG="$trang"
351251881Speter    AC_SUBST(TRANG)
352251881Speterfi
353251881Speter
354251881Speterdnl Check for doxygen
355251881Speterdoxygen=yes
356251881SpeterAC_ARG_WITH(doxygen,
357251881SpeterAC_HELP_STRING([--with-doxygen=PATH],
358251881Speter               [Specify the command to run doxygen]),
359251881Speter[
360251881Speter    doxygen="$withval"
361251881Speter])
362251881Speterif test "$doxygen" = "yes"; then
363251881Speter    AC_PATH_PROG(DOXYGEN, doxygen, none)
364251881Speterelse
365251881Speter    DOXYGEN="$doxygen"
366251881Speter    AC_SUBST(DOXYGEN)
367251881Speterfi
368251881Speter
369251881Speter
370251881Speterdnl Check for libraries --------------------
371251881Speter
372251881Speterdnl Expat -------------------
373251881Speter
374251881SpeterAC_ARG_WITH(expat,
375251881Speter  AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS], 
376251881Speter                 [Specify location of Expat]),
377251881Speter                 [svn_lib_expat="$withval"],
378251881Speter                 [svn_lib_expat="::expat"])
379251881Speter
380251881Speter# APR-util accepts "builtin" as an argument to this option so if the user
381251881Speter# passed "builtin" pretend the user didn't specify the --with-expat option
382251881Speter# at all. Expat will (hopefully) be found in apr-util.
383251881Spetertest "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
384251881Speter
385251881SpeterAC_MSG_CHECKING([for Expat])
386251881Speterif test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
387251881Speter  SVN_XML_INCLUDES=""
388251881Speter  for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
389251881Speter    SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
390251881Speter  done
391251881Speter  SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
392251881Speter  for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
393251881Speter    LDFLAGS="$LDFLAGS -L$l"
394251881Speter  done
395251881Speter  for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
396251881Speter    SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
397251881Speter  done
398251881Speter  SVN_XML_LIBS="${SVN_XML_LIBS## }"
399251881Speter  old_CPPFLAGS="$CPPFLAGS"
400251881Speter  old_LIBS="$LIBS"
401251881Speter  CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
402251881Speter  LIBS="$LIBS $SVN_XML_LIBS"
403251881Speter  AC_LINK_IFELSE([AC_LANG_SOURCE([[
404251881Speter#include <expat.h>
405251881Speterint main()
406251881Speter{XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
407251881Speter  LIBS="$old_LIBS"
408251881Speter  if test "$svn_lib_expat" = "yes"; then
409251881Speter    AC_MSG_RESULT([yes])
410251881Speter  else
411251881Speter    SVN_XML_INCLUDES=""
412251881Speter    SVN_XML_LIBS=""
413251881Speter    CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
414251881Speter    if test "$enable_all_static" != "yes"; then
415251881Speter      SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
416251881Speter    fi
417251881Speter    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
418251881Speter#include <expat.h>
419251881Speterint main()
420251881Speter{XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
421251881Speter    if test "$svn_lib_expat" = "yes"; then
422251881Speter      AC_MSG_RESULT([yes])
423251881Speter      AC_MSG_WARN([Expat found amongst libraries used by APR-Util, but Subversion libraries might be needlessly linked against additional unused libraries. It can be avoided by specifying exact location of Expat in argument of --with-expat option.])
424251881Speter    else
425251881Speter      AC_MSG_RESULT([no])
426251881Speter      AC_MSG_ERROR([Expat not found])
427251881Speter    fi
428251881Speter  fi
429251881Speter  CPPFLAGS="$old_CPPFLAGS"
430251881Speterelse
431251881Speter  AC_MSG_RESULT([no])
432251881Speter  if test "$svn_lib_expat" = "yes"; then
433251881Speter    AC_MSG_ERROR([--with-expat option requires argument])
434251881Speter  elif test "$svn_lib_expat" = "no"; then
435251881Speter    AC_MSG_ERROR([Expat is required])
436251881Speter  else
437251881Speter    AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
438251881Speter  fi
439251881Speterfi
440251881SpeterAC_SUBST(SVN_XML_INCLUDES)
441251881SpeterAC_SUBST(SVN_XML_LIBS)
442251881Speter
443251881Speterdnl Berkeley DB -------------------
444251881Speter
445251881Speter# Berkeley DB on SCO OpenServer needs -lsocket
446251881SpeterAC_CHECK_LIB(socket, socket)
447251881Speter
448251881Speter# Build the BDB filesystem library only if we have an appropriate
449251881Speter# version of Berkeley DB.
450251881Spetercase "$host" in
451251881Speterpowerpc-apple-darwin*)
452251881Speter    # Berkeley DB 4.0 does not work on OS X.
453251881Speter    SVN_FS_WANT_DB_MAJOR=4
454251881Speter    SVN_FS_WANT_DB_MINOR=1
455251881Speter    SVN_FS_WANT_DB_PATCH=25
456251881Speter    ;;
457251881Speter*)
458251881Speter    SVN_FS_WANT_DB_MAJOR=4
459251881Speter    SVN_FS_WANT_DB_MINOR=0
460251881Speter    SVN_FS_WANT_DB_PATCH=14
461251881Speter    ;;
462251881Speteresac
463253734Speterdb_alt_version="5.x"
464251881Speter# Look for libdb4.so first:
465251881SpeterSVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
466251881Speter                    $SVN_FS_WANT_DB_PATCH, [db4 db])
467251881Speter
468251881SpeterAC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
469251881Speter                   [The desired major version for the Berkeley DB])
470251881SpeterAC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
471251881Speter                   [The desired minor version for the Berkeley DB])
472251881SpeterAC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
473251881Speter                   [The desired patch version for the Berkeley DB])
474251881Speter
475251881SpeterAC_SUBST(SVN_DB_INCLUDES)
476251881SpeterAC_SUBST(SVN_DB_LIBS)
477251881Speter
478251881SpeterSVN_LIB_SASL
479251881Speter
480251881Speterif test "$svn_lib_sasl" = "yes"; then
481251881Speter  AC_DEFINE(SVN_HAVE_SASL, 1,
482251881Speter            [Defined if Cyrus SASL v2 is present on the system])
483251881Speterfi
484251881Speter
485251881Speterdnl Mac OS specific features -------------------
486251881Speter
487251881SpeterSVN_LIB_MACHO_ITERATE
488251881SpeterSVN_LIB_MACOS_PLIST
489251881SpeterSVN_LIB_MACOS_KEYCHAIN
490251881Speter
491251881Speterdnl APR_HAS_DSO -------------------
492251881Speter
493251881SpeterAC_MSG_CHECKING([whether APR has support for DSOs])
494251881Speterold_CPPFLAGS="$CPPFLAGS"
495251881SpeterCPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
496251881SpeterAC_PREPROC_IFELSE([AC_LANG_SOURCE([[
497251881Speter#include <apr.h>
498251881Speter#if !APR_HAS_DSO
499251881Speter#error
500251881Speter#endif]])],
501251881Speter  APR_HAS_DSO="yes"
502251881Speter  AC_MSG_RESULT([yes]),
503251881Speter  APR_HAS_DSO="no"
504251881Speter  AC_MSG_RESULT([no]))
505251881SpeterCPPFLAGS="$old_CPPFLAGS"
506251881Speter
507251881Speter
508251881Speterdnl D-Bus (required for support for KWallet) -------------------
509251881Speter
510251881Speterif test -n "$PKG_CONFIG"; then
511251881Speter  AC_MSG_CHECKING([for D-Bus .pc file])
512251881Speter  if $PKG_CONFIG --exists dbus-1; then
513251881Speter    AC_MSG_RESULT([yes])
514251881Speter    old_CPPFLAGS="$CPPFLAGS"
515251881Speter    old_LIBS="$LIBS"
516251881Speter    DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
517251881Speter    AC_MSG_CHECKING([D-Bus version])
518251881Speter    DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
519251881Speter    AC_MSG_RESULT([$DBUS_VERSION])
520251881Speter    # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
521251881Speter    if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
522251881Speter      DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
523251881Speter    fi
524251881Speter    DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
525251881Speter    CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
526251881Speter    LIBS="$LIBS $DBUS_LIBS"
527251881Speter    AC_MSG_CHECKING([for D-Bus])
528251881Speter    AC_LINK_IFELSE([AC_LANG_SOURCE([[
529251881Speter#include <dbus/dbus.h>
530251881Speterint main()
531251881Speter{dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
532251881Speter    if test "$HAVE_DBUS" = "yes"; then
533251881Speter      AC_MSG_RESULT([yes])
534251881Speter    else
535251881Speter      AC_MSG_RESULT([no])
536251881Speter    fi
537251881Speter    CPPFLAGS="$old_CPPFLAGS"
538251881Speter    LIBS="$old_LIBS"
539251881Speter  else
540251881Speter    AC_MSG_RESULT([no])
541251881Speter  fi
542251881Speterfi
543251881Speter
544251881Speterdnl GPG Agent -------------------
545251881Speter
546251881SpeterAC_ARG_WITH(gpg_agent,
547251881SpeterAS_HELP_STRING([--without-gpg-agent], 
548251881Speter               [Disable support for GPG-Agent]),
549251881Speter               [], [with_gpg_agent=yes])
550251881SpeterAC_MSG_CHECKING([whether to support GPG-Agent])
551251881Speterif test "$with_gpg_agent" = "yes"; then
552251881Speter  AC_MSG_RESULT([yes])
553251881Speter  AC_DEFINE([SVN_HAVE_GPG_AGENT], [1], 
554251881Speter            [Is GPG Agent support enabled?])
555251881Speterelse
556251881Speter  AC_MSG_RESULT([no])
557251881Speterfi
558251881Speter
559251881SpeterAC_SUBST(SVN_HAVE_GPG_AGENT)
560251881Speter
561251881Speterdnl GNOME Keyring -------------------
562251881Speter
563251881SpeterAC_ARG_WITH(gnome_keyring,
564251881Speter  AS_HELP_STRING([--with-gnome-keyring], 
565251881Speter                 [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
566251881Speter                 [with_gnome_keyring="$withval"],
567251881Speter                 [with_gnome_keyring=auto])
568251881Speter
569251881Speterfound_gnome_keyring=no
570251881SpeterAC_MSG_CHECKING([whether to look for GNOME Keyring])
571251881Speterif test "$with_gnome_keyring" != "no"; then
572251881Speter  AC_MSG_RESULT([yes])
573251881Speter  if test "$svn_enable_shared" = "yes"; then
574251881Speter    if test "$APR_HAS_DSO" = "yes"; then
575251881Speter      if test -n "$PKG_CONFIG"; then
576251881Speter        AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
577251881Speter        if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
578251881Speter          AC_MSG_RESULT([yes])
579251881Speter          old_CPPFLAGS="$CPPFLAGS"
580251881Speter          SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
581251881Speter          CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
582251881Speter          AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
583251881Speter          AC_MSG_CHECKING([for GNOME Keyring])
584251881Speter          if test "$found_gnome_keyring" = "yes"; then
585251881Speter            AC_MSG_RESULT([yes])
586251881Speter            AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1], 
587251881Speter                      [Is GNOME Keyring support enabled?])
588251881Speter            CPPFLAGS="$old_CPPFLAGS"
589251881Speter            SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
590251881Speter          else
591251881Speter            AC_MSG_RESULT([no])
592251881Speter            if test "$with_gnome_keyring" = "yes"; then
593251881Speter              AC_MSG_ERROR([cannot find GNOME Keyring])
594251881Speter            fi
595251881Speter          fi
596251881Speter        else
597251881Speter          AC_MSG_RESULT([no])
598251881Speter          if test "$with_gnome_keyring" = "yes"; then
599251881Speter            AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
600251881Speter          else
601251881Speter            with_gnome_keyring=no
602251881Speter          fi
603251881Speter        fi
604251881Speter      else
605251881Speter        if test "$with_gnome_keyring" = "yes"; then
606251881Speter          AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
607251881Speter        else
608251881Speter          with_gnome_keyring=no
609251881Speter        fi
610251881Speter      fi
611251881Speter    else
612251881Speter      if test "$with_gnome_keyring" = "yes"; then
613251881Speter        AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
614251881Speter      else
615251881Speter        with_gnome_keyring=no
616251881Speter      fi
617251881Speter    fi
618251881Speter  else
619251881Speter    if test "$with_gnome_keyring" = "yes"; then
620251881Speter      AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
621251881Speter    else
622251881Speter      with_gnome_keyring=no
623251881Speter    fi
624251881Speter  fi
625251881Speterelse
626251881Speter  AC_MSG_RESULT([no])
627251881Speterfi
628251881SpeterAC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
629251881SpeterAC_SUBST(SVN_GNOME_KEYRING_LIBS)
630251881Speter
631251881Speter
632251881Speterdnl Ev2 experimental features ----------------------
633251881Speterdnl Note: The Ev2 implementations will be built unconditionally, but by
634251881Speterdnl providing this flag, users can choose to use the currently-shimmed Ev2
635251881Speterdnl editor implementations for various operations.  This will probably
636251881Speterdnl negatively impact performance, but is useful for testing.
637251881SpeterAC_ARG_ENABLE(ev2-impl,
638251881Speter  AS_HELP_STRING([--enable-ev2-impl],
639251881Speter                 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
640251881Speter  [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
641251881Speterif test "$enable_ev2_impl" = "yes"; then
642251881Speter  AC_DEFINE(ENABLE_EV2_IMPL, 1,
643251881Speter            [Define to 1 if Ev2 implementations should be used.])
644251881Speterfi
645251881Speter
646251881Speter
647251881Speterdnl I18n -------------------
648251881Speter
649251881SpeterAC_ARG_ENABLE(nls,
650251881Speter  AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
651251881Speter  [enable_nls=$enableval],[enable_nls=yes])
652251881Speter
653251881SpeterUSE_NLS="no"
654251881Speterif test "$enable_nls" = "yes"; then
655251881Speter  dnl First, check to see if there is a working msgfmt.
656251881Speter  AC_PATH_PROG(MSGFMT, msgfmt, none)
657251881Speter  AC_PATH_PROG(MSGMERGE, msgmerge, none)
658251881Speter  AC_PATH_PROG(XGETTEXT, xgettext, none)
659251881Speter  if test "$MSGFMT" != "none"; then
660251881Speter    AC_SEARCH_LIBS(bindtextdomain, [intl], [],
661251881Speter                   [
662251881Speter                    enable_nls="no"
663251881Speter                   ])
664251881Speter    if test "$enable_nls" = "no"; then
665251881Speter      # Destroy the cached result so we can test again
666251881Speter      unset ac_cv_search_bindtextdomain
667251881Speter      # On some systems, libintl needs libiconv to link properly,
668251881Speter      # so try again with -liconv.
669251881Speter      AC_SEARCH_LIBS(bindtextdomain, [intl],
670251881Speter                     [
671251881Speter                      enable_nls="yes"
672251881Speter                      # This is here so that -liconv ends up in LIBS
673251881Speter                      # if it worked with -liconv.
674251881Speter                      AC_CHECK_LIB(iconv, libiconv_open)
675251881Speter                     ], 
676251881Speter                     [
677251881Speter                      AC_MSG_WARN([bindtextdomain() not found.  Disabling NLS.])
678251881Speter                      enable_nls="no"
679251881Speter                     ], -liconv)
680251881Speter    fi
681251881Speter    if test "$enable_nls" = "yes"; then
682251881Speter      AC_DEFINE(ENABLE_NLS, 1,
683251881Speter                [Define to 1 if translation of program messages to the user's
684251881Speter                 native language is requested.])
685251881Speter      USE_NLS="yes"
686251881Speter    fi
687251881Speter  fi
688251881Speterfi
689251881Speter
690251881SpeterAH_BOTTOM([
691251881Speter/* Indicate to translators that string X should be translated.  Do not look
692251881Speter   up the translation at run time; just expand to X.  This macro is suitable
693251881Speter   for use where a constant string is required at compile time. */
694251881Speter#define N_(x) x
695251881Speter/* Indicate to translators that we have decided the string X should not be
696251881Speter   translated.  Expand to X. */
697251881Speter#define U_(x) x
698251881Speter#ifdef ENABLE_NLS
699251881Speter#include <locale.h>
700251881Speter#include <libintl.h>
701251881Speter/* Indicate to translators that string X should be translated.  At run time,
702251881Speter   look up and return the translation of X. */
703251881Speter#define _(x) dgettext(PACKAGE_NAME, x)
704251881Speter/* Indicate to translators that strings X1 and X2 are singular and plural
705251881Speter   forms of the same message, and should be translated.  At run time, return
706251881Speter   an appropriate translation depending on the number N. */
707251881Speter#define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
708251881Speter#else
709251881Speter#define _(x) (x)
710251881Speter#define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
711251881Speter#define gettext(x) (x)
712251881Speter#define dgettext(domain, x) (x)
713251881Speter#endif
714251881Speter])
715251881Speter
716251881Speterdnl Used to simulate makefile conditionals.
717251881SpeterGETTEXT_CODESET=\#
718251881SpeterNO_GETTEXT_CODESET=\#
719251881Speterif test $USE_NLS = "yes"; then
720251881Speter   AC_CHECK_FUNCS(bind_textdomain_codeset,
721251881Speter                  [ GETTEXT_CODESET="" ],
722251881Speter                  [ NO_GETTEXT_CODESET="" ])
723251881Speterfi
724251881SpeterAC_SUBST(GETTEXT_CODESET)
725251881SpeterAC_SUBST(NO_GETTEXT_CODESET)
726251881Speter
727251881Speter# Check if we are using GNU gettext.
728251881SpeterGNU_GETTEXT=no
729251881SpeterMSGFMTFLAGS=''
730251881Speterif test $USE_NLS = "yes"; then
731251881Speter   AC_MSG_CHECKING(if we are using GNU gettext)
732251881Speter   if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
733251881Speter      GNU_GETTEXT=yes
734251881Speter      MSGFMTFLAGS='-c'
735251881Speter   fi
736251881Speter   AC_MSG_RESULT($GNU_GETTEXT)
737251881Speterfi
738251881SpeterAC_SUBST(MSGFMTFLAGS)
739251881Speter
740251881Speterdnl libmagic -------------------
741251881Speter
742251881Speterlibmagic_found=no
743251881Speter
744251881SpeterAC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
745251881Speter                                [libmagic filetype detection library]),
746251881Speter[
747251881Speter  if test "$withval" = "yes" ; then
748251881Speter    AC_CHECK_HEADER(magic.h, [
749251881Speter      AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
750251881Speter    ])
751251881Speter    libmagic_prefix="the default locations"
752251881Speter  elif test "$withval" != "no"; then
753251881Speter    libmagic_prefix=$withval
754251881Speter    save_cppflags="$CPPFLAGS"
755251881Speter    CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
756251881Speter    AC_CHECK_HEADERS(magic.h,[
757251881Speter      save_ldflags="$LDFLAGS"
758251881Speter      LDFLAGS="-L$libmagic_prefix/lib"
759251881Speter      AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
760251881Speter      LDFLAGS="$save_ldflags"
761251881Speter    ])
762251881Speter    CPPFLAGS="$save_cppflags"
763251881Speter  fi
764251881Speter  if test "$withval" != "no" && test "$libmagic_found" = "no"; then
765251881Speter    AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
766251881Speter  fi
767251881Speter],
768251881Speter[
769251881Speter  AC_CHECK_HEADER(magic.h, [
770251881Speter    AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
771251881Speter  ])
772251881Speter])
773251881Speter
774251881Speterif test "$libmagic_found" != "no"; then
775251881Speter  AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
776251881Speter  SVN_MAGIC_LIBS="-lmagic"
777251881Speterfi
778251881Speter
779251881Speterif test "$libmagic_found" = "yes"; then
780251881Speter  SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
781251881Speter  LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
782251881Speterfi
783251881Speter
784251881SpeterAC_SUBST(SVN_MAGIC_INCLUDES)
785251881SpeterAC_SUBST(SVN_MAGIC_LIBS)
786251881Speter
787251881Speterdnl KWallet -------------------
788251881SpeterSVN_LIB_KWALLET
789251881Speter
790251881Speterif test "$svn_lib_kwallet" = "yes"; then
791251881Speter  AC_DEFINE([SVN_HAVE_KWALLET], 1,
792251881Speter            [Defined if KWallet support is enabled])
793251881Speterfi
794251881Speter
795251881Speterdnl plaintext passwords -------------------
796251881SpeterAC_ARG_ENABLE(plaintext-password-storage,
797251881SpeterAS_HELP_STRING([--disable-plaintext-password-storage],
798251881Speter               [Disable on-disk caching of plaintext passwords and passphrases.
799251881Speter                (Leaving this functionality enabled will not force Subversion
800251881Speter                to store passwords in plaintext, but does permit users to
801251881Speter                explicitly allow that behavior via runtime configuration.)]),
802251881Speter[
803251881Speter   if test "$enableval" = "no"; then
804251881Speter      AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
805251881Speter      AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
806251881Speter                [Defined if plaintext password/passphrase storage is disabled])
807251881Speter   fi
808251881Speter])
809251881Speter
810251881Speterdnl Build and install rules -------------------
811251881Speter
812251881SpeterINSTALL_STATIC_RULES="install-bin install-docs"
813251881SpeterINSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
814251881SpeterINSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
815251881SpeterBUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
816251881Speter
817251881Speterif test "$svn_lib_berkeley_db" = "yes"; then
818251881Speter  BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
819251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
820251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
821251881Speter  BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
822251881Speter  BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
823251881Speterfi
824251881Speter
825251881Speterif test "$svn_lib_serf" = "yes"; then
826251881Speter  BUILD_RULES="$BUILD_RULES serf-lib"
827251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
828251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
829251881Speterfi
830251881Speter
831251881Speterif test "$svn_lib_kwallet" = "yes"; then
832251881Speter  BUILD_RULES="$BUILD_RULES kwallet-lib"
833251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
834251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
835251881Speterfi
836251881Speter
837251881Speterif test "$found_gnome_keyring" = "yes"; then
838251881Speter  BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
839251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
840251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
841251881Speterfi
842251881Speter
843251881Speterif test "$USE_NLS" = "yes"; then
844251881Speter  BUILD_RULES="$BUILD_RULES locale"
845251881Speter  INSTALL_RULES="$INSTALL_RULES install-locale"
846251881Speterfi
847251881Speter
848251881SpeterAC_SUBST(BUILD_RULES)
849251881SpeterAC_SUBST(INSTALL_STATIC_RULES)
850251881SpeterAC_SUBST(INSTALL_RULES)
851251881SpeterAC_SUBST(BDB_TEST_DEPS)
852251881SpeterAC_SUBST(BDB_TEST_PROGRAMS)
853251881Speter
854251881Speterdnl Check for header files ----------------
855251881Speter
856251881Speterdnl Standard C headers
857251881SpeterAC_HEADER_STDC
858251881Speter
859251881Speterdnl Check for typedefs, structures, and compiler characteristics ----------
860251881Speter
861251881Speterdnl if compiler doesn't understand `const', then define it empty
862251881SpeterAC_C_CONST
863251881Speter
864251881Speterdnl if non-existent, define size_t to be `unsigned'
865251881SpeterAC_TYPE_SIZE_T
866251881Speter
867251881Speter
868251881Speterdnl Check for library functions ----------
869251881Speter
870251881SpeterAC_FUNC_MEMCMP
871251881Speter
872251881Speterdnl svn_error's default warning handler uses vfprintf()
873251881SpeterAC_FUNC_VPRINTF
874251881Speter
875251881Speterdnl check for functions needed in special file handling
876251881SpeterAC_CHECK_FUNCS(symlink readlink)
877251881Speter
878251881Speterdnl check for uname
879251881SpeterAC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
880251881Speter
881251881Speterdnl check for termios
882251881SpeterAC_CHECK_HEADER(termios.h,[
883251881Speter  AC_CHECK_FUNCS(tcgetattr tcsetattr,[
884251881Speter    AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
885251881Speter  ])
886251881Speter])
887251881Speter
888251881Speterdnl Process some configuration options ----------
889251881Speter
890251881SpeterAC_ARG_WITH(openssl,
891251881SpeterAS_HELP_STRING([--with-openssl],
892251881Speter               [This option does NOT affect the Subversion build process in any
893251881Speter                way. It tells an integrated Serf HTTP client library build
894251881Speter                process where to locate the OpenSSL library when (and only when)
895251881Speter                building Serf as an integrated part of the Subversion build
896251881Speter                process. When linking to a previously installed version of Serf
897251881Speter                instead, you do not need to use this option.]),
898251881Speter[])
899251881Speter
900251881SpeterAC_ARG_ENABLE(debug,
901251881SpeterAS_HELP_STRING([--enable-debug],
902251881Speter               [Turn on debugging]),
903251881Speter[
904251881Speter    if test "$enableval" = "yes" ; then
905251881Speter      enable_debugging="yes"
906251881Speter    else
907251881Speter      enable_debugging="no"
908251881Speter    fi
909251881Speter],
910251881Speter[
911251881Speter    # Neither --enable-debug nor --disable-debug was passed.
912251881Speter    enable_debugging="maybe"
913251881Speter])
914251881Speter
915251881SpeterAC_ARG_ENABLE(optimize,
916251881SpeterAS_HELP_STRING([--enable-optimize],
917251881Speter               [Turn on optimizations]),
918251881Speter[
919251881Speter    if test "$enableval" = "yes" ; then
920251881Speter      enable_optimization="yes"
921251881Speter    else
922251881Speter      enable_optimization="no"
923251881Speter    fi
924251881Speter],
925251881Speter[
926251881Speter    # Neither --enable-optimize nor --disable-optimize was passed.
927251881Speter    enable_optimization="maybe"
928251881Speter])
929251881Speter
930251881Speterdnl Use -Wl,--no-undefined during linking of some libraries
931251881SpeterAC_ARG_ENABLE(disallowing-of-undefined-references,
932251881Speter  [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
933251881Speter                  [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
934251881Speterif test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
935251881Speter  enable_disallowing_of_undefined_references="no"
936251881Speterfi
937251881Speterif test "$enable_disallowing_of_undefined_references" != "no"; then
938251881Speter  AC_MSG_CHECKING([for -Wl,--no-undefined])
939251881Speter  old_LDFLAGS="$LDFLAGS"
940251881Speter  LDFLAGS="$LDFLAGS -Wl,--no-undefined"
941251881Speter  AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
942251881Speter  LDFLAGS="$old_LDFLAGS"
943251881Speter  if test "$svn_wl_no_undefined" = "yes"; then
944251881Speter    AC_MSG_RESULT([yes])
945251881Speter    for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
946251881Speter      eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
947251881Speter    done
948251881Speter  else
949251881Speter    AC_MSG_RESULT([no])
950251881Speter    if test "$enable_disallowing_of_undefined_references" = "yes"; then
951251881Speter      AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
952251881Speter    fi
953251881Speter  fi
954251881Speterfi
955251881SpeterAC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS])
956251881SpeterAC_SUBST([libsvn_auth_kwallet_LDFLAGS])
957251881SpeterAC_SUBST([libsvn_client_LDFLAGS])
958251881SpeterAC_SUBST([libsvn_delta_LDFLAGS])
959251881SpeterAC_SUBST([libsvn_diff_LDFLAGS])
960251881SpeterAC_SUBST([libsvn_fs_LDFLAGS])
961251881SpeterAC_SUBST([libsvn_fs_base_LDFLAGS])
962251881SpeterAC_SUBST([libsvn_fs_fs_LDFLAGS])
963251881SpeterAC_SUBST([libsvn_fs_util_LDFLAGS])
964251881SpeterAC_SUBST([libsvn_ra_LDFLAGS])
965251881SpeterAC_SUBST([libsvn_ra_local_LDFLAGS])
966251881SpeterAC_SUBST([libsvn_ra_serf_LDFLAGS])
967251881SpeterAC_SUBST([libsvn_ra_svn_LDFLAGS])
968251881SpeterAC_SUBST([libsvn_repos_LDFLAGS])
969251881SpeterAC_SUBST([libsvn_subr_LDFLAGS])
970251881SpeterAC_SUBST([libsvn_wc_LDFLAGS])
971251881Speter
972251881Speter
973251881SpeterAC_ARG_ENABLE(maintainer-mode,
974251881SpeterAS_HELP_STRING([--enable-maintainer-mode],
975251881Speter               [Turn on debugging and very strict compile-time warnings]),
976251881Speter[
977251881Speter    if test "$enableval" = "yes" ; then
978251881Speter      if test "$enable_debugging" = "no" ; then
979251881Speter        AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
980251881Speter      fi
981251881Speter      enable_debugging=yes
982251881Speter
983251881Speter      dnl Enable some extra warnings. Put these before the user's flags
984251881Speter      dnl so the user can specify flags that override these.
985251881Speter      if test "$GCC" = "yes"; then
986251881Speter        AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
987251881Speter
988251881Speter        dnl some additional flags that can be handy for an occasional review,
989251881Speter        dnl but throw too many warnings in svn code, of too little importance,
990251881Speter        dnl to keep these enabled. Remove the "dnl" to do a run with these
991251881Speter        dnl switches enabled.
992251881Speter        dnl ./configure CUSERFLAGS="-Wswitch-enum -Wswitch-default"
993251881Speter
994251881Speter        dnl Add each of the following flags only if the C compiler accepts it.
995251881Speter        CFLAGS_KEEP="$CFLAGS"
996251881Speter        CFLAGS=""
997251881Speter
998251881Speter        SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
999251881Speter        SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1000251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1001251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1002251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1003251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1004251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1005251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1006251881Speter
1007251881Speter        CMAINTAINERFLAGS="$CFLAGS $CMAINTAINERFLAGS"
1008251881Speter        CFLAGS="$CFLAGS_KEEP"
1009251881Speter
1010251881Speter        dnl Add flags that all versions of GCC (should) support
1011251881Speter        CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long $CMAINTAINERFLAGS"
1012251881Speter      fi
1013251881Speter      if test "$GXX" = "yes"; then
1014251881Speter        AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1015251881Speter
1016251881Speter        dnl Add each of the following flags only if the C++ compiler accepts it.
1017251881Speter        CXXFLAGS_KEEP="$CXXFLAGS"
1018251881Speter        CXXFLAGS=""
1019251881Speter
1020251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1021251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1022251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1023251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1024251881Speter
1025251881Speter        CXXMAINTAINERFLAGS="$CXXFLAGS $CXXMAINTAINERFLAGS"
1026251881Speter        CXXFLAGS="$CXXFLAGS_KEEP"
1027251881Speter
1028251881Speter        dnl Add flags that all versions of G++ (should) support
1029251881Speter        CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1030251881Speter      fi
1031251881Speter    fi
1032251881Speter])
1033251881Speter
1034251881Speterif test "$enable_debugging" = "yes" ; then
1035251881Speter  dnl At the moment, we don't want optimization, because we're
1036251881Speter  dnl debugging. Unless optiization was explicitly enabled.
1037251881Speter  if test "$enable_optimization" != "yes"; then
1038251881Speter    AC_MSG_NOTICE([Disabling optimizations for debugging])
1039251881Speter    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1040251881Speter    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1041251881Speter  fi
1042251881Speter  dnl Add debugging flags, unless they were set by the user
1043251881Speter  if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1044251881Speter    AC_MSG_NOTICE([Enabling debugging for C])
1045251881Speter    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1046251881Speter    SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1047251881Speter    SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1048251881Speter    SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1049251881Speter      SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1050251881Speter        SVN_CFLAGS_ADD_IFELSE([-g])])])
1051251881Speter  fi
1052251881Speter  if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1053251881Speter    AC_MSG_NOTICE([Enabling debugging for C++])
1054251881Speter    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1055251881Speter    SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1056251881Speter    SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1057251881Speter    SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1058251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1059251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1060251881Speter  fi
1061251881Speter  dnl SVN_DEBUG enables specific features for developer builds
1062251881Speter  dnl AP_DEBUG enables specific (Apache) features for developer builds
1063251881Speter  CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1064251881Speter  CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1065251881Speterelif test "$enable_debugging" = "no" ; then
1066251881Speter  AC_MSG_NOTICE([Disabling debugging])
1067251881Speter  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1068251881Speter  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1069251881Speter  dnl Compile with NDEBUG to get rid of assertions
1070251881Speter  CFLAGS="$CFLAGS -DNDEBUG"
1071251881Speter  CXXFLAGS="$CXXFLAGS -DNDEBUG"
1072251881Speter# elif test "$enable_debugging" = "maybe" ; then
1073251881Speter#   # do nothing
1074251881Speterfi
1075251881Speter
1076251881Speterif test "$enable_optimization" = "yes"; then
1077251881Speter  dnl Add optimization flags, unless they were set by the user
1078251881Speter  if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1079251881Speter    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1080251881Speter    if test "$enable_debugging" = "yes"; then
1081251881Speter      AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1082251881Speter      SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1083251881Speter        SVN_CFLAGS_ADD_IFELSE([-O])])
1084251881Speter    else
1085251881Speter      AC_MSG_NOTICE([Enabling optimizations for C])
1086251881Speter      SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1087251881Speter        SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1088251881Speter          SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1089251881Speter            SVN_CFLAGS_ADD_IFELSE([-O])])])])
1090251881Speter      SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1091251881Speter      SVN_CFLAGS_ADD_IFELSE([-flto])
1092251881Speter      SVN_CFLAGS_ADD_IFELSE([-fwhole-program])
1093251881Speter    fi
1094251881Speter  fi
1095251881Speter  if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1096251881Speter    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1097251881Speter    if test "$enable_debugging" = "yes"; then
1098251881Speter      AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1099251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1100251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-O])])
1101251881Speter    else
1102251881Speter      AC_MSG_NOTICE([Enabling optimizations for C++])
1103251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1104251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1105251881Speter          SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1106251881Speter            SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1107251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1108251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-flto])
1109251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-fwhole-program])
1110251881Speter    fi
1111251881Speter  fi
1112251881Speterelif test "$enable_optimization" = "no"; then
1113251881Speter  dnl Remove all optimization flags
1114251881Speter  AC_MSG_NOTICE([Disabling optimizations])
1115251881Speter  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1116251881Speter  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1117251881Speter# elif test "$enable_optimization" = "maybe" ; then
1118251881Speter#   # do nothing
1119251881Speterfi
1120251881Speter
1121253734Speterdnl Dump the current compiler options
1122253734SpeterAC_MSG_NOTICE([C compiler flags: $CFLAGS])
1123253734SpeterAC_MSG_NOTICE([    user-defined: $CUSERFLAGS])
1124253734SpeterAC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1125253734SpeterAC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1126253734SpeterAC_MSG_NOTICE([      user-defined: $CXXUSERFLAGS])
1127253734SpeterAC_MSG_NOTICE([   maintainer-mode: $CXXMAINTAINERFLAGS])
1128251881Speter
1129251881SpeterAC_ARG_ENABLE(full-version-match,
1130251881SpeterAS_HELP_STRING([--disable-full-version-match],
1131251881Speter               [Disable the full version match rules when checking
1132251881Speter                Subversion library compatibility.]),
1133251881Speter[
1134251881Speter    if test "$enableval" = "no" ; then
1135251881Speter      AC_MSG_NOTICE([Disabling svn full version matching])
1136251881Speter      AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1137251881Speter                [Defined if the full version matching rules are disabled])
1138251881Speter    fi
1139251881Speter])
1140251881Speter
1141251881SpeterAC_ARG_WITH(editor,
1142251881SpeterAS_HELP_STRING([--with-editor=PATH],
1143251881Speter               [Specify a default editor for the subversion client.]),
1144251881Speter[
1145251881Speter
1146251881Speter    if test "$withval" = "yes" ; then
1147251881Speter      AC_MSG_ERROR([--with-editor requires an argument.])
1148251881Speter    else
1149251881Speter      SVN_CLIENT_EDITOR=$withval
1150251881Speter      AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1151251881Speter                         [The path of a default editor for the client.])
1152251881Speter
1153251881Speter    fi
1154251881Speter
1155251881Speter])
1156251881Speter
1157251881SpeterSVN_LIB_Z
1158251881Speter
1159251881SpeterMOD_ACTIVATION=""
1160251881SpeterAC_ARG_ENABLE(mod-activation,
1161251881SpeterAS_HELP_STRING([--enable-mod-activation],
1162251881Speter               [Enable mod_dav_svn in httpd.conf]),
1163251881Speter[
1164251881Speter    if test "$enableval" = "yes" ; then
1165251881Speter      MOD_ACTIVATION="-a"
1166251881Speter      AC_MSG_NOTICE([Enabling apache module activation])
1167251881Speter    else
1168251881Speter      AC_MSG_NOTICE([Disabling apache module activation])
1169251881Speter    fi
1170251881Speter])
1171251881SpeterAC_SUBST(MOD_ACTIVATION)
1172251881Speter
1173251881Speter
1174251881Speter
1175251881SpeterAC_ARG_ENABLE(gcov,
1176251881SpeterAC_HELP_STRING([--enable-gcov],
1177251881Speter               [Turn on gcov coverage testing (GCC only).]),
1178251881Speter[
1179251881Speter    if test "$enableval" = "yes" ; then
1180251881Speter      dnl Probably other compilers support something similar;
1181251881Speter      dnl feel free to extend this to include them.
1182251881Speter      if test "$GCC" = "yes"; then
1183251881Speter        if test "$svn_enable_shared" = "yes" ; then
1184251881Speter          AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1185251881Speter                        recommend also using --enable-all-static).])
1186251881Speter        fi
1187251881Speter        if test ! "$enable_all_static" = "yes" ; then
1188251881Speter          AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1189251881Speter        fi
1190251881Speter        AC_MSG_NOTICE([Enabling gcov coverage testing.])
1191251881Speter        CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1192251881Speter        CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1193251881Speter      else
1194251881Speter        AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1195251881Speter      fi
1196251881Speter    fi
1197251881Speter])
1198251881Speter
1199251881SpeterAC_ARG_ENABLE(gprof,
1200251881SpeterAS_HELP_STRING([--enable-gprof],
1201251881Speter               [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1202251881Speter[
1203251881Speter    if test "$enableval" = "yes" ; then
1204251881Speter      dnl Probably other compilers support -pg or something similar;
1205251881Speter      dnl feel free to extend this to include them.
1206251881Speter      if test "$GCC" = "yes"; then
1207251881Speter        if test "$svn_enable_shared" = "yes" ; then
1208251881Speter          AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1209251881Speter                        recommend also using --enable-all-static).])
1210251881Speter        fi
1211251881Speter        if test ! "$enable_all_static" = "yes" ; then
1212251881Speter          AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1213251881Speter        fi
1214251881Speter        AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1215251881Speter        CFLAGS="$CFLAGS -pg"
1216251881Speter        CXXFLAGS="$CXXFLAGS -pg"
1217251881Speter        LT_LDFLAGS="$LT_LDFLAGS -pg"
1218251881Speter      else
1219251881Speter        AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1220251881Speter      fi
1221251881Speter    fi
1222251881Speter])
1223251881Speter
1224251881Speter
1225251881Speter# Scripting and Bindings languages
1226251881Speter
1227251881Speter# Python: Used for testsuite, and bindings
1228251881Speter
1229251881Speter
1230251881SpeterPYTHON="`$abs_srcdir/build/find_python.sh`"
1231251881Speterif test -z "$PYTHON"; then
1232251881Speter  AC_MSG_WARN([Python 2.5 or later is required to run the testsuite])
1233251881Speter  AC_MSG_WARN([or to use the Subversion Python bindings])
1234251881Speter  AC_MSG_WARN([])
1235251881Speter  AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1236251881Speter  AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1237251881Speter  AC_MSG_WARN([to the Python executable, and re-run configure])
1238251881Speterfi
1239251881SpeterAC_PATH_PROGS(PYTHON, "$PYTHON", none)
1240251881Speter
1241251881Speter# The minimum version for the JVM runtime for our Java bytecode.
1242251881SpeterJAVA_OLDEST_WORKING_VER='1.5'
1243251881Speter# SVN_CHECK_JDK sets $JAVA_CLASSPATH
1244251881SpeterSVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1245251881Speter
1246251881SpeterAC_PATH_PROG(PERL, perl, none)
1247251881Speter
1248251881Speterif test -n "$RUBY"; then
1249251881Speter  AC_PATH_PROG(RUBY, "$RUBY", none)
1250251881Speterelse
1251251881Speter  AC_PATH_PROGS(RUBY, ruby ruby1.8 ruby18 ruby1.9 ruby1 ruby1.9.3 ruby193, none)
1252251881Speterfi
1253251881Speterif test "$RUBY" != "none"; then
1254251881Speter  AC_MSG_CHECKING([rb_hash_foreach])
1255251881Speter  if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1256251881Speter    AC_MSG_RESULT([yes])
1257251881Speter    if test -n "$RDOC"; then
1258251881Speter      AC_PATH_PROG(RDOC, "$RDOC", none)
1259251881Speter    else
1260251881Speter      AC_PATH_PROGS(RDOC, rdoc rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193, none)
1261251881Speter    fi
1262251881Speter    AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1263251881Speter    svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1264251881Speter    ])
1265251881Speter    RUBY_MAJOR="$svn_cv_ruby_major"
1266251881Speter
1267251881Speter    AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1268251881Speter    svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1269251881Speter    ])
1270251881Speter    RUBY_MINOR="$svn_cv_ruby_minor"
1271251881Speter
1272251881Speter    AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1273251881Speter    svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1274251881Speter    ])
1275251881Speter    RUBY_TEENY="$svn_cv_ruby_teeny"
1276251881Speter    
1277251881Speter    AC_SUBST(RUBY_MAJOR)
1278251881Speter    AC_SUBST(RUBY_MINOR)
1279251881Speter    AC_SUBST(RUBY_TEENY)
1280251881Speter    if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1281251881Speter      # Disallow Ruby between 1.8.7 and 1.9.3
1282251881Speter      RUBY="none"
1283251881Speter      AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1284251881Speter      AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
1285251881Speter    elif test \(  "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -eq "9" -a "$RUBY_TEENY" -eq "3" \); then
1286251881Speter      #Warn about 1.9.3 support
1287251881Speter      AC_MSG_WARN([WARNING: The detected Ruby is 1.9.3])
1288251881Speter      AC_MSG_WARN([WARNING: Only 1.8.x releases are fully supported, 1.9.3 support is new])
1289251881Speter    fi
1290251881Speter  else
1291251881Speter    AC_MSG_RESULT([no])
1292251881Speter    RUBY="none"
1293251881Speter    AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1294251881Speter    AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1295251881Speter    AC_MSG_WARN([Subversion Ruby bindings])
1296251881Speter    AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1297251881Speter  fi
1298251881Speterfi
1299251881Speter
1300251881SpeterSVN_CHECK_SWIG
1301251881Speter
1302251881SpeterSVN_CHECK_CTYPESGEN
1303251881Speter
1304251881Speterdnl decide whether we want to link against the RA/FS libraries
1305251881SpeterAC_ARG_ENABLE(runtime-module-search,
1306251881SpeterAS_HELP_STRING([--enable-runtime-module-search],
1307251881Speter               [Turn on dynamic loading of RA/FS libraries including
1308251881Speter                third-party FS libraries]),
1309251881Speter[
1310251881Speter    if test "$enableval" = "yes"; then
1311251881Speter      use_dso=yes
1312251881Speter      if test "$svn_enable_shared" = "no"; then
1313251881Speter        AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1314251881Speter      fi
1315251881Speter      AC_DEFINE(SVN_USE_DSO, 1,
1316251881Speter                [Defined if svn should try to load DSOs])
1317251881Speter    fi
1318251881Speter])
1319251881Speter
1320251881Speterif test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1321251881Speter  AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
1322251881Speter      [Defined if libsvn_client should link against libsvn_ra_local])
1323251881Speter  svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1324251881Speter  svn_ra_lib_install_deps="install-ramod-lib"
1325251881Speter  svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1326251881Speter
1327251881Speter  AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
1328251881Speter      [Defined if libsvn_client should link against libsvn_ra_svn])
1329251881Speter  svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1330251881Speter  svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1331251881Speter
1332251881Speter  if test "$svn_lib_serf" = "yes"; then
1333251881Speter    AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SERF, 1,
1334251881Speter          [Defined if libsvn_client should link against libsvn_ra_serf])
1335251881Speter    svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1336251881Speter    svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1337251881Speter    svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1338251881Speter  fi
1339251881Speter
1340251881Speter  SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1341251881Speter  SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1342251881Speter  SVN_RA_LIB_LINK=$svn_ra_lib_link
1343251881Speter
1344251881Speter  AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1345251881Speter      [Defined if libsvn_fs should link against libsvn_fs_fs])
1346251881Speter  svn_fs_lib_deps="\$(FS_FS_DEPS)"
1347251881Speter  svn_fs_lib_install_deps="install-fsmod-lib"
1348251881Speter  svn_fs_lib_link="\$(FS_FS_LINK)"
1349251881Speter
1350251881Speter  if test "$svn_lib_berkeley_db" = "yes"; then
1351251881Speter  AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1352251881Speter      [Defined if libsvn_fs should link against libsvn_fs_base])
1353251881Speter    svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1354251881Speter    svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1355251881Speter    svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1356251881Speter  fi
1357251881Speter
1358251881Speter  SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1359251881Speter  SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1360251881Speter  SVN_FS_LIB_LINK=$svn_fs_lib_link
1361251881Speterfi
1362251881Speter
1363251881SpeterAC_SUBST(SVN_RA_LIB_DEPS)
1364251881SpeterAC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1365251881SpeterAC_SUBST(SVN_RA_LIB_LINK)
1366251881SpeterAC_SUBST(SVN_FS_LIB_DEPS)
1367251881SpeterAC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1368251881SpeterAC_SUBST(SVN_FS_LIB_LINK)
1369251881Speter
1370251881Speter# ==== JavaHL ================================================================
1371251881Speter
1372251881Speterdnl Possibly compile JavaHL
1373251881Speterdo_javahl_build=no
1374251881SpeterAC_ARG_ENABLE(javahl,
1375251881Speter  AS_HELP_STRING([--enable-javahl],
1376251881Speter             [Enable compilation of Java high-level bindings (requires C++)]),
1377251881Speter  [ if test "$enableval" = "yes" ; then
1378251881Speter        do_javahl_build="yes"
1379251881Speter    fi
1380251881Speter  ])
1381251881Speter
1382251881SpeterJAVAHL_OBJDIR=""
1383251881SpeterINSTALL_EXTRA_JAVAHL_LIB=""
1384251881SpeterFIX_JAVAHL_LIB=""
1385251881SpeterJAVAHL_TESTS_TARGET=""
1386251881SpeterJAVAHL_COMPAT_TESTS_TARGET=""
1387251881SpeterLT_CXX_LIBADD=""
1388251881Speterif test "$do_javahl_build" = "yes"; then
1389251881Speter  dnl Check for suitable JDK
1390251881Speter  if test "$JDK_SUITABLE" = "no"; then
1391251881Speter    AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK. 
1392251881Speter                  Please specify a suitable JDK using the --with-jdk option.])
1393251881Speter  fi
1394251881Speter  
1395251881Speter  dnl The temporary directory where libtool compiles libsvnjavahl.
1396251881Speter  JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1397251881Speter  
1398251881Speter  os_arch=`uname`
1399251881Speter  if test "$os_arch" = "Darwin"; then
1400251881Speter    dnl On Darwin, JNI libs must be installed as .jnilib
1401251881Speter    INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1402251881Speter    FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1403251881Speter  fi
1404251881Speter  # This segment (and the rest of r10800) is very likely unnecessary
1405251881Speter  # with libtool 1.5, which automatically adds libstdc++ as a
1406251881Speter  # dependency to the C++ libraries it builds.  So at some future time
1407251881Speter  # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1408251881Speter  # it.
1409251881Speter  AC_MSG_CHECKING([for additional flags to link C++ libraries])
1410251881Speter  if test "x$ac_compiler_gnu" = "xyes"; then
1411251881Speter    LT_CXX_LIBADD="-lstdc++"
1412251881Speter    AC_MSG_RESULT([$LT_CXX_LIBADD])
1413251881Speter  else
1414251881Speter    AC_MSG_RESULT([none needed])
1415251881Speter  fi
1416251881Speterfi
1417251881SpeterAC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1418251881SpeterAC_SUBST(JAVAHL_OBJDIR)
1419251881SpeterAC_SUBST(FIX_JAVAHL_LIB)
1420251881SpeterAC_SUBST(LT_CXX_LIBADD)
1421251881Speter
1422251881SpeterAC_ARG_WITH(junit,
1423251881SpeterAS_HELP_STRING([--with-junit=PATH],
1424251881Speter               [Specify a path to the junit JAR file.]),
1425251881Speter[
1426251881Speter    if test "$withval" != "no"; then
1427251881Speter      if test -n "$JAVA_CLASSPATH"; then
1428251881Speter        JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1429251881Speter      else
1430251881Speter        JAVA_CLASSPATH="$withval"
1431251881Speter      fi
1432251881Speter      JAVAHL_TESTS_TARGET="javahl-tests"
1433251881Speter      JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1434251881Speter    fi
1435251881Speter])
1436251881SpeterAC_SUBST(JAVA_CLASSPATH)
1437251881SpeterAC_SUBST(JAVAHL_TESTS_TARGET)
1438251881SpeterAC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1439251881Speter
1440251881Speter# ==== Miscellaneous bits ====================================================
1441251881Speter
1442251881Speter# Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1443251881Speter### I think we get this flag from APR, so the fix probably belongs there
1444251881Speterif test "$CC" = "clang"; then
1445251881Speter  SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1446251881Speterfi
1447251881Speter
1448251881Speterdnl Since this is used only on Unix-y systems, define the path separator as '/'
1449251881SpeterAC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1450251881Speter        [Defined to be the path separator used on your local filesystem])
1451251881Speter
1452251881SpeterAC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1453251881Speter        [Defined to be the null device for the system])
1454251881Speter
1455251881SpeterDEFAULT_FS_TYPE="fsfs"
1456251881SpeterAC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1457251881Speter                   [The fs type to use by default])
1458251881Speter
1459251881SpeterDEFAULT_HTTP_LIBRARY="serf"
1460251881SpeterAC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1461251881Speter                   [The http library to use by default])
1462251881Speter
1463251881Speter# BSD/OS (BSDi) needs to use a different include syntax in Makefile
1464251881SpeterINCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1465251881Spetercase "$host" in
1466251881Speter  *bsdi*)
1467251881Speter    # Check whether they've installed GNU make
1468251881Speter    if ! make --version > /dev/null 2>&1; then 
1469251881Speter      # BSDi make
1470251881Speter      INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1471251881Speter    fi
1472251881Speter    ;;
1473251881Speteresac
1474251881SpeterAC_SUBST(INCLUDE_OUTPUTS)
1475251881Speter
1476251881Speter# ==== Detection complete - output and run config.status =====================
1477251881Speter
1478251881SpeterAC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1479251881SpeterAC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1480251881Speter                   [svn_cf=subversion/svn_private_config.h;
1481251881Speter                    $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1482251881Speter                    cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1483251881Speter                    rm -f $svn_cf.tmp.new $svn_cf.tmp],
1484251881Speter                   [SED="$SED"
1485251881Speter                    SVN_DB_HEADER="$SVN_DB_HEADER"])
1486251881SpeterAC_CONFIG_FILES([Makefile])
1487251881Speter
1488251881SpeterSVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1489251881SpeterSVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1490251881SpeterSVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1491251881Speterif test -e packages/solaris/pkginfo.in; then
1492251881Speter  SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1493251881Speterfi
1494251881SpeterAC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1495251881Speter
1496251881Speter# Ensure that SWIG is checked after reconfiguration.
1497251881Speterrm -f .swig_checked
1498251881Speter
1499251881Speterdnl Provide ${host} for use in compiled code (for svn --version)
1500251881SpeterAC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1501251881Speter                   [Defined to the config.guess name of the build system])
1502251881Speter
1503251881Speterdnl Provide ${target} for use in compiled code (for user-agent string)
1504251881SpeterAC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1505251881Speter                   [Defined to the config.guess name of the build target])
1506251881Speter
1507251881SpeterAC_OUTPUT
1508251881Speter
1509251881Speter# ==== Print final messages to user ==========================================
1510251881Speter
1511251881Speterdnl Configure is long - users tend to miss warnings printed during it.
1512251881Speterdnl Hence, print a warnings about what we did and didn't configure at the 
1513251881Speterdnl end, where people will actually see them.
1514251881Speter
1515253734Speterif test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1516253734Speter  AC_MSG_WARN([We have configured without BDB filesystem support
1517251881Speter
1518251881Speter
1519253734SpeterBerkeley DB 6 was found, but not used.  Please re-run configure (see
1520253734Speter./config.nice) with the '--enable-bdb6' flag to use it,
1521253734Speteror explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1522253734Speterto silence this warning.
1523251881Speter
1524253734SpeterPlease note that some versions of Berkeley DB 6+ are under the GNU Affero
1525253734SpeterGeneral Public License, version 3:
1526253734Speterhttps://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1527251881Speter
1528253734SpeterThe AGPL-3.0 licence may impose special requirements for making available
1529253734Spetersource code of server-side software.  The text of the licence is:
1530253734Speterhttps://www.gnu.org/licenses/agpl-3.0.html
1531253734Speterhttp://opensource.org/licenses/AGPL-3.0
1532253734Speter
1533253734SpeterThe Berkeley DB backend to Subversion is deprecated; see
1534253734Speterhttp://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1535253734Speter
1536253734SpeterThe Subversion developers have not tested Subversion with Berkeley DB 6 for
1537253734Spetertechnical problems or bugs.
1538251881Speter])
1539251881Speterfi
1540