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)
52251881SpeterCUSERFLAGS="$CFLAGS"
53251881SpeterAC_PROG_CC
54251881SpeterSVN_CC_MODE_SETUP
55251881Speter
56251881Speter# Look for a C++ compiler (before anything can set CXXFLAGS)
57251881SpeterCXXUSERFLAGS="$CXXFLAGS"
58251881SpeterAC_PROG_CXX
59251881SpeterSVN_CXX_MODE_SETUP
60251881Speter
61251881Speter# Look for a C pre-processor
62251881SpeterAC_PROG_CPP
63251881Speter
64251881Speter# Look for a good sed
65251881Speter# AC_PROG_SED was introduced in Autoconf 2.59b
66251881Speterm4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"])
67251881Speter
68251881Speter# Grab target_cpu, so we can use it in the Solaris pkginfo file
69251881SpeterAC_CANONICAL_TARGET
70251881Speter
71251881Speter# Look for an extended grep
72251881SpeterAC_PROG_EGREP
73251881Speter
74251881SpeterAC_PROG_LN_S
75251881Speter
76251881SpeterAC_PROG_INSTALL
77251881Speter# If $INSTALL is relative path to our fallback install-sh, then convert
78251881Speter# to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool
79251881Speter# may try to use it from a changed working directory.
80251881Speterif test "$INSTALL" = "build/install-sh -c"; then
81251881Speter  INSTALL="$abs_srcdir/$INSTALL"
82251881Speterfi
83251881Speter
84251881Speterif test -z "$MKDIR"; then
85251881Speter  MKDIR="$INSTALL -d"
86251881Speterfi
87251881SpeterAC_SUBST([MKDIR])
88251881Speter
89251881Speter# ==== Libraries, for which we may have source to build ======================
90251881Speter
91251881Speterdnl verify apr version and set apr flags
92251881Speterdnl These regular expressions should not contain "\(" and "\)".
93251881Speter
94299742SdimAPR_VER_REGEXES=["1\.[3-9]\. 2\."]
95251881Speter
96251881SpeterSVN_LIB_APR($APR_VER_REGEXES)
97251881Speter
98251881Speterif test `expr $apr_version : 2` -ne 0; then
99251881Speter  dnl Bump the library so-version to 2 if using APR-2
100251881Speter  dnl (Debian uses so-version 1 for APR-1-with-largefile)
101251881Speter  svn_lib_ver=2
102251881Speter  dnl APR-2 provides APRUTIL
103251881Speter  apu_config=$apr_config
104251881Speter  AC_SUBST(SVN_APRUTIL_INCLUDES)
105251881Speter  AC_SUBST(SVN_APRUTIL_CONFIG, ["$apu_config"])
106251881Speter  AC_SUBST(SVN_APRUTIL_LIBS)
107299742Sdim  SVN_APR_MAJOR_VERSION=2
108251881Speterelse
109251881Speter  svn_lib_ver=0
110299742Sdim  APU_VER_REGEXES=["1\.[3-9]\."]
111251881Speter  SVN_LIB_APRUTIL($APU_VER_REGEXES)
112299742Sdim  SVN_APR_MAJOR_VERSION=1
113251881Speterfi
114299742SdimAC_SUBST(SVN_APR_MAJOR_VERSION)
115251881SpeterSVN_LT_SOVERSION="-version-info $svn_lib_ver"
116251881SpeterAC_SUBST(SVN_LT_SOVERSION)
117251881SpeterAC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
118251881Speter                   [Subversion library major verson])
119251881Speter
120251881Speterdnl Search for pkg-config
121251881SpeterAC_PATH_PROG(PKG_CONFIG, pkg-config)
122251881Speter
123251881Speterdnl Search for serf
124299742SdimSVN_LIB_SERF(1,3,4)
125251881Speter
126251881Speterif test "$svn_lib_serf" = "yes"; then
127251881Speter  AC_DEFINE([SVN_HAVE_SERF], 1,
128251881Speter            [Defined if support for Serf is enabled])
129251881Speterfi
130251881Speter
131251881Speterdnl Search for apr_memcache (only affects fs_fs)
132251881SpeterSVN_LIB_APR_MEMCACHE
133251881Speter
134251881Speterif test "$svn_lib_apr_memcache" = "yes"; then
135251881Speter  AC_DEFINE(SVN_HAVE_MEMCACHE, 1,
136251881Speter            [Defined if apr_memcache (standalone or in apr-util) is present])
137251881Speterfi
138251881Speter
139251881Speter
140251881Speterdnl Find Apache with a recent-enough magic module number
141299742SdimSVN_FIND_APACHE(20051115)
142251881Speter
143251881Speterdnl Search for SQLite.  If you change SQLITE_URL from a .zip to
144251881Speterdnl something else also update build/ac-macros/sqlite.m4 to reflect
145251881Speterdnl the correct command to unpack the downloaded file.
146251881SpeterSQLITE_MINIMUM_VER="3.7.12"
147251881SpeterSQLITE_RECOMMENDED_VER="3.7.15.1"
148251881SpeterSQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
149251881Speter
150251881SpeterSVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
151251881Speter               ${SQLITE_URL})
152251881Speter
153251881SpeterAC_ARG_ENABLE(sqlite-compatibility-version,
154251881Speter  AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z],
155251881Speter                 [Allow binary to run against SQLite as old as ARG]),
156251881Speter  [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no])
157251881Speter
158251881Speterif test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then
159251881Speter  SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver],
160251881Speter                          [sqlite_compat_ver_num])
161251881Speter  CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS"
162251881Speter  CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS"
163251881Speterfi
164251881Speter
165251881SpeterSVN_CHECK_FOR_ATOMIC_BUILTINS
166251881Speterif test "$svn_cv_atomic_builtins" = "yes"; then
167251881Speter    AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
168251881Speterfi
169251881Speter
170251881Speterdnl Set up a number of directories ---------------------
171251881Speter
172251881Speterdnl Create SVN_BINDIR for proper substitution
173251881Speterif test "${bindir}" = '${exec_prefix}/bin'; then
174251881Speter        if test "${exec_prefix}" = "NONE"; then
175251881Speter                if test "${prefix}" = "NONE"; then
176251881Speter                        SVN_BINDIR="${ac_default_prefix}/bin"
177251881Speter                else
178251881Speter                        SVN_BINDIR="${prefix}/bin"
179251881Speter                fi
180251881Speter        else
181251881Speter                SVN_BINDIR="${exec_prefix}/bin"
182251881Speter        fi
183251881Speterelse
184251881Speter        SVN_BINDIR="${bindir}"
185251881Speterfi
186251881Speter
187251881Speterdnl fully evaluate this value. when we substitute it into our tool scripts,
188251881Speterdnl they will not have things such as ${bindir} available
189251881SpeterSVN_BINDIR="`eval echo ${SVN_BINDIR}`"
190251881SpeterAC_SUBST(SVN_BINDIR)
191251881Speter
192251881Speterdnl provide ${bindir} in svn_private_config.h for use in compiled code
193251881SpeterAC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
194251881Speter        [Defined to be the path to the installed binaries])
195251881Speter
196251881Speterdnl This purposely does *not* allow for multiple parallel installs.
197251881Speterdnl However, it is compatible with most gettext usages.
198251881Speterlocaledir='${datadir}/locale'
199251881SpeterAC_SUBST(localedir)
200251881Speter
201251881Speterdnl For SVN_LOCALE_DIR, we have to expand it to something.  See SVN_BINDIR.
202309512Speterif test "${prefix}" = "NONE" \
203309512Speter  && ( test "${datadir}" = '${prefix}/share' \
204309512Speter       || ( test "${datadir}" = '${datarootdir}' \
205309512Speter            && test "${datarootdir}" = '${prefix}/share' ) ); then
206251881Speter  exp_localedir='${ac_default_prefix}/share/locale'
207251881Speterelse
208251881Speter  exp_localedir=$localedir
209251881Speterfi
210251881SpeterSVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
211251881SpeterAC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
212251881Speter                   [Defined to be the path to the installed locale dirs])
213251881Speter
214251881Speterdnl Check for libtool -- we'll definitely need it for all our shared libs!
215251881SpeterAC_MSG_NOTICE([configuring libtool now])
216251881Speterifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
217251881SpeterAC_ARG_ENABLE(experimental-libtool,
218251881Speter  AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
219251881Speter  [experimental_libtool=$enableval],[experimental_libtool=no])
220251881Speter
221251881Speterif test "$experimental_libtool" = "yes"; then
222251881Speter  echo "using APR's libtool"
223251881Speter  sh_libtool="`$apr_config --apr-libtool`"
224251881Speter  LIBTOOL="$sh_libtool"
225251881Speter  SVN_LIBTOOL="$sh_libtool"
226251881Speterelse
227251881Speter  sh_libtool="$abs_builddir/libtool"
228299742Sdim  SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\""
229251881Speterfi
230251881SpeterAC_SUBST(SVN_LIBTOOL)
231251881Speter
232251881Speterdnl Determine the libtool version
233251881Speterchangequote(, )dnl
234251881Speterlt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
235251881Speterlt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
236251881Speterlt_major_version=`echo $lt_version | cut -d'.' -f 1`
237251881Speterchangequote([, ])dnl
238251881Speter
239251881Speterdnl set the default parameters
240251881Spetersvn_enable_static=yes
241251881Spetersvn_enable_shared=yes
242251881Speter
243251881Speterdnl check for --enable-static option
244251881SpeterAC_ARG_ENABLE(static,
245251881Speter  AS_HELP_STRING([--enable-static],
246251881Speter                 [Build static libraries]),
247251881Speter  [svn_enable_static="$enableval"], [svn_enable_static="yes"])
248251881Speter
249251881Speterdnl check for --enable-shared option
250251881SpeterAC_ARG_ENABLE(shared,
251251881Speter  AS_HELP_STRING([--enable-shared],
252251881Speter                 [Build shared libraries]),
253251881Speter  [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
254251881Speter
255251881Speterif test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
256251881Speter  AC_MSG_NOTICE([building both shared and static libraries])
257251881Speterelif test "$svn_enable_static" = "yes" ; then
258251881Speter  AC_MSG_NOTICE([building static libraries only])
259251881Speter  LT_CFLAGS="-static $LT_CFLAGS"
260251881Speter  LT_LDFLAGS="-static $LT_LDFLAGS"
261251881Speterelif test "$svn_enable_shared" = "yes" ; then
262251881Speter  AC_MSG_NOTICE([building shared libraries only])
263251881Speter  if test "$lt_major_version" = "1" ; then
264251881Speter    LT_CFLAGS="-prefer-pic $LT_CFLAGS"
265251881Speter  elif test "$lt_major_version" = "2" ; then
266251881Speter    LT_CFLAGS="-shared $LT_CFLAGS"
267251881Speter  fi
268251881Speter  LT_LDFLAGS="-shared $LT_LDFLAGS"
269251881Speterelse
270251881Speter  AC_MSG_ERROR([cannot disable both shared and static libraries])
271251881Speterfi
272251881Speter
273251881Speterdnl Check for --enable-all-static option
274251881SpeterAC_ARG_ENABLE(all-static,
275251881Speter  AS_HELP_STRING([--enable-all-static],
276251881Speter                 [Build completely static (standalone) binaries.]),
277251881Speter  [
278251881Speter    if test "$enableval" = "yes" ; then
279251881Speter      LT_LDFLAGS="-all-static $LT_LDFLAGS"
280251881Speter    elif test "$enableval" != "no" ; then
281251881Speter      AC_MSG_ERROR([--enable-all-static doesn't accept argument])
282251881Speter    fi
283251881Speter])
284251881Speter
285251881SpeterAC_SUBST(LT_CFLAGS)
286251881SpeterAC_SUBST(LT_LDFLAGS)
287251881Speter
288251881SpeterAC_ARG_ENABLE(local-library-preloading,
289251881Speter  AS_HELP_STRING([--enable-local-library-preloading], 
290251881Speter                 [Enable preloading of locally built libraries in locally
291251881Speter                  built executables.  This may be necessary for testing
292251881Speter                  prior to installation on some platforms.  It does not
293251881Speter                  work on some platforms (Darwin, OpenBSD, ...).]),
294251881Speter  [
295251881Speter  if test "$enableval" != "no"; then
296251881Speter    if test "$svn_enable_shared" = "yes"; then
297251881Speter      TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
298251881Speter    else
299251881Speter      AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
300251881Speter    fi
301251881Speter  else
302251881Speter    TRANSFORM_LIBTOOL_SCRIPTS=""
303251881Speter  fi
304251881Speter  ], [
305251881Speter  TRANSFORM_LIBTOOL_SCRIPTS=""
306251881Speter])
307251881SpeterAC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
308251881Speter
309251881Speterdnl Check if -no-undefined is needed for the platform.
310251881Speterdnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
311251881Speterdnl So we only turn it on for platforms where we know we really need it.
312251881SpeterAC_MSG_CHECKING([whether libtool needs -no-undefined])
313251881Spetercase $host in
314251881Speter  *-*-cygwin*)
315251881Speter    AC_MSG_RESULT([yes])
316251881Speter    LT_NO_UNDEFINED="-no-undefined"
317251881Speter    ;;
318251881Speter  *)
319251881Speter    AC_MSG_RESULT([no])
320251881Speter    LT_NO_UNDEFINED=""
321251881Speter    ;;
322251881Speteresac
323251881SpeterAC_SUBST(LT_NO_UNDEFINED)
324251881Speter
325251881Speterdnl Check for trang.
326251881Spetertrang=yes
327251881SpeterAC_ARG_WITH(trang,
328251881SpeterAS_HELP_STRING([--with-trang=PATH],
329251881Speter               [Specify the command to run the trang schema converter]),
330251881Speter[
331251881Speter    trang="$withval"
332251881Speter])
333251881Speterif test "$trang" = "yes"; then
334251881Speter    AC_PATH_PROG(TRANG, trang, none)
335251881Speterelse
336251881Speter    TRANG="$trang"
337251881Speter    AC_SUBST(TRANG)
338251881Speterfi
339251881Speter
340251881Speterdnl Check for doxygen
341251881Speterdoxygen=yes
342251881SpeterAC_ARG_WITH(doxygen,
343251881SpeterAC_HELP_STRING([--with-doxygen=PATH],
344251881Speter               [Specify the command to run doxygen]),
345251881Speter[
346251881Speter    doxygen="$withval"
347251881Speter])
348251881Speterif test "$doxygen" = "yes"; then
349251881Speter    AC_PATH_PROG(DOXYGEN, doxygen, none)
350251881Speterelse
351251881Speter    DOXYGEN="$doxygen"
352251881Speter    AC_SUBST(DOXYGEN)
353251881Speterfi
354251881Speter
355251881Speter
356251881Speterdnl Check for libraries --------------------
357251881Speter
358251881Speterdnl Expat -------------------
359251881Speter
360251881SpeterAC_ARG_WITH(expat,
361251881Speter  AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS], 
362251881Speter                 [Specify location of Expat]),
363251881Speter                 [svn_lib_expat="$withval"],
364251881Speter                 [svn_lib_expat="::expat"])
365251881Speter
366251881Speter# APR-util accepts "builtin" as an argument to this option so if the user
367251881Speter# passed "builtin" pretend the user didn't specify the --with-expat option
368251881Speter# at all. Expat will (hopefully) be found in apr-util.
369251881Spetertest "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
370251881Speter
371251881SpeterAC_MSG_CHECKING([for Expat])
372251881Speterif test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
373251881Speter  SVN_XML_INCLUDES=""
374251881Speter  for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
375251881Speter    SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
376251881Speter  done
377251881Speter  SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
378251881Speter  for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
379251881Speter    LDFLAGS="$LDFLAGS -L$l"
380251881Speter  done
381251881Speter  for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
382251881Speter    SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
383251881Speter  done
384251881Speter  SVN_XML_LIBS="${SVN_XML_LIBS## }"
385251881Speter  old_CPPFLAGS="$CPPFLAGS"
386251881Speter  old_LIBS="$LIBS"
387251881Speter  CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
388251881Speter  LIBS="$LIBS $SVN_XML_LIBS"
389251881Speter  AC_LINK_IFELSE([AC_LANG_SOURCE([[
390251881Speter#include <expat.h>
391251881Speterint main()
392251881Speter{XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
393251881Speter  LIBS="$old_LIBS"
394251881Speter  if test "$svn_lib_expat" = "yes"; then
395251881Speter    AC_MSG_RESULT([yes])
396251881Speter  else
397251881Speter    SVN_XML_INCLUDES=""
398251881Speter    SVN_XML_LIBS=""
399251881Speter    CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
400251881Speter    if test "$enable_all_static" != "yes"; then
401251881Speter      SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
402251881Speter    fi
403251881Speter    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
404251881Speter#include <expat.h>
405251881Speterint main()
406251881Speter{XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
407251881Speter    if test "$svn_lib_expat" = "yes"; then
408251881Speter      AC_MSG_RESULT([yes])
409251881Speter      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.])
410251881Speter    else
411251881Speter      AC_MSG_RESULT([no])
412251881Speter      AC_MSG_ERROR([Expat not found])
413251881Speter    fi
414251881Speter  fi
415251881Speter  CPPFLAGS="$old_CPPFLAGS"
416251881Speterelse
417251881Speter  AC_MSG_RESULT([no])
418251881Speter  if test "$svn_lib_expat" = "yes"; then
419251881Speter    AC_MSG_ERROR([--with-expat option requires argument])
420251881Speter  elif test "$svn_lib_expat" = "no"; then
421251881Speter    AC_MSG_ERROR([Expat is required])
422251881Speter  else
423251881Speter    AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
424251881Speter  fi
425251881Speterfi
426251881SpeterAC_SUBST(SVN_XML_INCLUDES)
427251881SpeterAC_SUBST(SVN_XML_LIBS)
428251881Speter
429251881Speterdnl Berkeley DB -------------------
430251881Speter
431251881Speter# Berkeley DB on SCO OpenServer needs -lsocket
432251881SpeterAC_CHECK_LIB(socket, socket)
433251881Speter
434251881Speter# Build the BDB filesystem library only if we have an appropriate
435251881Speter# version of Berkeley DB.
436251881Spetercase "$host" in
437251881Speterpowerpc-apple-darwin*)
438251881Speter    # Berkeley DB 4.0 does not work on OS X.
439251881Speter    SVN_FS_WANT_DB_MAJOR=4
440251881Speter    SVN_FS_WANT_DB_MINOR=1
441251881Speter    SVN_FS_WANT_DB_PATCH=25
442251881Speter    ;;
443251881Speter*)
444251881Speter    SVN_FS_WANT_DB_MAJOR=4
445251881Speter    SVN_FS_WANT_DB_MINOR=0
446251881Speter    SVN_FS_WANT_DB_PATCH=14
447251881Speter    ;;
448251881Speteresac
449253734Speterdb_alt_version="5.x"
450251881Speter# Look for libdb4.so first:
451251881SpeterSVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
452251881Speter                    $SVN_FS_WANT_DB_PATCH, [db4 db])
453251881Speter
454251881SpeterAC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
455251881Speter                   [The desired major version for the Berkeley DB])
456251881SpeterAC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
457251881Speter                   [The desired minor version for the Berkeley DB])
458251881SpeterAC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
459251881Speter                   [The desired patch version for the Berkeley DB])
460251881Speter
461251881SpeterAC_SUBST(SVN_DB_INCLUDES)
462251881SpeterAC_SUBST(SVN_DB_LIBS)
463251881Speter
464251881SpeterSVN_LIB_SASL
465251881Speter
466251881Speterif test "$svn_lib_sasl" = "yes"; then
467251881Speter  AC_DEFINE(SVN_HAVE_SASL, 1,
468251881Speter            [Defined if Cyrus SASL v2 is present on the system])
469251881Speterfi
470251881Speter
471251881Speterdnl Mac OS specific features -------------------
472251881Speter
473251881SpeterSVN_LIB_MACHO_ITERATE
474251881SpeterSVN_LIB_MACOS_PLIST
475251881SpeterSVN_LIB_MACOS_KEYCHAIN
476251881Speter
477251881Speterdnl APR_HAS_DSO -------------------
478251881Speter
479251881SpeterAC_MSG_CHECKING([whether APR has support for DSOs])
480251881Speterold_CPPFLAGS="$CPPFLAGS"
481251881SpeterCPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
482251881SpeterAC_PREPROC_IFELSE([AC_LANG_SOURCE([[
483251881Speter#include <apr.h>
484251881Speter#if !APR_HAS_DSO
485251881Speter#error
486251881Speter#endif]])],
487251881Speter  APR_HAS_DSO="yes"
488251881Speter  AC_MSG_RESULT([yes]),
489251881Speter  APR_HAS_DSO="no"
490251881Speter  AC_MSG_RESULT([no]))
491251881SpeterCPPFLAGS="$old_CPPFLAGS"
492251881Speter
493251881Speter
494251881Speterdnl D-Bus (required for support for KWallet) -------------------
495251881Speter
496251881Speterif test -n "$PKG_CONFIG"; then
497251881Speter  AC_MSG_CHECKING([for D-Bus .pc file])
498251881Speter  if $PKG_CONFIG --exists dbus-1; then
499251881Speter    AC_MSG_RESULT([yes])
500251881Speter    old_CPPFLAGS="$CPPFLAGS"
501251881Speter    old_LIBS="$LIBS"
502251881Speter    DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
503251881Speter    AC_MSG_CHECKING([D-Bus version])
504251881Speter    DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
505251881Speter    AC_MSG_RESULT([$DBUS_VERSION])
506251881Speter    # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
507251881Speter    if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
508251881Speter      DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
509251881Speter    fi
510251881Speter    DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
511251881Speter    CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
512251881Speter    LIBS="$LIBS $DBUS_LIBS"
513251881Speter    AC_MSG_CHECKING([for D-Bus])
514251881Speter    AC_LINK_IFELSE([AC_LANG_SOURCE([[
515251881Speter#include <dbus/dbus.h>
516251881Speterint main()
517251881Speter{dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
518251881Speter    if test "$HAVE_DBUS" = "yes"; then
519251881Speter      AC_MSG_RESULT([yes])
520251881Speter    else
521251881Speter      AC_MSG_RESULT([no])
522251881Speter    fi
523251881Speter    CPPFLAGS="$old_CPPFLAGS"
524251881Speter    LIBS="$old_LIBS"
525251881Speter  else
526251881Speter    AC_MSG_RESULT([no])
527251881Speter  fi
528251881Speterfi
529251881Speter
530251881Speterdnl GPG Agent -------------------
531251881Speter
532251881SpeterAC_ARG_WITH(gpg_agent,
533251881SpeterAS_HELP_STRING([--without-gpg-agent], 
534251881Speter               [Disable support for GPG-Agent]),
535251881Speter               [], [with_gpg_agent=yes])
536251881SpeterAC_MSG_CHECKING([whether to support GPG-Agent])
537251881Speterif test "$with_gpg_agent" = "yes"; then
538251881Speter  AC_MSG_RESULT([yes])
539251881Speter  AC_DEFINE([SVN_HAVE_GPG_AGENT], [1], 
540251881Speter            [Is GPG Agent support enabled?])
541251881Speterelse
542251881Speter  AC_MSG_RESULT([no])
543251881Speterfi
544251881Speter
545251881SpeterAC_SUBST(SVN_HAVE_GPG_AGENT)
546251881Speter
547251881Speterdnl GNOME Keyring -------------------
548251881Speter
549251881SpeterAC_ARG_WITH(gnome_keyring,
550251881Speter  AS_HELP_STRING([--with-gnome-keyring], 
551251881Speter                 [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
552251881Speter                 [with_gnome_keyring="$withval"],
553251881Speter                 [with_gnome_keyring=auto])
554251881Speter
555251881Speterfound_gnome_keyring=no
556251881SpeterAC_MSG_CHECKING([whether to look for GNOME Keyring])
557251881Speterif test "$with_gnome_keyring" != "no"; then
558251881Speter  AC_MSG_RESULT([yes])
559299742Sdim  case "$host" in
560299742Sdim  *-*-darwin*)
561299742Sdim    if test "$with_gnome_keyring" = "yes"; then
562299742Sdim      AC_MSG_ERROR([--with-gnome-keyring is not supported on Mac OS X.])
563299742Sdim    else
564299742Sdim      with_gnome_keyring=no
565299742Sdim    fi
566299742Sdim    ;;
567299742Sdim  *)
568299742Sdim    if test "$svn_enable_shared" = "yes"; then
569299742Sdim      if test "$APR_HAS_DSO" = "yes"; then
570299742Sdim        if test -n "$PKG_CONFIG"; then
571299742Sdim          AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
572299742Sdim          if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
573251881Speter            AC_MSG_RESULT([yes])
574299742Sdim            old_CPPFLAGS="$CPPFLAGS"
575299742Sdim            SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
576299742Sdim            CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
577299742Sdim            AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
578299742Sdim            AC_MSG_CHECKING([for GNOME Keyring])
579299742Sdim            if test "$found_gnome_keyring" = "yes"; then
580299742Sdim              AC_MSG_RESULT([yes])
581299742Sdim              AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1], 
582299742Sdim                        [Is GNOME Keyring support enabled?])
583299742Sdim              CPPFLAGS="$old_CPPFLAGS"
584299742Sdim              SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
585299742Sdim            else
586299742Sdim              AC_MSG_RESULT([no])
587299742Sdim              if test "$with_gnome_keyring" = "yes"; then
588299742Sdim                AC_MSG_ERROR([cannot find GNOME Keyring])
589299742Sdim              fi
590299742Sdim            fi
591251881Speter          else
592251881Speter            AC_MSG_RESULT([no])
593251881Speter            if test "$with_gnome_keyring" = "yes"; then
594299742Sdim              AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
595299742Sdim            else
596299742Sdim              with_gnome_keyring=no
597251881Speter            fi
598251881Speter          fi
599251881Speter        else
600251881Speter          if test "$with_gnome_keyring" = "yes"; then
601299742Sdim            AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
602251881Speter          else
603251881Speter            with_gnome_keyring=no
604251881Speter          fi
605251881Speter        fi
606251881Speter      else
607251881Speter        if test "$with_gnome_keyring" = "yes"; then
608299742Sdim          AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
609251881Speter        else
610251881Speter          with_gnome_keyring=no
611251881Speter        fi
612251881Speter      fi
613251881Speter    else
614251881Speter      if test "$with_gnome_keyring" = "yes"; then
615299742Sdim        AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
616251881Speter      else
617251881Speter        with_gnome_keyring=no
618251881Speter      fi
619251881Speter    fi
620299742Sdim    ;;
621299742Sdim  esac
622251881Speterelse
623251881Speter  AC_MSG_RESULT([no])
624251881Speterfi
625251881SpeterAC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
626251881SpeterAC_SUBST(SVN_GNOME_KEYRING_LIBS)
627251881Speter
628299742Sdimdnl Googlemock -----------------
629299742SdimAC_ARG_ENABLE([gmock],
630299742Sdim  AS_HELP_STRING([--disable-gmock],
631299742Sdim                 [Do not use the Googlemock testing framework]),
632299742Sdim  [],
633299742Sdim  [enable_gmock=yes])
634251881Speter
635299742SdimAC_SUBST([GMOCK_SRCDIR], [$abs_srcdir/gmock-fused])
636299742SdimAC_MSG_CHECKING([whether use Googlemock])
637299742Sdimif test "$enable_gmock" != "no"; then
638299742Sdim  if test -d "$GMOCK_SRCDIR"; then
639299742Sdim    AC_MSG_RESULT([yes])
640299742Sdim    SVN_USE_GMOCK=true
641299742Sdim  else
642299742Sdim    AC_MSG_RESULT([no])
643299742Sdim    SVN_USE_GMOCK=false
644299742Sdim  fi
645299742Sdimelse
646299742Sdim  AC_MSG_RESULT([no])
647299742Sdim  SVN_USE_GMOCK_SOURCES=false
648299742Sdimfi
649299742SdimAC_SUBST([SVN_USE_GMOCK])
650299742Sdim
651251881Speterdnl Ev2 experimental features ----------------------
652251881Speterdnl Note: The Ev2 implementations will be built unconditionally, but by
653251881Speterdnl providing this flag, users can choose to use the currently-shimmed Ev2
654251881Speterdnl editor implementations for various operations.  This will probably
655251881Speterdnl negatively impact performance, but is useful for testing.
656251881SpeterAC_ARG_ENABLE(ev2-impl,
657251881Speter  AS_HELP_STRING([--enable-ev2-impl],
658251881Speter                 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
659251881Speter  [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
660251881Speterif test "$enable_ev2_impl" = "yes"; then
661251881Speter  AC_DEFINE(ENABLE_EV2_IMPL, 1,
662251881Speter            [Define to 1 if Ev2 implementations should be used.])
663251881Speterfi
664251881Speter
665251881Speter
666251881Speterdnl I18n -------------------
667251881Speter
668251881SpeterAC_ARG_ENABLE(nls,
669251881Speter  AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
670251881Speter  [enable_nls=$enableval],[enable_nls=yes])
671251881Speter
672251881SpeterUSE_NLS="no"
673299742SdimSVN_INTL_LIBS=""
674251881Speterif test "$enable_nls" = "yes"; then
675251881Speter  dnl First, check to see if there is a working msgfmt.
676251881Speter  AC_PATH_PROG(MSGFMT, msgfmt, none)
677251881Speter  AC_PATH_PROG(MSGMERGE, msgmerge, none)
678251881Speter  AC_PATH_PROG(XGETTEXT, xgettext, none)
679251881Speter  if test "$MSGFMT" != "none"; then
680299742Sdim    AC_SEARCH_LIBS(bindtextdomain, [intl],
681251881Speter                   [
682299742Sdim                      # in case libintl needs to be linked explicitly,
683299742Sdim                      # $ac_cv_search_bindtextdomain contains -l linker flags
684299742Sdim                      if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
685299742Sdim                      then
686299742Sdim                        SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
687299742Sdim                      fi
688299742Sdim                   ],
689299742Sdim                   [
690251881Speter                    enable_nls="no"
691251881Speter                   ])
692251881Speter    if test "$enable_nls" = "no"; then
693251881Speter      # Destroy the cached result so we can test again
694251881Speter      unset ac_cv_search_bindtextdomain
695251881Speter      # On some systems, libintl needs libiconv to link properly,
696251881Speter      # so try again with -liconv.
697251881Speter      AC_SEARCH_LIBS(bindtextdomain, [intl],
698251881Speter                     [
699251881Speter                      enable_nls="yes"
700299742Sdim                      if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
701299742Sdim                      then
702299742Sdim                        SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
703299742Sdim                      fi
704251881Speter                      # This is here so that -liconv ends up in LIBS
705251881Speter                      # if it worked with -liconv.
706251881Speter                      AC_CHECK_LIB(iconv, libiconv_open)
707251881Speter                     ], 
708251881Speter                     [
709251881Speter                      AC_MSG_WARN([bindtextdomain() not found.  Disabling NLS.])
710251881Speter                      enable_nls="no"
711251881Speter                     ], -liconv)
712251881Speter    fi
713251881Speter    if test "$enable_nls" = "yes"; then
714251881Speter      AC_DEFINE(ENABLE_NLS, 1,
715251881Speter                [Define to 1 if translation of program messages to the user's
716251881Speter                 native language is requested.])
717251881Speter      USE_NLS="yes"
718251881Speter    fi
719251881Speter  fi
720251881Speterfi
721251881Speter
722299742SdimAC_SUBST(SVN_INTL_LIBS)
723299742Sdim
724251881SpeterAH_BOTTOM([
725251881Speter/* Indicate to translators that string X should be translated.  Do not look
726251881Speter   up the translation at run time; just expand to X.  This macro is suitable
727251881Speter   for use where a constant string is required at compile time. */
728251881Speter#define N_(x) x
729251881Speter/* Indicate to translators that we have decided the string X should not be
730251881Speter   translated.  Expand to X. */
731251881Speter#define U_(x) x
732251881Speter#ifdef ENABLE_NLS
733251881Speter#include <locale.h>
734251881Speter#include <libintl.h>
735251881Speter/* Indicate to translators that string X should be translated.  At run time,
736251881Speter   look up and return the translation of X. */
737251881Speter#define _(x) dgettext(PACKAGE_NAME, x)
738251881Speter/* Indicate to translators that strings X1 and X2 are singular and plural
739251881Speter   forms of the same message, and should be translated.  At run time, return
740251881Speter   an appropriate translation depending on the number N. */
741251881Speter#define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
742251881Speter#else
743251881Speter#define _(x) (x)
744251881Speter#define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
745251881Speter#define gettext(x) (x)
746251881Speter#define dgettext(domain, x) (x)
747251881Speter#endif
748299742Sdim
749299742Sdim/* compiler hints */
750299742Sdim#if defined(__GNUC__) && (__GNUC__ >= 3)
751299742Sdim# define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0))
752299742Sdim# define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
753299742Sdim#else
754299742Sdim# define SVN__PREDICT_FALSE(x) (x)
755299742Sdim# define SVN__PREDICT_TRUE(x) (x)
756299742Sdim#endif
757299742Sdim
758299742Sdim#if defined(SVN_DEBUG)
759299742Sdim# define SVN__FORCE_INLINE
760299742Sdim# define SVN__PREVENT_INLINE
761299742Sdim#elif defined(__GNUC__)
762299742Sdim# define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline))
763299742Sdim# define SVN__PREVENT_INLINE __attribute__ ((noinline))
764299742Sdim#else
765299742Sdim# define SVN__FORCE_INLINE APR_INLINE
766299742Sdim# define SVN__PREVENT_INLINE
767299742Sdim#endif
768299742Sdim
769299742Sdim/* Macro used to specify that a variable is intentionally left unused.
770299742Sdim   Supresses compiler warnings about the variable being unused.  */
771299742Sdim#define SVN_UNUSED(v) ( (void)(v) )
772251881Speter])
773251881Speter
774251881Speterdnl Used to simulate makefile conditionals.
775251881SpeterGETTEXT_CODESET=\#
776251881SpeterNO_GETTEXT_CODESET=\#
777251881Speterif test $USE_NLS = "yes"; then
778251881Speter   AC_CHECK_FUNCS(bind_textdomain_codeset,
779251881Speter                  [ GETTEXT_CODESET="" ],
780251881Speter                  [ NO_GETTEXT_CODESET="" ])
781251881Speterfi
782251881SpeterAC_SUBST(GETTEXT_CODESET)
783251881SpeterAC_SUBST(NO_GETTEXT_CODESET)
784251881Speter
785251881Speter# Check if we are using GNU gettext.
786251881SpeterGNU_GETTEXT=no
787251881SpeterMSGFMTFLAGS=''
788251881Speterif test $USE_NLS = "yes"; then
789251881Speter   AC_MSG_CHECKING(if we are using GNU gettext)
790251881Speter   if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
791251881Speter      GNU_GETTEXT=yes
792251881Speter      MSGFMTFLAGS='-c'
793251881Speter   fi
794251881Speter   AC_MSG_RESULT($GNU_GETTEXT)
795251881Speterfi
796251881SpeterAC_SUBST(MSGFMTFLAGS)
797251881Speter
798251881Speterdnl libmagic -------------------
799251881Speter
800251881Speterlibmagic_found=no
801251881Speter
802251881SpeterAC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
803251881Speter                                [libmagic filetype detection library]),
804251881Speter[
805251881Speter  if test "$withval" = "yes" ; then
806251881Speter    AC_CHECK_HEADER(magic.h, [
807251881Speter      AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
808251881Speter    ])
809251881Speter    libmagic_prefix="the default locations"
810251881Speter  elif test "$withval" != "no"; then
811251881Speter    libmagic_prefix=$withval
812251881Speter    save_cppflags="$CPPFLAGS"
813251881Speter    CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
814251881Speter    AC_CHECK_HEADERS(magic.h,[
815251881Speter      save_ldflags="$LDFLAGS"
816269847Speter      LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
817251881Speter      AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
818251881Speter      LDFLAGS="$save_ldflags"
819251881Speter    ])
820251881Speter    CPPFLAGS="$save_cppflags"
821251881Speter  fi
822251881Speter  if test "$withval" != "no" && test "$libmagic_found" = "no"; then
823251881Speter    AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
824251881Speter  fi
825251881Speter],
826251881Speter[
827251881Speter  AC_CHECK_HEADER(magic.h, [
828251881Speter    AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
829251881Speter  ])
830251881Speter])
831251881Speter
832251881Speterif test "$libmagic_found" != "no"; then
833251881Speter  AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
834251881Speter  SVN_MAGIC_LIBS="-lmagic"
835251881Speterfi
836251881Speter
837251881Speterif test "$libmagic_found" = "yes"; then
838251881Speter  SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
839251881Speter  LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
840251881Speterfi
841251881Speter
842251881SpeterAC_SUBST(SVN_MAGIC_INCLUDES)
843251881SpeterAC_SUBST(SVN_MAGIC_LIBS)
844251881Speter
845251881Speterdnl KWallet -------------------
846251881SpeterSVN_LIB_KWALLET
847251881Speter
848251881Speterif test "$svn_lib_kwallet" = "yes"; then
849251881Speter  AC_DEFINE([SVN_HAVE_KWALLET], 1,
850251881Speter            [Defined if KWallet support is enabled])
851251881Speterfi
852251881Speter
853251881Speterdnl plaintext passwords -------------------
854251881SpeterAC_ARG_ENABLE(plaintext-password-storage,
855251881SpeterAS_HELP_STRING([--disable-plaintext-password-storage],
856251881Speter               [Disable on-disk caching of plaintext passwords and passphrases.
857251881Speter                (Leaving this functionality enabled will not force Subversion
858251881Speter                to store passwords in plaintext, but does permit users to
859251881Speter                explicitly allow that behavior via runtime configuration.)]),
860251881Speter[
861251881Speter   if test "$enableval" = "no"; then
862251881Speter      AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
863251881Speter      AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
864251881Speter                [Defined if plaintext password/passphrase storage is disabled])
865251881Speter   fi
866251881Speter])
867251881Speter
868251881Speterdnl Build and install rules -------------------
869251881Speter
870251881SpeterINSTALL_STATIC_RULES="install-bin install-docs"
871251881SpeterINSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
872251881SpeterINSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
873251881SpeterBUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
874251881Speter
875251881Speterif test "$svn_lib_berkeley_db" = "yes"; then
876251881Speter  BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
877251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
878251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
879251881Speter  BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
880251881Speter  BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
881251881Speterfi
882251881Speter
883251881Speterif test "$svn_lib_serf" = "yes"; then
884251881Speter  BUILD_RULES="$BUILD_RULES serf-lib"
885251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
886251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
887251881Speterfi
888251881Speter
889251881Speterif test "$svn_lib_kwallet" = "yes"; then
890251881Speter  BUILD_RULES="$BUILD_RULES kwallet-lib"
891251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
892251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
893251881Speterfi
894251881Speter
895251881Speterif test "$found_gnome_keyring" = "yes"; then
896251881Speter  BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
897251881Speter  INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
898251881Speter  INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
899251881Speterfi
900251881Speter
901251881Speterif test "$USE_NLS" = "yes"; then
902251881Speter  BUILD_RULES="$BUILD_RULES locale"
903251881Speter  INSTALL_RULES="$INSTALL_RULES install-locale"
904251881Speterfi
905251881Speter
906251881SpeterAC_SUBST(BUILD_RULES)
907251881SpeterAC_SUBST(INSTALL_STATIC_RULES)
908251881SpeterAC_SUBST(INSTALL_RULES)
909251881SpeterAC_SUBST(BDB_TEST_DEPS)
910251881SpeterAC_SUBST(BDB_TEST_PROGRAMS)
911251881Speter
912251881Speterdnl Check for header files ----------------
913251881Speter
914251881Speterdnl Standard C headers
915251881SpeterAC_HEADER_STDC
916251881Speter
917251881Speterdnl Check for typedefs, structures, and compiler characteristics ----------
918251881Speter
919251881Speterdnl if compiler doesn't understand `const', then define it empty
920251881SpeterAC_C_CONST
921251881Speter
922251881Speterdnl if non-existent, define size_t to be `unsigned'
923251881SpeterAC_TYPE_SIZE_T
924251881Speter
925251881Speter
926251881Speterdnl Check for library functions ----------
927251881Speter
928251881SpeterAC_FUNC_MEMCMP
929251881Speter
930251881Speterdnl svn_error's default warning handler uses vfprintf()
931251881SpeterAC_FUNC_VPRINTF
932251881Speter
933251881Speterdnl check for functions needed in special file handling
934251881SpeterAC_CHECK_FUNCS(symlink readlink)
935251881Speter
936251881Speterdnl check for uname
937251881SpeterAC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
938251881Speter
939251881Speterdnl check for termios
940251881SpeterAC_CHECK_HEADER(termios.h,[
941251881Speter  AC_CHECK_FUNCS(tcgetattr tcsetattr,[
942251881Speter    AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
943251881Speter  ])
944251881Speter])
945251881Speter
946251881Speterdnl Process some configuration options ----------
947251881Speter
948251881SpeterAC_ARG_ENABLE(debug,
949251881SpeterAS_HELP_STRING([--enable-debug],
950251881Speter               [Turn on debugging]),
951251881Speter[
952251881Speter    if test "$enableval" = "yes" ; then
953251881Speter      enable_debugging="yes"
954251881Speter    else
955251881Speter      enable_debugging="no"
956251881Speter    fi
957251881Speter],
958251881Speter[
959251881Speter    # Neither --enable-debug nor --disable-debug was passed.
960251881Speter    enable_debugging="maybe"
961251881Speter])
962251881Speter
963251881SpeterAC_ARG_ENABLE(optimize,
964251881SpeterAS_HELP_STRING([--enable-optimize],
965251881Speter               [Turn on optimizations]),
966251881Speter[
967251881Speter    if test "$enableval" = "yes" ; then
968251881Speter      enable_optimization="yes"
969251881Speter    else
970251881Speter      enable_optimization="no"
971251881Speter    fi
972251881Speter],
973251881Speter[
974251881Speter    # Neither --enable-optimize nor --disable-optimize was passed.
975251881Speter    enable_optimization="maybe"
976251881Speter])
977251881Speter
978251881Speterdnl Use -Wl,--no-undefined during linking of some libraries
979251881SpeterAC_ARG_ENABLE(disallowing-of-undefined-references,
980251881Speter  [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
981251881Speter                  [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
982251881Speterif test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
983251881Speter  enable_disallowing_of_undefined_references="no"
984251881Speterfi
985251881Speterif test "$enable_disallowing_of_undefined_references" != "no"; then
986251881Speter  AC_MSG_CHECKING([for -Wl,--no-undefined])
987251881Speter  old_LDFLAGS="$LDFLAGS"
988251881Speter  LDFLAGS="$LDFLAGS -Wl,--no-undefined"
989251881Speter  AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
990251881Speter  LDFLAGS="$old_LDFLAGS"
991251881Speter  if test "$svn_wl_no_undefined" = "yes"; then
992251881Speter    AC_MSG_RESULT([yes])
993251881Speter    for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
994251881Speter      eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
995251881Speter    done
996251881Speter  else
997251881Speter    AC_MSG_RESULT([no])
998251881Speter    if test "$enable_disallowing_of_undefined_references" = "yes"; then
999251881Speter      AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
1000251881Speter    fi
1001251881Speter  fi
1002251881Speterfi
1003251881SpeterAC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS])
1004251881SpeterAC_SUBST([libsvn_auth_kwallet_LDFLAGS])
1005251881SpeterAC_SUBST([libsvn_client_LDFLAGS])
1006251881SpeterAC_SUBST([libsvn_delta_LDFLAGS])
1007251881SpeterAC_SUBST([libsvn_diff_LDFLAGS])
1008251881SpeterAC_SUBST([libsvn_fs_LDFLAGS])
1009251881SpeterAC_SUBST([libsvn_fs_base_LDFLAGS])
1010251881SpeterAC_SUBST([libsvn_fs_fs_LDFLAGS])
1011251881SpeterAC_SUBST([libsvn_fs_util_LDFLAGS])
1012251881SpeterAC_SUBST([libsvn_ra_LDFLAGS])
1013251881SpeterAC_SUBST([libsvn_ra_local_LDFLAGS])
1014251881SpeterAC_SUBST([libsvn_ra_serf_LDFLAGS])
1015251881SpeterAC_SUBST([libsvn_ra_svn_LDFLAGS])
1016251881SpeterAC_SUBST([libsvn_repos_LDFLAGS])
1017251881SpeterAC_SUBST([libsvn_subr_LDFLAGS])
1018251881SpeterAC_SUBST([libsvn_wc_LDFLAGS])
1019251881Speter
1020251881Speter
1021251881SpeterAC_ARG_ENABLE(maintainer-mode,
1022251881SpeterAS_HELP_STRING([--enable-maintainer-mode],
1023251881Speter               [Turn on debugging and very strict compile-time warnings]),
1024251881Speter[
1025251881Speter    if test "$enableval" = "yes" ; then
1026251881Speter      if test "$enable_debugging" = "no" ; then
1027251881Speter        AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
1028251881Speter      fi
1029251881Speter      enable_debugging=yes
1030251881Speter
1031251881Speter      dnl Enable some extra warnings. Put these before the user's flags
1032251881Speter      dnl so the user can specify flags that override these.
1033251881Speter      if test "$GCC" = "yes"; then
1034251881Speter        AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
1035251881Speter
1036251881Speter        dnl some additional flags that can be handy for an occasional review,
1037251881Speter        dnl but throw too many warnings in svn code, of too little importance,
1038251881Speter        dnl to keep these enabled. Remove the "dnl" to do a run with these
1039251881Speter        dnl switches enabled.
1040299742Sdim        dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default"
1041251881Speter
1042251881Speter        dnl Add each of the following flags only if the C compiler accepts it.
1043251881Speter        CFLAGS_KEEP="$CFLAGS"
1044251881Speter        CFLAGS=""
1045251881Speter
1046251881Speter        SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
1047251881Speter        SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1048251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1049251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1050251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1051251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1052251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1053251881Speter        SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1054299742Sdim        SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations])
1055251881Speter
1056299742Sdim        CMAINTAINERFLAGS="$CFLAGS"
1057251881Speter        CFLAGS="$CFLAGS_KEEP"
1058251881Speter
1059251881Speter        dnl Add flags that all versions of GCC (should) support
1060299742Sdim        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 -Wbad-function-cast $CMAINTAINERFLAGS"
1061251881Speter      fi
1062251881Speter      if test "$GXX" = "yes"; then
1063251881Speter        AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1064251881Speter
1065251881Speter        dnl Add each of the following flags only if the C++ compiler accepts it.
1066251881Speter        CXXFLAGS_KEEP="$CXXFLAGS"
1067251881Speter        CXXFLAGS=""
1068251881Speter
1069251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1070251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1071251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1072251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1073251881Speter
1074299742Sdim        CXXMAINTAINERFLAGS="$CXXFLAGS"
1075251881Speter        CXXFLAGS="$CXXFLAGS_KEEP"
1076251881Speter
1077251881Speter        dnl Add flags that all versions of G++ (should) support
1078251881Speter        CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1079251881Speter      fi
1080251881Speter    fi
1081251881Speter])
1082251881Speter
1083251881Speterif test "$enable_debugging" = "yes" ; then
1084251881Speter  dnl At the moment, we don't want optimization, because we're
1085251881Speter  dnl debugging. Unless optiization was explicitly enabled.
1086251881Speter  if test "$enable_optimization" != "yes"; then
1087251881Speter    AC_MSG_NOTICE([Disabling optimizations for debugging])
1088251881Speter    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1089251881Speter    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1090251881Speter  fi
1091251881Speter  dnl Add debugging flags, unless they were set by the user
1092251881Speter  if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1093251881Speter    AC_MSG_NOTICE([Enabling debugging for C])
1094251881Speter    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1095251881Speter    SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1096251881Speter    SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1097251881Speter    SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1098251881Speter      SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1099251881Speter        SVN_CFLAGS_ADD_IFELSE([-g])])])
1100251881Speter  fi
1101251881Speter  if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1102251881Speter    AC_MSG_NOTICE([Enabling debugging for C++])
1103251881Speter    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1104251881Speter    SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1105251881Speter    SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1106251881Speter    SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1107251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1108251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1109251881Speter  fi
1110251881Speter  dnl SVN_DEBUG enables specific features for developer builds
1111251881Speter  dnl AP_DEBUG enables specific (Apache) features for developer builds
1112251881Speter  CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1113251881Speter  CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1114251881Speterelif test "$enable_debugging" = "no" ; then
1115251881Speter  AC_MSG_NOTICE([Disabling debugging])
1116251881Speter  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1117251881Speter  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1118251881Speter  dnl Compile with NDEBUG to get rid of assertions
1119251881Speter  CFLAGS="$CFLAGS -DNDEBUG"
1120251881Speter  CXXFLAGS="$CXXFLAGS -DNDEBUG"
1121251881Speter# elif test "$enable_debugging" = "maybe" ; then
1122251881Speter#   # do nothing
1123251881Speterfi
1124251881Speter
1125251881Speterif test "$enable_optimization" = "yes"; then
1126251881Speter  dnl Add optimization flags, unless they were set by the user
1127251881Speter  if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1128251881Speter    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1129251881Speter    if test "$enable_debugging" = "yes"; then
1130251881Speter      AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1131251881Speter      SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1132251881Speter        SVN_CFLAGS_ADD_IFELSE([-O])])
1133251881Speter    else
1134251881Speter      AC_MSG_NOTICE([Enabling optimizations for C])
1135251881Speter      SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1136251881Speter        SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1137251881Speter          SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1138251881Speter            SVN_CFLAGS_ADD_IFELSE([-O])])])])
1139251881Speter      SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1140251881Speter      SVN_CFLAGS_ADD_IFELSE([-flto])
1141251881Speter    fi
1142251881Speter  fi
1143251881Speter  if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1144251881Speter    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1145251881Speter    if test "$enable_debugging" = "yes"; then
1146251881Speter      AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1147251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1148251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-O])])
1149251881Speter    else
1150251881Speter      AC_MSG_NOTICE([Enabling optimizations for C++])
1151251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1152251881Speter        SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1153251881Speter          SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1154251881Speter            SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1155251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1156251881Speter      SVN_CXXFLAGS_ADD_IFELSE([-flto])
1157251881Speter    fi
1158251881Speter  fi
1159251881Speterelif test "$enable_optimization" = "no"; then
1160251881Speter  dnl Remove all optimization flags
1161251881Speter  AC_MSG_NOTICE([Disabling optimizations])
1162251881Speter  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1163251881Speter  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1164251881Speter# elif test "$enable_optimization" = "maybe" ; then
1165251881Speter#   # do nothing
1166251881Speterfi
1167251881Speter
1168253734Speterdnl Dump the current compiler options
1169253734SpeterAC_MSG_NOTICE([C compiler flags: $CFLAGS])
1170253734SpeterAC_MSG_NOTICE([    user-defined: $CUSERFLAGS])
1171253734SpeterAC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1172253734SpeterAC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1173253734SpeterAC_MSG_NOTICE([      user-defined: $CXXUSERFLAGS])
1174253734SpeterAC_MSG_NOTICE([   maintainer-mode: $CXXMAINTAINERFLAGS])
1175251881Speter
1176251881SpeterAC_ARG_ENABLE(full-version-match,
1177251881SpeterAS_HELP_STRING([--disable-full-version-match],
1178251881Speter               [Disable the full version match rules when checking
1179251881Speter                Subversion library compatibility.]),
1180251881Speter[
1181251881Speter    if test "$enableval" = "no" ; then
1182251881Speter      AC_MSG_NOTICE([Disabling svn full version matching])
1183251881Speter      AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1184251881Speter                [Defined if the full version matching rules are disabled])
1185251881Speter    fi
1186251881Speter])
1187251881Speter
1188251881SpeterAC_ARG_WITH(editor,
1189251881SpeterAS_HELP_STRING([--with-editor=PATH],
1190251881Speter               [Specify a default editor for the subversion client.]),
1191251881Speter[
1192251881Speter
1193251881Speter    if test "$withval" = "yes" ; then
1194251881Speter      AC_MSG_ERROR([--with-editor requires an argument.])
1195251881Speter    else
1196251881Speter      SVN_CLIENT_EDITOR=$withval
1197251881Speter      AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1198251881Speter                         [The path of a default editor for the client.])
1199251881Speter
1200251881Speter    fi
1201251881Speter
1202251881Speter])
1203251881Speter
1204251881SpeterSVN_LIB_Z
1205251881Speter
1206251881SpeterMOD_ACTIVATION=""
1207251881SpeterAC_ARG_ENABLE(mod-activation,
1208251881SpeterAS_HELP_STRING([--enable-mod-activation],
1209251881Speter               [Enable mod_dav_svn in httpd.conf]),
1210251881Speter[
1211251881Speter    if test "$enableval" = "yes" ; then
1212251881Speter      MOD_ACTIVATION="-a"
1213251881Speter      AC_MSG_NOTICE([Enabling apache module activation])
1214251881Speter    else
1215251881Speter      AC_MSG_NOTICE([Disabling apache module activation])
1216251881Speter    fi
1217251881Speter])
1218251881SpeterAC_SUBST(MOD_ACTIVATION)
1219251881Speter
1220251881Speter
1221251881Speter
1222251881SpeterAC_ARG_ENABLE(gcov,
1223251881SpeterAC_HELP_STRING([--enable-gcov],
1224251881Speter               [Turn on gcov coverage testing (GCC only).]),
1225251881Speter[
1226251881Speter    if test "$enableval" = "yes" ; then
1227251881Speter      dnl Probably other compilers support something similar;
1228251881Speter      dnl feel free to extend this to include them.
1229251881Speter      if test "$GCC" = "yes"; then
1230251881Speter        if test "$svn_enable_shared" = "yes" ; then
1231251881Speter          AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1232251881Speter                        recommend also using --enable-all-static).])
1233251881Speter        fi
1234251881Speter        if test ! "$enable_all_static" = "yes" ; then
1235251881Speter          AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1236251881Speter        fi
1237251881Speter        AC_MSG_NOTICE([Enabling gcov coverage testing.])
1238251881Speter        CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1239251881Speter        CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1240251881Speter      else
1241251881Speter        AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1242251881Speter      fi
1243251881Speter    fi
1244251881Speter])
1245251881Speter
1246251881SpeterAC_ARG_ENABLE(gprof,
1247251881SpeterAS_HELP_STRING([--enable-gprof],
1248251881Speter               [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1249251881Speter[
1250251881Speter    if test "$enableval" = "yes" ; then
1251251881Speter      dnl Probably other compilers support -pg or something similar;
1252251881Speter      dnl feel free to extend this to include them.
1253251881Speter      if test "$GCC" = "yes"; then
1254251881Speter        if test "$svn_enable_shared" = "yes" ; then
1255251881Speter          AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1256251881Speter                        recommend also using --enable-all-static).])
1257251881Speter        fi
1258251881Speter        if test ! "$enable_all_static" = "yes" ; then
1259251881Speter          AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1260251881Speter        fi
1261251881Speter        AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1262251881Speter        CFLAGS="$CFLAGS -pg"
1263251881Speter        CXXFLAGS="$CXXFLAGS -pg"
1264251881Speter        LT_LDFLAGS="$LT_LDFLAGS -pg"
1265251881Speter      else
1266251881Speter        AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1267251881Speter      fi
1268251881Speter    fi
1269251881Speter])
1270251881Speter
1271251881Speter
1272251881Speter# Scripting and Bindings languages
1273251881Speter
1274251881Speter# Python: Used for testsuite, and bindings
1275251881Speter
1276251881Speter
1277251881SpeterPYTHON="`$abs_srcdir/build/find_python.sh`"
1278251881Speterif test -z "$PYTHON"; then
1279299742Sdim  AC_MSG_WARN([Python 2.7 or later is required to run the testsuite])
1280251881Speter  AC_MSG_WARN([or to use the Subversion Python bindings])
1281251881Speter  AC_MSG_WARN([])
1282251881Speter  AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1283251881Speter  AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1284251881Speter  AC_MSG_WARN([to the Python executable, and re-run configure])
1285251881Speterfi
1286251881SpeterAC_PATH_PROGS(PYTHON, "$PYTHON", none)
1287251881Speter
1288251881Speter# The minimum version for the JVM runtime for our Java bytecode.
1289299742SdimJAVA_OLDEST_WORKING_VER='1.6'
1290251881Speter# SVN_CHECK_JDK sets $JAVA_CLASSPATH
1291251881SpeterSVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1292251881Speter
1293251881SpeterAC_PATH_PROG(PERL, perl, none)
1294251881Speter
1295251881Speterif test -n "$RUBY"; then
1296251881Speter  AC_PATH_PROG(RUBY, "$RUBY", none)
1297251881Speterelse
1298289166Speter  AC_PATH_PROGS(RUBY, ruby ruby1.8 ruby18 ruby1.9 ruby1 ruby1.9.3 ruby193 ruby2.0 ruby2.1, none)
1299251881Speterfi
1300251881Speterif test "$RUBY" != "none"; then
1301251881Speter  AC_MSG_CHECKING([rb_hash_foreach])
1302251881Speter  if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1303251881Speter    AC_MSG_RESULT([yes])
1304251881Speter    if test -n "$RDOC"; then
1305251881Speter      AC_PATH_PROG(RDOC, "$RDOC", none)
1306251881Speter    else
1307289166Speter      AC_PATH_PROGS(RDOC, rdoc rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2.0 rdoc2.1, none)
1308251881Speter    fi
1309251881Speter    AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1310251881Speter    svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1311251881Speter    ])
1312251881Speter    RUBY_MAJOR="$svn_cv_ruby_major"
1313251881Speter
1314251881Speter    AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1315251881Speter    svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1316251881Speter    ])
1317251881Speter    RUBY_MINOR="$svn_cv_ruby_minor"
1318251881Speter
1319251881Speter    AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1320251881Speter    svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1321251881Speter    ])
1322251881Speter    RUBY_TEENY="$svn_cv_ruby_teeny"
1323251881Speter    
1324251881Speter    AC_SUBST(RUBY_MAJOR)
1325251881Speter    AC_SUBST(RUBY_MINOR)
1326251881Speter    AC_SUBST(RUBY_TEENY)
1327251881Speter    if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1328251881Speter      # Disallow Ruby between 1.8.7 and 1.9.3
1329251881Speter      RUBY="none"
1330251881Speter      AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1331251881Speter      AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
1332251881Speter    fi
1333251881Speter  else
1334251881Speter    AC_MSG_RESULT([no])
1335251881Speter    RUBY="none"
1336251881Speter    AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1337251881Speter    AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1338251881Speter    AC_MSG_WARN([Subversion Ruby bindings])
1339251881Speter    AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1340251881Speter  fi
1341251881Speterfi
1342251881Speter
1343251881SpeterSVN_CHECK_SWIG
1344251881Speter
1345251881SpeterSVN_CHECK_CTYPESGEN
1346251881Speter
1347251881Speterdnl decide whether we want to link against the RA/FS libraries
1348251881SpeterAC_ARG_ENABLE(runtime-module-search,
1349251881SpeterAS_HELP_STRING([--enable-runtime-module-search],
1350251881Speter               [Turn on dynamic loading of RA/FS libraries including
1351251881Speter                third-party FS libraries]),
1352251881Speter[
1353251881Speter    if test "$enableval" = "yes"; then
1354251881Speter      use_dso=yes
1355251881Speter      if test "$svn_enable_shared" = "no"; then
1356251881Speter        AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1357251881Speter      fi
1358251881Speter      AC_DEFINE(SVN_USE_DSO, 1,
1359251881Speter                [Defined if svn should try to load DSOs])
1360251881Speter    fi
1361251881Speter])
1362251881Speter
1363251881Speterif test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1364251881Speter  AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
1365251881Speter      [Defined if libsvn_client should link against libsvn_ra_local])
1366251881Speter  svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1367251881Speter  svn_ra_lib_install_deps="install-ramod-lib"
1368251881Speter  svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1369251881Speter
1370251881Speter  AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
1371251881Speter      [Defined if libsvn_client should link against libsvn_ra_svn])
1372251881Speter  svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1373251881Speter  svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1374251881Speter
1375251881Speter  if test "$svn_lib_serf" = "yes"; then
1376251881Speter    AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SERF, 1,
1377251881Speter          [Defined if libsvn_client should link against libsvn_ra_serf])
1378251881Speter    svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1379251881Speter    svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1380251881Speter    svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1381251881Speter  fi
1382251881Speter
1383251881Speter  SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1384251881Speter  SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1385251881Speter  SVN_RA_LIB_LINK=$svn_ra_lib_link
1386251881Speter
1387251881Speter  AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1388251881Speter      [Defined if libsvn_fs should link against libsvn_fs_fs])
1389251881Speter  svn_fs_lib_deps="\$(FS_FS_DEPS)"
1390251881Speter  svn_fs_lib_install_deps="install-fsmod-lib"
1391251881Speter  svn_fs_lib_link="\$(FS_FS_LINK)"
1392251881Speter
1393299742Sdim  AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1,
1394299742Sdim      [Defined if libsvn_fs should link against libsvn_fs_x])
1395299742Sdim  svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)"
1396299742Sdim  svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)"
1397299742Sdimdnl  FSFS already installs fsmod
1398299742Sdimdnl  svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib"
1399299742Sdim
1400251881Speter  if test "$svn_lib_berkeley_db" = "yes"; then
1401251881Speter  AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1402251881Speter      [Defined if libsvn_fs should link against libsvn_fs_base])
1403251881Speter    svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1404251881Speter    svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1405251881Speter    svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1406251881Speter  fi
1407251881Speter
1408251881Speter  SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1409251881Speter  SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1410251881Speter  SVN_FS_LIB_LINK=$svn_fs_lib_link
1411251881Speterfi
1412251881Speter
1413251881SpeterAC_SUBST(SVN_RA_LIB_DEPS)
1414251881SpeterAC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1415251881SpeterAC_SUBST(SVN_RA_LIB_LINK)
1416251881SpeterAC_SUBST(SVN_FS_LIB_DEPS)
1417251881SpeterAC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1418251881SpeterAC_SUBST(SVN_FS_LIB_LINK)
1419251881Speter
1420251881Speter# ==== JavaHL ================================================================
1421251881Speter
1422251881Speterdnl Possibly compile JavaHL
1423251881Speterdo_javahl_build=no
1424251881SpeterAC_ARG_ENABLE(javahl,
1425251881Speter  AS_HELP_STRING([--enable-javahl],
1426251881Speter             [Enable compilation of Java high-level bindings (requires C++)]),
1427251881Speter  [ if test "$enableval" = "yes" ; then
1428251881Speter        do_javahl_build="yes"
1429251881Speter    fi
1430251881Speter  ])
1431251881Speter
1432251881SpeterJAVAHL_OBJDIR=""
1433251881SpeterINSTALL_EXTRA_JAVAHL_LIB=""
1434251881SpeterFIX_JAVAHL_LIB=""
1435251881SpeterJAVAHL_TESTS_TARGET=""
1436251881SpeterJAVAHL_COMPAT_TESTS_TARGET=""
1437251881SpeterLT_CXX_LIBADD=""
1438251881Speterif test "$do_javahl_build" = "yes"; then
1439251881Speter  dnl Check for suitable JDK
1440251881Speter  if test "$JDK_SUITABLE" = "no"; then
1441251881Speter    AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK. 
1442251881Speter                  Please specify a suitable JDK using the --with-jdk option.])
1443251881Speter  fi
1444251881Speter  
1445251881Speter  dnl The temporary directory where libtool compiles libsvnjavahl.
1446251881Speter  JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1447251881Speter  
1448251881Speter  os_arch=`uname`
1449251881Speter  if test "$os_arch" = "Darwin"; then
1450251881Speter    dnl On Darwin, JNI libs must be installed as .jnilib
1451251881Speter    INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1452251881Speter    FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1453251881Speter  fi
1454251881Speter  # This segment (and the rest of r10800) is very likely unnecessary
1455251881Speter  # with libtool 1.5, which automatically adds libstdc++ as a
1456251881Speter  # dependency to the C++ libraries it builds.  So at some future time
1457251881Speter  # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1458251881Speter  # it.
1459251881Speter  AC_MSG_CHECKING([for additional flags to link C++ libraries])
1460251881Speter  if test "x$ac_compiler_gnu" = "xyes"; then
1461299742Sdim    case "$host" in
1462299742Sdim      *freebsd10*)
1463299742Sdim        AC_MSG_RESULT([none needed])
1464299742Sdim      ;;
1465299742Sdim      *)
1466299742Sdim        LT_CXX_LIBADD="-lstdc++"
1467299742Sdim        AC_MSG_RESULT([$LT_CXX_LIBADD])
1468299742Sdim      ;;
1469299742Sdim    esac
1470251881Speter  else
1471251881Speter    AC_MSG_RESULT([none needed])
1472251881Speter  fi
1473251881Speterfi
1474251881SpeterAC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1475251881SpeterAC_SUBST(JAVAHL_OBJDIR)
1476251881SpeterAC_SUBST(FIX_JAVAHL_LIB)
1477251881SpeterAC_SUBST(LT_CXX_LIBADD)
1478251881Speter
1479251881SpeterAC_ARG_WITH(junit,
1480251881SpeterAS_HELP_STRING([--with-junit=PATH],
1481251881Speter               [Specify a path to the junit JAR file.]),
1482251881Speter[
1483251881Speter    if test "$withval" != "no"; then
1484251881Speter      if test -n "$JAVA_CLASSPATH"; then
1485251881Speter        JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1486251881Speter      else
1487251881Speter        JAVA_CLASSPATH="$withval"
1488251881Speter      fi
1489251881Speter      JAVAHL_TESTS_TARGET="javahl-tests"
1490251881Speter      JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1491251881Speter    fi
1492251881Speter])
1493251881SpeterAC_SUBST(JAVA_CLASSPATH)
1494251881SpeterAC_SUBST(JAVAHL_TESTS_TARGET)
1495251881SpeterAC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1496251881Speter
1497251881Speter# ==== Miscellaneous bits ====================================================
1498251881Speter
1499299742SdimAC_CHECK_HEADERS([stdbool.h inttypes.h])
1500299742Sdim
1501251881Speter# Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1502251881Speter### I think we get this flag from APR, so the fix probably belongs there
1503251881Speterif test "$CC" = "clang"; then
1504251881Speter  SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1505251881Speterfi
1506251881Speter
1507262253Speter# Need to strip '-no-cpp-precomp' from CPPFLAGS for SWIG as well.
1508262253SpeterSWIG_CPPFLAGS="$CPPFLAGS"
1509262253SpeterSVN_STRIP_FLAG(SWIG_CPPFLAGS, [-no-cpp-precomp ])
1510309512SpeterSVN_STRIP_FLAG(SWIG_CPPFLAGS, [-Wdate-time ])
1511262253SpeterAC_SUBST([SWIG_CPPFLAGS])
1512262253Speter
1513251881Speterdnl Since this is used only on Unix-y systems, define the path separator as '/'
1514251881SpeterAC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1515251881Speter        [Defined to be the path separator used on your local filesystem])
1516251881Speter
1517251881SpeterAC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1518251881Speter        [Defined to be the null device for the system])
1519251881Speter
1520251881SpeterDEFAULT_FS_TYPE="fsfs"
1521251881SpeterAC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1522251881Speter                   [The fs type to use by default])
1523251881Speter
1524251881SpeterDEFAULT_HTTP_LIBRARY="serf"
1525251881SpeterAC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1526251881Speter                   [The http library to use by default])
1527251881Speter
1528251881Speter# BSD/OS (BSDi) needs to use a different include syntax in Makefile
1529251881SpeterINCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1530251881Spetercase "$host" in
1531251881Speter  *bsdi*)
1532251881Speter    # Check whether they've installed GNU make
1533251881Speter    if ! make --version > /dev/null 2>&1; then 
1534251881Speter      # BSDi make
1535251881Speter      INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1536251881Speter    fi
1537251881Speter    ;;
1538251881Speteresac
1539251881SpeterAC_SUBST(INCLUDE_OUTPUTS)
1540251881Speter
1541251881Speter# ==== Detection complete - output and run config.status =====================
1542251881Speter
1543251881SpeterAC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1544251881SpeterAC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1545251881Speter                   [svn_cf=subversion/svn_private_config.h;
1546251881Speter                    $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1547251881Speter                    cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1548251881Speter                    rm -f $svn_cf.tmp.new $svn_cf.tmp],
1549251881Speter                   [SED="$SED"
1550251881Speter                    SVN_DB_HEADER="$SVN_DB_HEADER"])
1551251881SpeterAC_CONFIG_FILES([Makefile])
1552251881Speter
1553299742Sdim# Create pkg-config .pc files from .pc.in files
1554299742Sdimfor pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do
1555299742Sdim  pc_file=${pc_in_file#${abs_srcdir}/}
1556299742Sdim  pc_file=${pc_file%.in}
1557299742Sdim  AC_CONFIG_FILES([${pc_file}])
1558299742Sdimdone
1559299742Sdim
1560251881SpeterSVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1561251881SpeterSVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1562251881SpeterSVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1563251881Speterif test -e packages/solaris/pkginfo.in; then
1564251881Speter  SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1565251881Speterfi
1566251881SpeterAC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1567251881Speter
1568251881Speter# Ensure that SWIG is checked after reconfiguration.
1569251881Speterrm -f .swig_checked
1570251881Speter
1571251881Speterdnl Provide ${host} for use in compiled code (for svn --version)
1572251881SpeterAC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1573251881Speter                   [Defined to the config.guess name of the build system])
1574251881Speter
1575251881Speterdnl Provide ${target} for use in compiled code (for user-agent string)
1576251881SpeterAC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1577251881Speter                   [Defined to the config.guess name of the build target])
1578251881Speter
1579251881SpeterAC_OUTPUT
1580251881Speter
1581251881Speter# ==== Print final messages to user ==========================================
1582251881Speter
1583251881Speterdnl Configure is long - users tend to miss warnings printed during it.
1584251881Speterdnl Hence, print a warnings about what we did and didn't configure at the 
1585251881Speterdnl end, where people will actually see them.
1586251881Speter
1587253734Speterif test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1588253734Speter  AC_MSG_WARN([We have configured without BDB filesystem support
1589251881Speter
1590251881Speter
1591253734SpeterBerkeley DB 6 was found, but not used.  Please re-run configure (see
1592253734Speter./config.nice) with the '--enable-bdb6' flag to use it,
1593253734Speteror explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1594253734Speterto silence this warning.
1595251881Speter
1596253734SpeterPlease note that some versions of Berkeley DB 6+ are under the GNU Affero
1597253734SpeterGeneral Public License, version 3:
1598253734Speterhttps://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1599251881Speter
1600253734SpeterThe AGPL-3.0 licence may impose special requirements for making available
1601253734Spetersource code of server-side software.  The text of the licence is:
1602253734Speterhttps://www.gnu.org/licenses/agpl-3.0.html
1603253734Speterhttp://opensource.org/licenses/AGPL-3.0
1604253734Speter
1605253734SpeterThe Berkeley DB backend to Subversion is deprecated; see
1606253734Speterhttp://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1607253734Speter
1608253734SpeterThe Subversion developers have not tested Subversion with Berkeley DB 6 for
1609253734Spetertechnical problems or bugs.
1610251881Speter])
1611251881Speterfi
1612