source: trunk/configure.ac @ 847

Last change on this file since 847 was 847, checked in by Peter Johansson, 14 years ago

updating copyrights

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 10.8 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 847 2009-11-17 01:38:52Z peter $
4##
5## If you grabbed the source from subversion you should, at top-level,
6## execute:
7##          ./bootstrap
8## To push subsequent changes of this file into the build scripts you
9## must issue:
10##          autoreconf
11
12# Copyright (C) 2005 Jari Häkkinen, Peter Johansson
13# Copyright (C) 2006 Jari Häkkinen
14# Copyright (C) 2007, 2008, 2009 Jari Häkkinen, Peter Johansson
15#
16# This file is part of svndigest, http://dev.thep.lu.se/svndigest
17#
18# svndigest is free software; you can redistribute it and/or modify it
19# under the terms of the GNU General Public License as published by
20# the Free Software Foundation; either version 3 of the License, or
21# (at your option) any later version.
22#
23# svndigest is distributed in the hope that it will be useful, but
24# WITHOUT ANY WARRANTY; without even the implied warranty of
25# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26# General Public License for more details.
27#
28# You should have received a copy of the GNU General Public License
29# along with svndigest. If not, see <http://www.gnu.org/licenses/>.
30
31AC_PREREQ(2.61)
32
33m4_include([m4/version.m4])
34AC_INIT([svndigest],[SVNDIGEST_VERSION],[jari@thep.lu.se],,
35        [http://dev.thep.lu.se/svndigest])
36AC_CONFIG_SRCDIR([lib/File.h])
37AC_CONFIG_AUX_DIR([autotools])
38dnl arg below should be the same as in Makefile.am
39AC_CONFIG_MACRO_DIR([m4])
40AC_PREFIX_DEFAULT([/usr/local])
41
42AC_SUBST([SVNDIGEST_MAJOR_VERSION], [MAJOR_VERSION])
43AC_SUBST([SVNDIGEST_MINOR_VERSION], [MINOR_VERSION])
44AC_SUBST([SVNDIGEST_PATCH_VERSION], [PATCH_VERSION])
45
46AC_DEFINE([DEV_BUILD],[SVNDIGEST_DEV_BUILD],
47          [true if dev build (version ends with pre)])
48AC_DEFINE([SVNDIGEST_MAJOR_VERSION], [MAJOR_VERSION],
49                    [Define to the svndigest major version])
50AC_DEFINE([SVNDIGEST_MINOR_VERSION], [MINOR_VERSION],
51                    [Define to the svndigest minor version])
52AC_DEFINE([SVNDIGEST_PATCH_VERSION], [PATCH_VERSION],
53                    [Define to the svndigest patch version])
54
55AC_CONFIG_HEADER([config.h])
56AM_INIT_AUTOMAKE([1.10 std-options check-news])
57
58# Set default programming language
59AC_LANG(C++)
60
61# propagate selected configure variables to DISTCHECK_CONFIGURE_FLAGS
62for var in CPPFLAGS CXX CXXFLAGS CXXCPP LDFLAGS LIBS; do
63  eval isset=\${$var+set}
64  if test "$isset" = 'set' ; then
65    eval val=$`echo $var`
66    DISTCHECK_CONFIGURE_FLAGS="${DISTCHECK_CONFIGURE_FLAGS}'${var}=${val}' "
67  fi
68done
69AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
70
71# Let user overide default CXXFLAGS
72if test "${CXXFLAGS+set}" != set; then
73  CXXFLAGS=""  # Setting CXXFLAGS here to prevent expansion in AC_PROG_CXX
74fi
75
76# Checks for programs.
77AC_PROG_CXXCPP
78AC_PROG_CXX
79AC_PROG_INSTALL
80AC_PROG_RANLIB
81AC_PROG_SED
82AC_PATH_PROG([HELP2MAN], [help2man], [no])
83AM_CONDITIONAL([HAVE_HELP2MAN], [test x$HELP2MAN != xno])
84AC_PATH_PROG([GNUPLOT],[gnuplot],[no])
85AC_DEFINE_UNQUOTED([GNUPLOT_PATH], ["$GNUPLOT"],
86                   [defined to gnuplot path (or no if gnuplot was not found)])
87
88# Save FLAGS
89SAVE_CPPFLAGS="$CPPFLAGS"
90SAVE_CXXFLAGS="$CXXFLAGS"
91SAVE_LDFLAGS="$LDFLAGS"
92SAVE_LIBS="$LIBS"
93
94# -Wno-long-long is needed to suppress compiler diagnostics regarding
95# using extension beyond the C++ standard (usage of non C++ standard
96# 'long long' types).
97YAT_CXX_ADD_FLAG([SD_CXXFLAGS],[-pedantic -Wno-long-long])
98AC_TYPE_LONG_LONG_INT
99AS_IF([test x$ac_cv_type_long_long_int = xno],
100      [AC_MSG_ERROR([compiler does not support long long int])]
101     )
102
103AC_ARG_ENABLE([debug],
104  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])])
105
106AS_IF([test x$enable_debug = xyes],
107  [YAT_CXX_ADD_FLAG([SD_CXXFLAGS],[-g -O])],
108  [YAT_CPP_ADD_FLAG([SD_CPPFLAGS],[-DNDEBUG])
109   YAT_CXX_ADD_FLAG([SD_CXXFLAGS],[-O3])])
110
111# enable svn-support
112AC_ARG_ENABLE([svn-support],
113              [AS_HELP_STRING([--enable-svn-support],
114                              [enable svn support - used by maintainer])])
115
116AS_IF([test "x$enable_svn_support" = xyes],
117      [AS_IF([test -d $srcdir/.svn], [],
118             [AC_MSG_ERROR([svn support cannot be enabled: `$srcdir' is not an svn wc.])])])
119AM_CONDITIONAL([ENABLE_SVN_SUPPORT], [test "x$enable_svn_support" = "xyes"])
120
121# Apache Portable Runtime (APR) API checks
122APR_FIND_APR(,,1,[1 0])
123AS_IF([test "${with_apr+set}" = set],
124    [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-apr=$with_apr"]
125)
126if test "$apr_found" = "yes" ; then
127    SD_LIBS="`$apr_config --libs` $SD_LIBS"
128    apr_link_ld=`$apr_config --link-ld`
129    for i in $apr_link_ld; do
130      AS_IF([test ${i:0:2} = "-l"],[SD_LIBS="$i $SD_LIBS"],
131            [YAT_LD_ADD_FLAG([SD_LDFLAGS], [$i])])
132    done
133    YAT_CPP_ADD_FLAG([SD_CPPFLAGS],[`$apr_config --includes --cppflags`])
134fi
135
136# Subversion API checks
137svn_found="yes"
138AC_ARG_WITH(svn,
139  [AS_HELP_STRING([--with-svn=DIR],[prefix for svn developer files [[PREFIX]]])],
140  [ DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-svn=$withval"
141    YAT_LD_ADD_FLAG([SD_LDFLAGS], [-L$withval/lib])
142    YAT_CPP_ADD_FLAG([SD_CPPFLAGS], [-I$withval/include])
143  ])
144
145
146
147# Use SD_*FLAGS in tests
148CPPFLAGS="$SD_CPPFLAGS $CPPFLAGS"
149CXXFLAGS="$SD_CXXFLAGS $CXXFLAGS"
150LDFLAGS="$SD_LDFLAGS $LDFLAGS"
151LIBS="$SD_LIBS $LIBS"
152
153AC_CHECK_HEADER([apr_allocator.h],,apr_found="no")
154AC_CHECK_HEADER([subversion-1/svn_types.h],,svn_found="no")
155AC_SEARCH_LIBS([svn_cmdline_setup_auth_baton],[svn_subr-1],
156               [SD_LIBS="-lsvn_subr-1 $SD_LIBS"],svn_found="no")
157AC_SEARCH_LIBS([svn_ra_initialize],[svn_ra-1],
158               [SD_LIBS="-lsvn_ra-1 $SD_LIBS"],svn_found="no")
159AC_SEARCH_LIBS([svn_wc_adm_open3],[svn_wc-1],
160               [SD_LIBS="-lsvn_wc-1 $SD_LIBS"],svn_found="no")
161AC_SEARCH_LIBS([svn_diff_file_options_create],[svn_diff-1],
162               [SD_LIBS="-lsvn_diff-1 $SD_LIBS"],svn_found="no")
163AC_SEARCH_LIBS([svn_client_log3],[svn_client-1],
164               [SD_LIBS="-lsvn_client-1 $SD_LIBS"],svn_found="no")
165
166# Export flags
167AC_SUBST([SVNDIGEST_CPPFLAGS], $SD_CPPFLAGS)
168AC_SUBST([SVNDIGEST_CXXFLAGS], $SD_CXXFLAGS)
169AC_SUBST([SVNDIGEST_LDFLAGS], $SD_LDFLAGS)
170AC_SUBST([SVNDIGEST_LIBS], $SD_LIBS)
171
172# Reset FLAGS
173CPPFLAGS="$SAVE_CPPFLAGS"
174CXXFLAGS="$SAVE_CXXFLAGS"
175LDFLAGS="$SAVE_LDFLAGS"
176LIBS="$SAVE_LIBS"
177
178# check if svnversion is installed
179AC_PATH_PROG([SVNVERSION], [svnversion], [no])
180
181# checking if we build in a subversion WC
182AS_IF([test -d $srcdir/.svn], [wc_found="yes"], [wc_found="no"])
183AM_CONDITIONAL([HAVE_SVN_WC], [test "$wc_found" = "yes"])
184AC_SUBST([wc_found])
185
186# checking if we have test repo
187test_repo_filename=$srcdir/test/repo;
188AS_IF([test -r $test_repo_filename],
189              [AC_DEFINE([HAVE_TEST_REPO],[1],[define if test repo is available])
190               test_repo_found="yes"],
191              [test_repo_found="no"])
192AC_SUBST([test_repo_found])
193AS_IF([test "x$test_repo_found" = xyes],
194      [abs_test_repo=`cd $test_repo_filename && pwd`;
195       AC_SUBST(abs_test_repo)]
196     )
197AC_CONFIG_FILES([test/test_repo.sh], [chmod +x test/test_repo.sh])
198AC_CONFIG_FILES([test/svn_update.sh], [chmod +x test/svn_update.sh])
199AC_CONFIG_FILES([test/check_repo_status.sh],
200                [chmod +x test/check_repo_status.sh])   
201
202
203AC_CONFIG_FILES([Makefile
204                bin/Makefile
205                lib/Makefile
206                lib/yat/Makefile
207                man/Makefile
208                test/environment.h
209                test/Makefile])
210
211AC_CONFIG_HEADER([lib/yat/config_public.h])
212
213# Print failure status information about selected items, and exit if
214# fatal errors were encountered. No output will be created if
215# configure is halted prematurely.
216
217# used to trigger exit before creation of output
218all_reqs_ok="true"
219
220if (test "$wc_found" = "yes"); then
221   if test x$HELP2MAN = xno; then
222     AC_MSG_WARN(m4_text_wrap(m4_normalize([
223       `help2man' is missing on your system.  You will not be
224       able to create the man page. A sound man page should be
225       included in a distribution, and since you will not able
226       to create a complete distribution `make dist' will fail.
227       ]),[                   ],
228          [                             ], 79))
229   fi
230   # svnversion is required when building from svn wc
231   if (test "$svnversion" = "no"); then
232      all_reqs_ok="false";
233      AC_MSG_WARN([dnl
234Cannot find svnversion, which is required when building from a
235subversion working copy. Please install svnversion and make sure it is
236in your search path.]);
237   fi
238   if (test "$test_repo_found" = "no"); then
239      all_reqs_ok="false";
240      AC_MSG_WARN([dnl
241Cannot find test repository (test_repo_filename), which should be
242available when building from a subversion working copy. Try svn
243update in top directory.]);
244   fi
245fi
246
247# Non-existing APR is fatal -- sub-sequent compilation will fail.
248if (test "$apr_found" = "no") ; then
249  AC_MSG_WARN([APR not found. The Apache Portable Runtime
250  (APR) library cannot be found. Please make sure APR is installed
251  and supply the appropriate --with-apr option to 'configure'.])
252  all_reqs_ok="false"
253fi
254
255# Non-existing subversion API is fatal -- sub-sequent compilation will fail.
256if (test "$svn_found" = "no") ; then
257  svn_msg="Subversion API not found. Subversion API libraries cannot
258  be found. Make sure the APIs are installed and supply the
259  appropriate --with-svn option to 'configure'."
260  if (test "$apr_found" = "no") ; then
261    svn_msg="$svn_msg
262    Note, APR was not found. Failure to locate APR affects the search
263    of the subversion API. Please fix the APR problem before trying
264    to resolve the subversion related issues."
265  fi
266  AC_MSG_WARN([$svn_msg])
267  all_reqs_ok="false"
268fi
269
270if test $ac_cv_type_long_long_int != yes ; then
271  AC_MSG_WARN([Compiler $CXX does not support `long long'.
272  svndigest must be compiled with a compiler that supports `long long'.])
273  all_reqs_ok="false"
274fi
275
276if (test "$all_reqs_ok" = "false") ; then
277  AC_MSG_ERROR([Some pre-requisites were not fulfilled, aborting
278  configure. Please consult the 'README' file for more information
279  about what is needed to compile svndigest and refer to above
280  warning messages. Needed files were NOT created.])
281fi
282
283# Create output.
284AC_OUTPUT
285
286# Some more messages.
287AC_MSG_NOTICE([])
288AC_MSG_NOTICE([   Ready to compile the executables of svndigest $VERSION])
289AC_MSG_NOTICE([   The following flags and libs will be used:])
290AC_MSG_NOTICE([   +++++++++++++++++++++++++++++++++++++++++++++++])
291AC_MSG_NOTICE([    Compiler:           $CXX])
292AC_MSG_NOTICE([    Preprocessor flags: $SD_CPPFLAGS $CPPFLAGS])
293AC_MSG_NOTICE([    C++ flags:          $SD_CXXFLAGS $CXXFLAGS])
294AC_MSG_NOTICE([    Linker flags:       $SD_LDFLAGS $LDFLAGS])
295AC_MSG_NOTICE([    LIBS:               $SD_LIBS $LIBS])
296AC_MSG_NOTICE([   +++++++++++++++++++++++++++++++++++++++++++++++])
297AC_MSG_NOTICE([])
298
299# Failure to locate gnuplot is not considered fatal
300if (test "x$GNUPLOT" = "xno") ; then
301  AC_MSG_WARN([Gnuplot was not found. svndigest will compile
302  without gnuplot but will throw an exception at run-time. Please
303  install gnuplot (available for a wide range of operating systems
304  at http://www.gnuplot.info).])
305  AC_MSG_NOTICE([])
306fi
307
308AC_MSG_NOTICE([Now type 'make && make check'.])
Note: See TracBrowser for help on using the repository browser.