source: branches/0.10-stable/configure.ac @ 1575

Last change on this file since 1575 was 1575, checked in by Peter Johansson, 7 years ago

use automake option subdir-objects which puts objects in same dir as source reside; stray change from when we converted to non-recursive Makefile. Triggered by warning from Automake 1.15.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 15.4 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 1575 2015-02-19 00:44:02Z 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, 2010 Jari Häkkinen, Peter Johansson
15# Copyright (C) 2011, 2012, 2015 Peter Johansson
16#
17# This file is part of svndigest, http://dev.thep.lu.se/svndigest
18#
19# svndigest is free software; you can redistribute it and/or modify it
20# under the terms of the GNU General Public License as published by
21# the Free Software Foundation; either version 3 of the License, or
22# (at your option) any later version.
23#
24# svndigest is distributed in the hope that it will be useful, but
25# WITHOUT ANY WARRANTY; without even the implied warranty of
26# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27# General Public License for more details.
28#
29# You should have received a copy of the GNU General Public License
30# along with svndigest. If not, see <http://www.gnu.org/licenses/>.
31
32AC_PREREQ([2.63])
33
34m4_include([m4/version.m4])
35AC_INIT([svndigest], m4_defn([my_VERSION]),
36        [svndigest-users@lists.sourceforge.net],,
37        [http://dev.thep.lu.se/svndigest])
38AC_CONFIG_SRCDIR([lib/File.h])
39AC_CONFIG_AUX_DIR([autotools])
40dnl arg below should be the same as in Makefile.am
41AC_CONFIG_MACRO_DIR([m4])
42AC_PREFIX_DEFAULT([/usr/local])
43
44dnl FIXME remove when we assume autoconf 2.64
45m4_ifndef([AC_PACKAGE_URL],
46          [AC_DEFINE([PACKAGE_URL], ["http://dev.thep.lu.se/svndigest"],
47                     [Define to home page for this package])
48           AC_SUBST([PACKAGE_URL], ["http://dev.thep.lu.se/svndigest"])])
49
50MY_VERSION
51AC_CONFIG_HEADERS([config.h])
52AM_INIT_AUTOMAKE([1.11 color-tests std-options parallel-tests silent-rules
53                  subdir-objects])
54
55# Set default programming language
56AC_LANG([C++])
57
58# propagate selected configure variables to DISTCHECK_CONFIGURE_FLAGS
59for var in CPPFLAGS CXX CXXFLAGS CXXCPP LDFLAGS LIBS; do
60  eval isset=\${$var+set}
61  if test "$isset" = 'set' ; then
62    eval val=$`echo $var`
63    DISTCHECK_CONFIGURE_FLAGS="${DISTCHECK_CONFIGURE_FLAGS}'${var}=${val}' "
64  fi
65done
66AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
67
68# record if CXXFLAGS was set by user for further use below
69AS_IF([test "${CXXFLAGS+set}" = set], [
70  CXXFLAGS_set_by_user=yes
71],[
72  CXXFLAGS_set_by_user=no
73  # set CXXFLAGS to avoid expansion in AC_PROG_CXX
74  CXXFLAGS=
75])
76
77# Checks for programs.
78AC_PROG_CXXCPP
79AC_PROG_CXX
80AC_PROG_RANLIB
81AC_PROG_SED
82# avoid running help2man when cross-compiling (as it involves invoking binaries)
83AS_IF([test x$cross_compiling = xno], [
84  AM_MISSING_PROG([HELP2MAN], [help2man])
85  ], [
86  # user is always right
87  HELP2MAN=${HELP2MAN-:}
88])
89# look for pkg-config
90PKG_PROG_PKG_CONFIG([0.23])
91
92# Save FLAGS
93APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
94APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
95
96AC_TYPE_LONG_LONG_INT
97AS_IF([test x$ac_cv_type_long_long_int = xno],
98      [AC_MSG_ERROR([compiler does not support long long int])]
99     )
100
101AC_ARG_ENABLE([debug],
102  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])],
103  [], [enable_debug=no])
104
105# Set CXXFLAGS depending on whether CXXFLAGS was provided by user and
106# whether we are in debug mode
107AS_IF([test x$enable_debug = xyes], [
108  # in debug we alsways add flags below i.e. we turn on warnings,
109  # debug symbols, and low level of optimisation.
110
111  # -Wno-long-long is needed to suppress compiler diagnostics regarding
112  # using extension beyond the C++ standard (usage of non C++ standard
113  # 'long long' types).
114  YAT_CXX_ADD_FLAG([CXXFLAGS],[-pedantic -Wall -Wno-long-long -g -O])
115],[
116  # in standard mode we set to CXXFLAGS default to '-O3', but only if
117  # CXXFLAGS was not proved by user. If user provided a VALUE FOR
118  # CXXFLAGS we listen to that and leave as is.
119  AS_IF([test x$CXXFLAGS_set_by_user != xyes], [
120    YAT_CXX_ADD_FLAG([CXXFLAGS],[-O3])
121  ])
122])
123
124AC_ARG_ENABLE([assert],
125  [AS_HELP_STRING([--enable-assert], [turn on assertions])])
126
127# if assert not enabled/disabled explicitly, default behaviour is to
128# enable assert in debug mode and disable otherwise
129test "${enable_assert+set}" = set || enable_assert=$enable_debug
130
131# FIXME perhaps we should AC_DEFINE NDEBUG instead but then we need to
132# include config.h in all source files.
133#
134# propagate enable_assert to CPPFLAGS
135AS_IF([test x$enable_assert != xyes],[YAT_CPP_ADD_FLAG([CPPFLAGS],[-DNDEBUG])])
136
137AC_MSG_CHECKING([g++ deprecation attribute])
138AC_COMPILE_IFELSE(
139  [AC_LANG_PROGRAM([[void f() __attribute__ ((deprecated));]],)],
140  [AC_DEFINE([YAT_HAVE_GCC_DEPRECATED], [1],
141             [Define if compiler supports deprecated attribute, as in g++ 4.0])
142   AC_MSG_RESULT([yes])],
143  [AC_MSG_RESULT([no])] )
144
145# Apache Portable Runtime (APR) API checks
146APR_FIND_APR(,,[1],[1 0])
147AS_IF([test "${with_apr+set}" = set],
148    [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-apr=$with_apr"]
149)
150if test "$apr_found" = "yes" ; then
151  APR_LIBS="`$apr_config --libs`"
152  apr_link_ld="`$apr_config --link-ld`"
153  for i in $apr_link_ld; do
154    AS_IF([AS_ECHO([$i]) | grep '^-l' > /dev/null],
155          [APR_LIBS="$i $APR_LIBS"],
156          [YAT_LD_ADD_FLAG([LDFLAGS], [$i])])
157  done
158  YAT_CPP_ADD_FLAG([CPPFLAGS],[`$apr_config --includes --cppflags`])
159  AC_CHECK_HEADER([apr_allocator.h],,[apr_found="no"])
160fi
161AC_SUBST([APR_LIBS])
162
163# Subversion API checks
164svn_found="yes"
165AC_ARG_WITH([svn],
166  [AS_HELP_STRING([--with-svn=DIR],
167                  [prefix for svn developer files])],
168  [ AS_CASE([$withval], [yes|no],
169            [AC_MSG_ERROR([--with-svn requires a directory to be provided])])
170    AS_IF([test -d $with_svn], [],
171          [AC_MSG_ERROR([$with_svn: no such directory])])
172    # transform argument to absolute path
173    with_svn=`cd $with_svn && pwd`
174    DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-svn=$with_svn"
175    YAT_LD_ADD_FLAG([LDFLAGS], [-L$with_svn/lib])
176    YAT_CPP_ADD_FLAG([CPPFLAGS], [-I$with_svn/include])
177  ])
178# svn needs needs apr headers
179AC_CHECK_HEADER([subversion-1/svn_types.h],,[svn_found="no"])
180
181# In some versions, such as 1.7, of Subversion header file `svn_wc.h'
182# does not conform to C++98 and therefore compiling with -pedantic
183# fails. As -pedantic is automatically turned on in --enable-debug
184# mode we need to turn it off -pedantic to allow building with
185# --enable-debug (see ticket #506)
186AS_IF([test x$enable_debug = xyes],
187  [AC_MSG_CHECKING([subversion-1/svn_wc.h usability with -pedantic])
188   AC_COMPILE_IFELSE(
189    [AC_LANG_PROGRAM([@%:@include <subversion-1/svn_wc.h>])],
190    [AC_MSG_RESULT([yes])],
191    [AC_MSG_RESULT([no])
192     CXXFLAGS=`AS_ECHO(["$CXXFLAGS"]) | $SED 's|-pedantic||'`
193     AC_MSG_NOTICE([remove -pedantic from \$CXXFLAGS])
194    ]
195   )
196  ])
197
198save_LIBS=$LIBS
199tmp_LIBS="$APR_LIBS $save_LIBS"
200LIBS=""
201AC_SEARCH_LIBS([svn_cmdline_setup_auth_baton],[svn_subr-1],
202               [], [svn_found="no"], [$tmp_LIBS])
203AC_SEARCH_LIBS([svn_ra_initialize],[svn_ra-1], [], [svn_found="no"],[$tmp_LIBS])
204AC_SEARCH_LIBS([svn_wc_adm_open3],[svn_wc-1], [], [svn_found="no"], [$tmp_LIBS])
205AC_SEARCH_LIBS([svn_diff_file_options_create],[svn_diff-1],[],
206               [svn_found="no"], [$tmp_LIBS])
207AC_SEARCH_LIBS([svn_client_log3],[svn_client-1],,[svn_found="no"], [$tmp_LIBS])
208SVN_LIBS=$LIBS
209LIBS=$save_LIBS
210AC_SUBST([SVN_LIBS])
211
212# PLplot API checks
213# plplot_found can get values: skip, noheader, old, or nolib if an
214# error is detected.
215plplot_found="yes"
216plplot_version=5.9.6
217save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
218AC_ARG_WITH([plplot],
219  [AS_HELP_STRING([--with-plplot=DIR],[prefix for plplot developer files])],
220  [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-plplot=$withval"
221   AS_IF([test "x$withval" = "xno"], [ dnl
222     plplot_found=skip;
223   ], [ dnl
224     AS_IF([test -d $with_plplot], [],
225           [AC_MSG_ERROR([$with_plplot: no such directory])])
226     with_plplot=`cd $with_plplot && pwd`
227     # help pkg-config find .pc file
228     PKG_CONFIG_PATH=$with_plplot/lib/pkgconfig$PATH_SEPARATOR$PKG_CONFIG_PATH
229     export PKG_CONFIG_PATH
230   ])
231  ])
232
233use_plplot_pc="no"
234AS_IF([test "x$plplot_found" = "xyes" && test -n "$PKG_CONFIG"], [
235  AC_MSG_CHECKING([for plplotd-c++.pc])
236  AS_IF([$PKG_CONFIG --exists plplotd-c++], [
237    AC_MSG_RESULT([yes])
238    use_plplot_pc="yes"
239  ],[
240    AC_MSG_RESULT([no])
241    AC_MSG_WARN([cannot find plplotd-c++;
242      please use --with-plplot with appropriate argument to get more accurate
243      configuration.])
244  ])
245])
246
247AS_IF([test "x$plplot_found" = "xyes"], [
248  # copy flags if we have found pc file
249  AS_IF([test "$use_plplot_pc" = "yes"], [
250    # plplot typically returns <prefix>/include/plplot because plplot
251    # people assumes users include header files as <foo.h>. We prefer
252    # including files as <plplot/foo.h> and therefore need to trim off
253    # trailing '/plplot'. Space is included in sed expression to avoid
254    # substituting potential '/plplot' in PREFIX.
255    YAT_CPP_ADD_FLAG([CPPFLAGS],
256             [`$PKG_CONFIG plplotd-c++ --cflags-only-I | sed 's|/plplot | |g'`])
257    YAT_LD_ADD_FLAG([LDFLAGS], [`$PKG_CONFIG plplotd-c++ --libs-only-L`])
258    PLPLOT_LIBS="`$PKG_CONFIG plplotd-c++ --libs-only-l --libs-only-other`"
259  ],[
260    # otherwise guess
261    PLPLOT_LIBS="-lplplotcxxd -lplplotd";
262    AS_IF([test -n "$with_plplot" && test "x$with_plplot" != "xyes"], [
263      YAT_LD_ADD_FLAG([LDFLAGS], [-L$with_plplot/lib])
264      YAT_CPP_ADD_FLAG([CPPFLAGS], [-I$with_plplot/include])
265    ])
266  ])
267])
268
269AS_IF([test "x$plplot_found" = "xyes"], [
270  AC_CHECK_HEADER([plplot/plstream.h], [], [plplot_found="noheader"])
271])
272
273AS_IF([test "x$plplot_found" = "xyes" && test -n "$PKG_CONFIG"], [
274  AC_MSG_CHECKING([plplot version >= $plplot_version])
275  AS_IF([$PKG_CONFIG --atleast-version=$plplot_version plplotd-c++], [
276    AC_MSG_RESULT([yes])
277  ],[
278    have_plplot_version=`$PKG_CONFIG --modversion plplotd-c++`
279    AC_MSG_RESULT([$have_plplot_version])
280    plplot_found="old"
281  ])
282])
283
284AS_IF([test "x$plplot_found" = "xyes"], [
285  save_LIBS=$LIBS
286  LIBS="$PLPLOT_LIBS $LIBS"
287  AC_MSG_CHECKING([for library containing plstream])
288  AC_LINK_IFELSE([AC_LANG_PROGRAM([@%:@include <plplot/plstream.h>],
289                                  [plstream pls(1,1,"svg", "conftest.svg");
290                                   pls.scolbga(255, 255, 255, 0);
291                                  ])],
292                 [AC_MSG_RESULT([yes]);
293                  AC_DEFINE([HAVE_PLPLOT], [1],
294                            [Define to 1 if you have plplot])],
295                 [AC_MSG_RESULT([no])
296                  plplot_found=nolib;])
297  LIBS=$save_LIBS
298])
299# restore variable
300export PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
301AC_SUBST(PLPLOT_LIBS)
302
303# checking if we have test repo
304test_repo_filename=$srcdir/test/repo;
305AS_IF([test -r $test_repo_filename],
306              [AC_DEFINE([HAVE_TEST_REPO],[1],[define if test repo is available])
307               test_repo_found="yes"],
308              [test_repo_found="no"])
309AC_SUBST([test_repo_found])
310AS_IF([test "x$test_repo_found" = xyes],
311      [abs_test_repo=`cd $test_repo_filename && pwd`;
312       AC_SUBST(abs_test_repo)]
313     )
314AC_CONFIG_FILES([test/init.sh])
315AC_CONFIG_FILES([test/svn_update.sh], [chmod +x test/svn_update.sh])
316
317dnl maintainer make rules from yat project
318YAT_SVN_RELEASE
319YAT_SVN_REVISION
320YAT_REVISION_HEADER
321YAT_SVN_RELEASE_YEAR
322
323
324# Restore FLAGS
325APR_RESTORE_THE_ENVIRONMENT([CPPFLAGS], [SVNDIGEST_])
326APR_RESTORE_THE_ENVIRONMENT([CXXFLAGS], [SVNDIGEST_])
327APR_RESTORE_THE_ENVIRONMENT([LDFLAGS], [SVNDIGEST_])
328
329AC_CONFIG_FILES([Makefile
330                bin/Makefile
331                lib/Makefile
332                yat/Makefile
333                man/Makefile
334                test/environment.h
335                test/Makefile])
336
337AC_CONFIG_FILES([build_support/tag_and_release.sh],
338                [chmod +x-w build_support/tag_and_release.sh])
339
340AC_CONFIG_HEADER([yat/config_public.h])
341
342# Print failure status information about selected items, and exit if
343# fatal errors were encountered. No output will be created if
344# configure is halted prematurely.
345
346# used to trigger exit before creation of output
347all_reqs_ok="true"
348
349AS_VAR_IF([have_svn_wc], [yes], [
350   AC_MSG_CHECKING([help2man])
351   # redirecting potential error msg to log file
352   AS_IF([help2man --version >/dev/null 2>&AS_MESSAGE_LOG_FD],
353         [AC_MSG_RESULT([yes])],
354         [AC_MSG_RESULT([no])
355     AC_MSG_WARN(m4_text_wrap(m4_normalize([
356       `help2man' is missing on your system.  You will not be
357       able to create the man page. A sound man page should be
358       included in a distribution, and since you will not able
359       to create a complete distribution `make dist' will fail.
360       ]),[                   ],
361          [                             ], 79))
362   ])
363   if (test "$test_repo_found" = "no"); then
364      all_reqs_ok="false";
365      AC_MSG_WARN([dnl
366Cannot find test repository (test_repo_filename), which should be
367available when building from a subversion working copy. Try svn
368update in top directory.]);
369   fi
370])
371
372# Non-existing APR is fatal -- sub-sequent compilation will fail.
373if (test "$apr_found" = "no") ; then
374  AC_MSG_WARN([APR not found. The Apache Portable Runtime
375  (APR) library cannot be found. Please make sure APR is installed
376  and supply the appropriate --with-apr option to 'configure'.])
377  all_reqs_ok="false"
378fi
379
380# Non-existing subversion API is fatal -- sub-sequent compilation will fail.
381if (test "$svn_found" = "no") ; then
382  svn_msg="Subversion API not found. Subversion API libraries cannot
383  be found. Make sure the APIs are installed and supply the
384  appropriate --with-svn option to 'configure'."
385  if (test "$apr_found" = "no") ; then
386    svn_msg="$svn_msg
387    Note, APR was not found. Failure to locate APR affects the search
388    of the subversion API. Please fix the APR problem before trying
389    to resolve the subversion related issues."
390  fi
391  AC_MSG_WARN([$svn_msg])
392  all_reqs_ok="false"
393fi
394
395# Non-existing PLplot API is fatal -- sub-sequent compilation will fail.
396AS_CASE([$plplot_found],
397  [noheader],
398    [AC_MSG_WARN([
399    PLplot developer files cannot be found. Make sure PLplot is installed.])
400    all_reqs_ok="false"],
401  [old],
402    [AC_MSG_WARN([
403    PLplot developer files found but not required API version.
404    Version at least $plplot_version is required. Please upgrade PLplot.])
405    all_reqs_ok="false"],
406  [nolib],
407    [AC_MSG_WARN([
408    PLplot developer files found but linking against plplot library failed.])
409    all_reqs_ok="false"])
410
411if test $ac_cv_type_long_long_int != yes ; then
412  AC_MSG_WARN([Compiler $CXX does not support `long long'.
413  svndigest must be compiled with a compiler that supports `long long'.])
414  all_reqs_ok="false"
415fi
416
417if (test "$all_reqs_ok" = "false") ; then
418  AC_MSG_ERROR([Some pre-requisites were not fulfilled, aborting
419  configure. Please consult the 'README' file for more information
420  about what is needed to compile svndigest and refer to above
421  warning messages. Needed files were NOT created.])
422fi
423
424# Create output.
425AC_OUTPUT
426
427# Some more messages.
428AC_MSG_NOTICE([
429Ready to compile the executables of svndigest $VERSION
430The following flags and libs will be used:
431+++++++++++++++++++++++++++++++++++++++++++++++
432  Compiler:           $CXX
433  Preprocessor flags:
434    CPPFLAGS:           $CPPFLAGS
435    SVNDIGEST_CPPFLAGS: $SVNDIGEST_CPPFLAGS
436  C++ flags:
437    CXXFLAGS:           $CXXFLAGS
438    SVNDIGEST_CXXFLAGS: $SVNDIGEST_CXXFLAGS
439  Linker flags:
440    LDFLAGS:            $LDFLAGS
441    SVNDIGEST_LDFLAGS:  $SVNDIGEST_LDFLAGS
442  Libraries:
443    LIBS                $LIBS
444    APR_LIBS            $APR_LIBS
445    SVN_LIBS            $SVN_LIBS
446    PLPLOT_LIBS         $PLPLOT_LIBS
447+++++++++++++++++++++++++++++++++++++++++++++++]dnl
448)
449
450AC_MSG_NOTICE([Now type 'make all check'.])
Note: See TracBrowser for help on using the repository browser.