source: trunk/configure.ac @ 880

Last change on this file since 880 was 880, checked in by Peter Johansson, 12 years ago

refs #410
minor style changes

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