source: trunk/configure.ac @ 1182

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

Merge release 0.8 into trunk

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