source: branches/0.8-stable/configure.ac @ 1176

Last change on this file since 1176 was 1176, checked in by Peter Johansson, 11 years ago

correcting detection of missing svnversion when building in svn wc

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 14.8 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 1176 2010-08-24 02:37:40Z 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# Copyright (C) 2010 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([SVNDIGEST_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
50# propagate RELEASE_YEAR from file .release_year
51RELEASE_YEAR=`cat $srcdir/.release_year`
52AC_SUBST([RELEASE_YEAR])
53AC_DEFINE_UNQUOTED([RELEASE_YEAR], ["$RELEASE_YEAR"],
54                   [Define year package was last modified])
55AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/.release_year'])
56
57AC_SUBST([SVNDIGEST_MAJOR_VERSION], [MAJOR_VERSION])
58AC_SUBST([SVNDIGEST_MINOR_VERSION], [MINOR_VERSION])
59AC_SUBST([SVNDIGEST_PATCH_VERSION], [PATCH_VERSION])
60
61AC_DEFINE([DEV_BUILD],[SVNDIGEST_DEV_BUILD],
62          [true if dev build (version ends with pre)])
63AC_DEFINE([SVNDIGEST_MAJOR_VERSION], [MAJOR_VERSION],
64                    [Define to the svndigest major version])
65AC_DEFINE([SVNDIGEST_MINOR_VERSION], [MINOR_VERSION],
66                    [Define to the svndigest minor version])
67AC_DEFINE([SVNDIGEST_PATCH_VERSION], [PATCH_VERSION],
68                    [Define to the svndigest patch version])
69
70AC_CONFIG_HEADERS([config.h])
71AM_INIT_AUTOMAKE([1.11 color-tests std-options parallel-tests])
72
73dnl create bin/svndigest-copy-cache.in at autoconf time and let
74dnl config.status create bin/svndigest-copy-cache from
75dnl bin/svndigest-copy-cache.in
76m4_pushdef([FILE], [svndigest-copy-cache])
77m4_pushdef([my_m4sh_options], [-m 0644])
78dnl me cd down in bin to have same output as when created from Makefile
79m4_syscmd([cd bin && autom4te -l M4sh -o ]FILE[.in ]my_m4sh_options FILE[.as])
80AC_CONFIG_FILES([bin/]FILE[], [chmod +x bin/]FILE[ && chmod a-w bin/]FILE[])
81dnl export options so we can use the same in Makefile
82AC_SUBST([M4SH_OPTIONS], ['my_m4sh_options'])
83m4_popdef([my_m4sh_options])
84m4_popdef([FILE])
85AM_MISSING_PROG([AUTOM4TE], [autom4te])
86
87# Set default programming language
88AC_LANG([C++])
89
90# propagate selected configure variables to DISTCHECK_CONFIGURE_FLAGS
91for var in CPPFLAGS CXX CXXFLAGS CXXCPP LDFLAGS LIBS; do
92  eval isset=\${$var+set}
93  if test "$isset" = 'set' ; then
94    eval val=$`echo $var`
95    DISTCHECK_CONFIGURE_FLAGS="${DISTCHECK_CONFIGURE_FLAGS}'${var}=${val}' "
96  fi
97done
98AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
99
100# Let user overide default CXXFLAGS
101if test "${CXXFLAGS+set}" != set; then
102  CXXFLAGS=""  # Setting CXXFLAGS here to prevent expansion in AC_PROG_CXX
103fi
104
105# Checks for programs.
106AC_PROG_CXXCPP
107AC_PROG_CXX
108AC_PROG_RANLIB
109AC_PROG_SED
110AM_MISSING_PROG([HELP2MAN], [help2man])
111# look for pkg-config
112PKG_PROG_PKG_CONFIG([0.23])
113
114# Save FLAGS
115APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
116APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
117
118# -Wno-long-long is needed to suppress compiler diagnostics regarding
119# using extension beyond the C++ standard (usage of non C++ standard
120# 'long long' types).
121YAT_CXX_ADD_FLAG([CXXFLAGS],[-pedantic -Wno-long-long])
122AC_TYPE_LONG_LONG_INT
123AS_IF([test x$ac_cv_type_long_long_int = xno],
124      [AC_MSG_ERROR([compiler does not support long long int])]
125     )
126
127AC_ARG_ENABLE([debug],
128  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])])
129
130AS_IF([test x$enable_debug = xyes],
131  [YAT_CXX_ADD_FLAG([CXXFLAGS],[-g -O])],
132  [YAT_CPP_ADD_FLAG([CPPFLAGS],[-DNDEBUG])
133   YAT_CXX_ADD_FLAG([CXXFLAGS],[-O3])])
134
135# Apache Portable Runtime (APR) API checks
136APR_FIND_APR(,,[1],[1 0])
137AS_IF([test "${with_apr+set}" = set],
138    [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-apr=$with_apr"]
139)
140if test "$apr_found" = "yes" ; then
141    APR_LIBS="`$apr_config --libs`"
142    apr_link_ld="`$apr_config --link-ld`"
143    for i in $apr_link_ld; do
144      AS_IF([test ${i:0:2} = "-l"],[APR_LIBS="$i $APR_LIBS"],
145            [YAT_LD_ADD_FLAG([LDFLAGS], [$i])])
146    done
147    YAT_CPP_ADD_FLAG([CPPFLAGS],[`$apr_config --includes --cppflags`])
148    AC_CHECK_HEADER([apr_allocator.h],,[apr_found="no"])
149fi
150AC_SUBST([APR_LIBS])
151
152# Subversion API checks
153svn_found="yes"
154AC_ARG_WITH([svn],
155  [AS_HELP_STRING([--with-svn=DIR],[prefix for svn developer files [[PREFIX]]])],
156  [ AS_CASE([$withval], [yes|no],
157            [AC_MSG_ERROR([--with-svn requires a directory to be provided])])
158    AS_IF([test -d $with_svn], [],
159          [AC_MSG_ERROR([$with_svn: no such directory])])
160    # transform argument to absolute path
161    with_svn=`cd $with_svn && pwd`
162    DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-svn=$with_svn"
163    YAT_LD_ADD_FLAG([LDFLAGS], [-L$with_svn/lib])
164    YAT_CPP_ADD_FLAG([CPPFLAGS], [-I$with_svn/include])
165  ])
166# svn needs needs apr headers
167AC_CHECK_HEADER([subversion-1/svn_types.h],,[svn_found="no"])
168
169save_LIBS=$LIBS
170tmp_LIBS="$APR_LIBS $save_LIBS"
171LIBS=""
172AC_SEARCH_LIBS([svn_cmdline_setup_auth_baton],[svn_subr-1],
173               [], [svn_found="no"], [$tmp_LIBS])
174AC_SEARCH_LIBS([svn_ra_initialize],[svn_ra-1], [], [svn_found="no"],[$tmp_LIBS])
175AC_SEARCH_LIBS([svn_wc_adm_open3],[svn_wc-1], [], [svn_found="no"], [$tmp_LIBS])
176AC_SEARCH_LIBS([svn_diff_file_options_create],[svn_diff-1],[],
177               [svn_found="no"], [$tmp_LIBS])
178AC_SEARCH_LIBS([svn_client_log3],[svn_client-1],,[svn_found="no"], [$tmp_LIBS])
179SVN_LIBS=$LIBS
180LIBS=$save_LIBS
181AC_SUBST([SVN_LIBS])
182
183
184# check if svnversion is installed
185AC_PATH_PROG([SVNVERSION], [svnversion], [no])
186
187# PLplot API checks
188# plplot_found can get values: skip, noheader, old, or nolib if an
189# error is detected.
190plplot_found="yes"
191plplot_version=5.9.6
192save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
193AC_ARG_WITH([plplot],
194  [AS_HELP_STRING([--with-plplot=DIR],[prefix for plplot developer files])],
195  [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-plplot=$withval"
196   AS_IF([test "x$withval" = "xno"], [ dnl
197     plplot_found=skip;
198   ], [ dnl
199     AS_IF([test -d $with_plplot], [],
200           [AC_MSG_ERROR([$with_plplot: no such directory])])
201     with_plplot=`cd $with_plplot && pwd`
202     # help pkg-config find .pc file
203     PKG_CONFIG_PATH=$with_plplot/lib/pkgconfig$PATH_SEPARATOR$PKG_CONFIG_PATH
204     export PKG_CONFIG_PATH
205   ])
206  ])
207
208use_plplot_pc="no"
209AS_IF([test "x$plplot_found" = "xyes" && test -n "$PKG_CONFIG"], [
210  AC_MSG_CHECKING([for plplotd-c++.pc])
211  AS_IF([$PKG_CONFIG --exists plplotd-c++], [
212    AC_MSG_RESULT([yes])
213    use_plplot_pc="yes"
214  ],[
215    AC_MSG_RESULT([no])
216    AC_MSG_WARN([cannot find plplotd-c++;
217      please use --with-plplot with appropriate argument to get more accurate
218      configuration.])
219  ])
220])
221
222AS_IF([test "x$plplot_found" = "xyes"], [
223  # copy flags if we have found pc file
224  AS_IF([test "$use_plplot_pc" = "yes"], [
225    YAT_LD_ADD_FLAG([LDFLAGS], [`$PKG_CONFIG plplotd-c++ --libs-only-L`])
226    PLPLOT_LIBS="`$PKG_CONFIG plplotd-c++ --libs-only-l --libs-only-other`"
227  ],[
228    # otherwise guess
229    PLPLOT_LIBS="-lplplotcxxd -lplplotd";
230    AS_IF([test -n "$with_plplot" && test "x$with_plplot" != "xyes"], [
231      YAT_LD_ADD_FLAG([LDFLAGS], [-L$with_plplot/lib])
232    ])
233  ])
234  # don't use `pkg-config --cflags' because it returns
235  # `PREFIX/include/plplot' rather than `PREFIX/include'
236  AS_IF([test -n "$with_plplot" && test "x$with_plplot" != "xyes"], [
237    YAT_CPP_ADD_FLAG([CPPFLAGS], [-I$with_plplot/include])
238  ])
239])
240                 
241AS_IF([test "x$plplot_found" = "xyes"], [
242  AC_CHECK_HEADER([plplot/plstream.h], [], [plplot_found="noheader"])
243])
244
245
246AS_IF([test "x$plplot_found" = "xyes" && test -n "$PKG_CONFIG"], [
247  AC_MSG_CHECKING([plplot version >= $plplot_version])
248  AS_IF([$PKG_CONFIG --atleast-version=$plplot_version plplotd-c++], [
249    AC_MSG_RESULT([yes])
250  ],[
251    have_plplot_version=`$PKG_CONFIG --modversion plplotd-c++`
252    AC_MSG_RESULT([$have_plplot_version])
253    plplot_found="old"
254  ])
255])
256
257AS_IF([test "x$plplot_found" = "xyes"], [
258  save_LIBS=$LIBS
259  LIBS="$PLPLOT_LIBS $LIBS"
260  AC_MSG_CHECKING([for library containing plstream])
261  AC_LINK_IFELSE([AC_LANG_PROGRAM([@%:@include <plplot/plstream.h>],
262                                  [plstream pls(1,1,"svg", "conftest.svg");
263                                   pls.scolbga(255, 255, 255, 0);
264                                  ])],
265                 [AC_MSG_RESULT([yes]);
266                  AC_DEFINE([HAVE_PLPLOT], [1],
267                            [Define to 1 if you have plplot])],
268                 [AC_MSG_RESULT([no])
269                  plplot_found=nolib;])
270  LIBS=$save_LIBS
271])
272# restore variable
273export PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
274AC_SUBST(PLPLOT_LIBS)
275
276# checking if we build in a subversion WC
277AS_IF([test -d $srcdir/.svn], [wc_found="yes"], [wc_found="no"])
278AM_CONDITIONAL([HAVE_SVN_WC], [test "$wc_found" = "yes"])
279AC_SUBST([wc_found])
280
281# checking if we have test repo
282test_repo_filename=$srcdir/test/repo;
283AS_IF([test -r $test_repo_filename],
284              [AC_DEFINE([HAVE_TEST_REPO],[1],[define if test repo is available])
285               test_repo_found="yes"],
286              [test_repo_found="no"])
287AC_SUBST([test_repo_found])
288AS_IF([test "x$test_repo_found" = xyes],
289      [abs_test_repo=`cd $test_repo_filename && pwd`;
290       AC_SUBST(abs_test_repo)]
291     )
292AC_CONFIG_FILES([test/init.sh])
293AC_CONFIG_FILES([test/svn_update.sh], [chmod +x test/svn_update.sh])
294
295dnl maintainer make rukes from yat project
296YAT_SVN_RELEASE
297
298# Restore FLAGS
299APR_RESTORE_THE_ENVIRONMENT([CPPFLAGS], [SVNDIGEST_])
300APR_RESTORE_THE_ENVIRONMENT([CXXFLAGS], [SVNDIGEST_])
301APR_RESTORE_THE_ENVIRONMENT([LDFLAGS], [SVNDIGEST_])
302
303AC_CONFIG_FILES([Makefile
304                bin/Makefile
305                lib/Makefile
306                yat/Makefile
307                man/Makefile
308                test/environment.h
309                test/Makefile])
310
311AC_CONFIG_HEADER([yat/config_public.h])
312
313# Print failure status information about selected items, and exit if
314# fatal errors were encountered. No output will be created if
315# configure is halted prematurely.
316
317# used to trigger exit before creation of output
318all_reqs_ok="true"
319
320if (test "$wc_found" = "yes"); then
321   # redirecting potential error msg to log file
322   AS_IF([help2man 2>&AS_MESSAGE_LOG_FD], [], [
323     AC_MSG_WARN(m4_text_wrap(m4_normalize([
324       `help2man' is missing on your system.  You will not be
325       able to create the man page. A sound man page should be
326       included in a distribution, and since you will not able
327       to create a complete distribution `make dist' will fail.
328       ]),[                   ],
329          [                             ], 79))
330   ])
331   # svnversion is required when building from svn wc
332   if (test "x$SVNVERSION" = "xno"); then
333      all_reqs_ok="false";
334      AC_MSG_WARN([dnl
335Cannot find svnversion, which is required when building from a
336subversion working copy. Please install svnversion and make sure it is
337in your search path.]);
338   fi
339   if (test "$test_repo_found" = "no"); then
340      all_reqs_ok="false";
341      AC_MSG_WARN([dnl
342Cannot find test repository (test_repo_filename), which should be
343available when building from a subversion working copy. Try svn
344update in top directory.]);
345   fi
346fi
347
348# Non-existing APR is fatal -- sub-sequent compilation will fail.
349if (test "$apr_found" = "no") ; then
350  AC_MSG_WARN([APR not found. The Apache Portable Runtime
351  (APR) library cannot be found. Please make sure APR is installed
352  and supply the appropriate --with-apr option to 'configure'.])
353  all_reqs_ok="false"
354fi
355
356# Non-existing subversion API is fatal -- sub-sequent compilation will fail.
357if (test "$svn_found" = "no") ; then
358  svn_msg="Subversion API not found. Subversion API libraries cannot
359  be found. Make sure the APIs are installed and supply the
360  appropriate --with-svn option to 'configure'."
361  if (test "$apr_found" = "no") ; then
362    svn_msg="$svn_msg
363    Note, APR was not found. Failure to locate APR affects the search
364    of the subversion API. Please fix the APR problem before trying
365    to resolve the subversion related issues."
366  fi
367  AC_MSG_WARN([$svn_msg])
368  all_reqs_ok="false"
369fi
370
371# Non-existing PLplot API is fatal -- sub-sequent compilation will fail.
372AS_CASE([$plplot_found],
373  [noheader],
374    [AC_MSG_WARN([
375    PLplot developer files cannot be found. Make sure PLplot is installed.])
376    all_reqs_ok="false"],
377  [old],
378    [AC_MSG_WARN([
379    PLplot developer files found but not required API version.
380    Version at least $plplot_version is required. Please upgrade PLplot.])
381    all_reqs_ok="false"],
382  [nolib],
383    [AC_MSG_WARN([
384    PLplot developer files found but linking against plplot library failed.])
385    all_reqs_ok="false"])
386
387if test $ac_cv_type_long_long_int != yes ; then
388  AC_MSG_WARN([Compiler $CXX does not support `long long'.
389  svndigest must be compiled with a compiler that supports `long long'.])
390  all_reqs_ok="false"
391fi
392
393if (test "$all_reqs_ok" = "false") ; then
394  AC_MSG_ERROR([Some pre-requisites were not fulfilled, aborting
395  configure. Please consult the 'README' file for more information
396  about what is needed to compile svndigest and refer to above
397  warning messages. Needed files were NOT created.])
398fi
399
400# Create output.
401AC_OUTPUT
402
403# Some more messages.
404AC_MSG_NOTICE([
405Ready to compile the executables of svndigest $VERSION
406The following flags and libs will be used:
407+++++++++++++++++++++++++++++++++++++++++++++++
408  Compiler:           $CXX
409  Preprocessor flags:
410    CPPFLAGS:           $CPPFLAGS
411    SVNDIGEST_CPPFLAGS: $SVNDIGEST_CPPFLAGS
412  C++ flags:
413    CXXFLAGS:           $CXXFLAGS
414    SVNDIGEST_CXXFLAGS: $SVNDIGEST_CXXFLAGS
415  Linker flags:
416    LDFLAGS:            $LDFLAGS
417    SVNDIGEST_LDFLAGS:  $SVNDIGEST_LDFLAGS
418  Libraries:         
419    LIBS                $LIBS
420    APR_LIBS            $APR_LIBS
421    SVN_LIBS            $SVN_LIBS
422    PLPLOT_LIBS         $PLPLOT_LIBS
423+++++++++++++++++++++++++++++++++++++++++++++++]dnl
424)
425
426AC_MSG_NOTICE([Now type 'make all check'.])
Note: See TracBrowser for help on using the repository browser.