source: trunk/configure.ac @ 887

Last change on this file since 887 was 887, checked in by Peter Johansson, 13 years ago

refs #401

splitting LIBS *FLAGS into prefixes APR_ SVN_ and DEFAULT_
and modified configure end output to use these flags.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 11.0 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 887 2009-11-25 03:20:36Z 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])
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])
84# look for pkg-config
85PKG_PROG_PKG_CONFIG([0.23])
86
87# Save FLAGS
88APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
89APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
90
91# -Wno-long-long is needed to suppress compiler diagnostics regarding
92# using extension beyond the C++ standard (usage of non C++ standard
93# 'long long' types).
94YAT_CXX_ADD_FLAG([CXXFLAGS],[-pedantic -Wno-long-long])
95AC_TYPE_LONG_LONG_INT
96AS_IF([test x$ac_cv_type_long_long_int = xno],
97      [AC_MSG_ERROR([compiler does not support long long int])]
98     )
99
100AC_ARG_ENABLE([debug],
101  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])])
102
103AS_IF([test x$enable_debug = xyes],
104  [YAT_CXX_ADD_FLAG([CXXFLAGS],[-g -O])],
105  [YAT_CPP_ADD_FLAG([CPPFLAGS],[-DNDEBUG])
106   YAT_CXX_ADD_FLAG([CXXFLAGS],[-O3])])
107
108# Apache Portable Runtime (APR) API checks
109APR_FIND_APR(,,[1],[1 0])
110AS_IF([test "${with_apr+set}" = set],
111    [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-apr=$with_apr"]
112)
113if test "$apr_found" = "yes" ; then
114    APR_LIBS="`$apr_config --libs`"
115    apr_link_ld="`$apr_config --link-ld`"
116    for i in $apr_link_ld; do
117      AS_IF([test ${i:0:2} = "-l"],[APR_LIBS="$i $APR_LIBS"],
118            [YAT_LD_ADD_FLAG([APR_LDFLAGS], [$i])])
119    done
120    YAT_CPP_ADD_FLAG([APR_CPPFLAGS],[`$apr_config --includes --cppflags`])
121    save_CPPFLAGS=$CPPFLAGS
122    CPPFLAGS="$APR_CPPFLAGS $CPPFLAGS"
123    AC_CHECK_HEADER([apr_allocator.h],,[apr_found="no"])
124    CPPFLAGS=$save_CPPFLAGS
125fi
126AC_SUBST([APR_CPPFLAGS])
127AC_SUBST([APR_LDFLAGS])
128AC_SUBST([APR_LIBS])
129
130# Subversion API checks
131svn_found="yes"
132AC_ARG_WITH([svn],
133  [AS_HELP_STRING([--with-svn=DIR],[prefix for svn developer files [[PREFIX]]])],
134  [ DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-svn=$withval"
135    YAT_LD_ADD_FLAG([SVN_LDFLAGS], [-L$withval/lib])
136    YAT_CPP_ADD_FLAG([SVN_CPPFLAGS], [-I$withval/include])
137  ])
138# svn needs needs apr headers
139save_CPPFLAGS=$CPPFLAGS
140CPPFLAGS="$APR_CPPFLAGS $SVN_CPPFLAGS $CPPFLAGS"
141AC_CHECK_HEADER([subversion-1/svn_types.h],,[svn_found="no"])
142CPPFLAGS=$save_CPPFLAGS
143
144save_LDFLAGS=$LDFLAGS
145save_LIBS=$LIBS
146tmp_LIBS="$APR_LIBS $save_LIBS"
147LIBS=""
148LDFLAGS="$SVN_LDFLAGS $APR_LDFLAGS"
149AC_SEARCH_LIBS([svn_cmdline_setup_auth_baton],[svn_subr-1],
150               [], [svn_found="no"], [$tmp_LIBS])
151AC_SEARCH_LIBS([svn_ra_initialize],[svn_ra-1], [], [svn_found="no"],[$tmp_LIBS])
152AC_SEARCH_LIBS([svn_wc_adm_open3],[svn_wc-1], [], [svn_found="no"], [$tmp_LIBS])
153AC_SEARCH_LIBS([svn_diff_file_options_create],[svn_diff-1],[],
154               [svn_found="no"], [$tmp_LIBS])
155AC_SEARCH_LIBS([svn_client_log3],[svn_client-1],,[svn_found="no"], [$tmp_LIBS])
156SVN_LIBS=$LIBS
157LIBS=$save_LIBS
158LDFLAGS=$save_LDFLAGS
159AC_SUBST([SVN_CPPFLAGS])
160AC_SUBST([SVN_LDFLAGS])
161AC_SUBST([SVN_LIBS])
162
163
164# check if svnversion is installed
165AC_PATH_PROG([SVNVERSION], [svnversion], [no])
166
167# PLplot API checks
168plplot_found="yes"
169plplot_version=5.9
170AC_CHECK_HEADER([plplot/plstream.h],
171                [if $PKG_CONFIG --atleast-version=$plplot_version plplotd-c++; then
172                  PLPLOT_LDFLAGS=`$PKG_CONFIG --libs plplotd-c++`
173                  AC_SUBST([PLPLOT_LDFLAGS])
174                else
175                  plplot_found="nolib"
176                fi],
177                [plplot_found="noheader"])
178
179# checking if we build in a subversion WC
180AS_IF([test -d $srcdir/.svn], [wc_found="yes"], [wc_found="no"])
181AM_CONDITIONAL([HAVE_SVN_WC], [test "$wc_found" = "yes"])
182AC_SUBST([wc_found])
183
184# Reset FLAGS
185APR_RESTORE_THE_ENVIRONMENT([CPPFLAGS], [DEFAULT_])
186APR_RESTORE_THE_ENVIRONMENT([CXXFLAGS], [DEFAULT_])
187
188# checking if we have test repo
189test_repo_filename=$srcdir/test/repo;
190AS_IF([test -r $test_repo_filename],
191              [AC_DEFINE([HAVE_TEST_REPO],[1],[define if test repo is available])
192               test_repo_found="yes"],
193              [test_repo_found="no"])
194AC_SUBST([test_repo_found])
195AS_IF([test "x$test_repo_found" = xyes],
196      [abs_test_repo=`cd $test_repo_filename && pwd`;
197       AC_SUBST(abs_test_repo)]
198     )
199AC_CONFIG_FILES([test/test_repo.sh], [chmod +x test/test_repo.sh])
200AC_CONFIG_FILES([test/svn_update.sh], [chmod +x test/svn_update.sh])
201AC_CONFIG_FILES([test/check_repo_status.sh],
202                [chmod +x test/check_repo_status.sh])   
203
204dnl maintainer make rukes from yat project
205YAT_SVN_RELEASE
206
207AC_CONFIG_FILES([Makefile
208                bin/Makefile
209                lib/Makefile
210                lib/yat/Makefile
211                man/Makefile
212                test/environment.h
213                test/Makefile])
214
215AC_CONFIG_HEADER([lib/yat/config_public.h])
216
217# Print failure status information about selected items, and exit if
218# fatal errors were encountered. No output will be created if
219# configure is halted prematurely.
220
221# used to trigger exit before creation of output
222all_reqs_ok="true"
223
224if (test "$wc_found" = "yes"); then
225   if test x$HELP2MAN = xno; then
226     AC_MSG_WARN(m4_text_wrap(m4_normalize([
227       `help2man' is missing on your system.  You will not be
228       able to create the man page. A sound man page should be
229       included in a distribution, and since you will not able
230       to create a complete distribution `make dist' will fail.
231       ]),[                   ],
232          [                             ], 79))
233   fi
234   # svnversion is required when building from svn wc
235   if (test "$svnversion" = "no"); then
236      all_reqs_ok="false";
237      AC_MSG_WARN([dnl
238Cannot find svnversion, which is required when building from a
239subversion working copy. Please install svnversion and make sure it is
240in your search path.]);
241   fi
242   if (test "$test_repo_found" = "no"); then
243      all_reqs_ok="false";
244      AC_MSG_WARN([dnl
245Cannot find test repository (test_repo_filename), which should be
246available when building from a subversion working copy. Try svn
247update in top directory.]);
248   fi
249fi
250
251# Non-existing APR is fatal -- sub-sequent compilation will fail.
252if (test "$apr_found" = "no") ; then
253  AC_MSG_WARN([APR not found. The Apache Portable Runtime
254  (APR) library cannot be found. Please make sure APR is installed
255  and supply the appropriate --with-apr option to 'configure'.])
256  all_reqs_ok="false"
257fi
258
259# Non-existing subversion API is fatal -- sub-sequent compilation will fail.
260if (test "$svn_found" = "no") ; then
261  svn_msg="Subversion API not found. Subversion API libraries cannot
262  be found. Make sure the APIs are installed and supply the
263  appropriate --with-svn option to 'configure'."
264  if (test "$apr_found" = "no") ; then
265    svn_msg="$svn_msg
266    Note, APR was not found. Failure to locate APR affects the search
267    of the subversion API. Please fix the APR problem before trying
268    to resolve the subversion related issues."
269  fi
270  AC_MSG_WARN([$svn_msg])
271  all_reqs_ok="false"
272fi
273
274# Non-existing PLplot API is fatal -- sub-sequent compilation will fail.
275if (test "$plplot_found" = "noheader") ; then
276  AC_MSG_WARN([PLplot developer files cannot be found. Make sure PLplot
277  is installed.])
278  all_reqs_ok="false"
279elif (test "$plplot_found" = "nolib") ; then
280  AC_MSG_WARN([PLplot developer files found but not required API version.
281  Version at least $plplot_version is required. Please upgrade PLplot.])
282  all_reqs_ok="false"
283fi
284
285if test $ac_cv_type_long_long_int != yes ; then
286  AC_MSG_WARN([Compiler $CXX does not support `long long'.
287  svndigest must be compiled with a compiler that supports `long long'.])
288  all_reqs_ok="false"
289fi
290
291if (test "$all_reqs_ok" = "false") ; then
292  AC_MSG_ERROR([Some pre-requisites were not fulfilled, aborting
293  configure. Please consult the 'README' file for more information
294  about what is needed to compile svndigest and refer to above
295  warning messages. Needed files were NOT created.])
296fi
297
298# Create output.
299AC_OUTPUT
300
301# Some more messages.
302AC_MSG_NOTICE([
303Ready to compile the executables of svndigest $VERSION
304The following flags and libs will be used:
305+++++++++++++++++++++++++++++++++++++++++++++++
306  Compiler:           $CXX
307  Preprocessor flags: $SD_CPPFLAGS $CPPFLAGS
308    CPPFLAGS:         $CPPFLAGS
309    DEFAULT_CPPFLAGS: $DEFAULT_CPPFLAGS
310    APR_CPPFLAGS:     $APR_CPPFLAGS
311    SVN_CPPFLAGS:     $SVN_CPPFLAGS
312  C++ flags:
313    CXXFLAGS:         $CXXFLAGS
314    DEFAULT_CXXFLAGS: $DEFAULT_CXXFLAGS
315  Linker flags:
316    LDFLAGS:          $LDFLAGS
317    APR_LDFLAGS:      $APR_LDFLAGS
318    SVN_LDFLAGS:      $SVN_LDFLAGS
319    PLPLOT_LDFLAGS:   $PLPLOT_LDFLAGS
320  Libraries:         
321    LIBS              $LIBS
322    APR_LIBS          $APR_LIBS
323    SVN_LIBS          $SVN_LIBS
324+++++++++++++++++++++++++++++++++++++++++++++++]dnl
325)
326
327AC_MSG_NOTICE([Now type 'make all check'.])
Note: See TracBrowser for help on using the repository browser.