source: trunk/configure.ac @ 1051

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

remove AC_PROG_INSTALL which is already called by AM_INIT_AUTOMAKE and no need to call it twice.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 15.5 KB
RevLine 
[84]1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 1051 2010-04-12 11:28:25Z 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
14# Copyright (C) 2007, 2008, 2009 Jari Häkkinen, Peter Johansson
[1043]15# Copyright (C) 2010 Peter Johansson
[2]16#
[687]17# This file is part of svndigest, http://dev.thep.lu.se/svndigest
[2]18#
[149]19# svndigest is free software; you can redistribute it and/or modify it
[84]20# under the terms of the GNU General Public License as published by
[693]21# the Free Software Foundation; either version 3 of the License, or
[84]22# (at your option) any later version.
[2]23#
[149]24# svndigest is distributed in the hope that it will be useful, but
[84]25# WITHOUT ANY WARRANTY; without even the implied warranty of
[149]26# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
[84]27# General Public License for more details.
[2]28#
[84]29# You should have received a copy of the GNU General Public License
[693]30# along with svndigest. If not, see <http://www.gnu.org/licenses/>.
[2]31
[907]32AC_PREREQ([2.63])
[547]33
[775]34m4_include([m4/version.m4])
[910]35AC_INIT([svndigest], m4_defn([SVNDIGEST_VERSION]),[jari@thep.lu.se],,
[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
[732]109AC_PATH_PROG([HELP2MAN], [help2man], [no])
[742]110AM_CONDITIONAL([HAVE_HELP2MAN], [test x$HELP2MAN != xno])
[880]111# look for pkg-config
112PKG_PROG_PKG_CONFIG([0.23])
[2]113
[640]114# Save FLAGS
[887]115APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
116APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
[640]117
[138]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).
[887]121YAT_CXX_ADD_FLAG([CXXFLAGS],[-pedantic -Wno-long-long])
[769]122AC_TYPE_LONG_LONG_INT
[782]123AS_IF([test x$ac_cv_type_long_long_int = xno],
124      [AC_MSG_ERROR([compiler does not support long long int])]
125     )
[2]126
[782]127AC_ARG_ENABLE([debug],
[843]128  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])])
129
130AS_IF([test x$enable_debug = xyes],
[887]131  [YAT_CXX_ADD_FLAG([CXXFLAGS],[-g -O])],
132  [YAT_CPP_ADD_FLAG([CPPFLAGS],[-DNDEBUG])
133   YAT_CXX_ADD_FLAG([CXXFLAGS],[-O3])])
[160]134
[164]135# Apache Portable Runtime (APR) API checks
[887]136APR_FIND_APR(,,[1],[1 0])
[773]137AS_IF([test "${with_apr+set}" = set],
138    [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-apr=$with_apr"]
139)
[164]140if test "$apr_found" = "yes" ; then
[887]141    APR_LIBS="`$apr_config --libs`"
142    apr_link_ld="`$apr_config --link-ld`"
[774]143    for i in $apr_link_ld; do
[887]144      AS_IF([test ${i:0:2} = "-l"],[APR_LIBS="$i $APR_LIBS"],
145            [YAT_LD_ADD_FLAG([APR_LDFLAGS], [$i])])
[774]146    done
[887]147    YAT_CPP_ADD_FLAG([APR_CPPFLAGS],[`$apr_config --includes --cppflags`])
148    save_CPPFLAGS=$CPPFLAGS
149    CPPFLAGS="$APR_CPPFLAGS $CPPFLAGS"
150    AC_CHECK_HEADER([apr_allocator.h],,[apr_found="no"])
151    CPPFLAGS=$save_CPPFLAGS
[164]152fi
[887]153AC_SUBST([APR_CPPFLAGS])
154AC_SUBST([APR_LDFLAGS])
155AC_SUBST([APR_LIBS])
[96]156
[164]157# Subversion API checks
158svn_found="yes"
[887]159AC_ARG_WITH([svn],
[172]160  [AS_HELP_STRING([--with-svn=DIR],[prefix for svn developer files [[PREFIX]]])],
[905]161  [ AS_CASE([$withval], [yes|no],
162            [AC_MSG_ERROR([--with-svn requires a directory to be provided])])
[973]163    AS_IF([test -d $with_svn], [],
164          [AC_MSG_ERROR([$with_svn: no such directory])])
165    # transform argument to absolute path
166    with_svn=`cd $with_svn && pwd`
167    DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-svn=$with_svn"
168    YAT_LD_ADD_FLAG([SVN_LDFLAGS], [-L$with_svn/lib])
169    YAT_CPP_ADD_FLAG([SVN_CPPFLAGS], [-I$with_svn/include])
[774]170  ])
[887]171# svn needs needs apr headers
172save_CPPFLAGS=$CPPFLAGS
173CPPFLAGS="$APR_CPPFLAGS $SVN_CPPFLAGS $CPPFLAGS"
174AC_CHECK_HEADER([subversion-1/svn_types.h],,[svn_found="no"])
175CPPFLAGS=$save_CPPFLAGS
[640]176
[887]177save_LDFLAGS=$LDFLAGS
178save_LIBS=$LIBS
179tmp_LIBS="$APR_LIBS $save_LIBS"
180LIBS=""
181LDFLAGS="$SVN_LDFLAGS $APR_LDFLAGS"
[640]182AC_SEARCH_LIBS([svn_cmdline_setup_auth_baton],[svn_subr-1],
[887]183               [], [svn_found="no"], [$tmp_LIBS])
184AC_SEARCH_LIBS([svn_ra_initialize],[svn_ra-1], [], [svn_found="no"],[$tmp_LIBS])
185AC_SEARCH_LIBS([svn_wc_adm_open3],[svn_wc-1], [], [svn_found="no"], [$tmp_LIBS])
186AC_SEARCH_LIBS([svn_diff_file_options_create],[svn_diff-1],[],
187               [svn_found="no"], [$tmp_LIBS])
188AC_SEARCH_LIBS([svn_client_log3],[svn_client-1],,[svn_found="no"], [$tmp_LIBS])
189SVN_LIBS=$LIBS
190LIBS=$save_LIBS
191LDFLAGS=$save_LDFLAGS
192AC_SUBST([SVN_CPPFLAGS])
193AC_SUBST([SVN_LDFLAGS])
194AC_SUBST([SVN_LIBS])
[96]195
[540]196
197# check if svnversion is installed
[690]198AC_PATH_PROG([SVNVERSION], [svnversion], [no])
[540]199
[858]200# PLplot API checks
[901]201# plplot_found can get values: skip, noheader, old, or nolib if an
202# error is detected.
[858]203plplot_found="yes"
204plplot_version=5.9
[888]205save_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
206AC_ARG_WITH([plplot],
207  [AS_HELP_STRING([--with-plplot=DIR],[prefix for plplot developer files])],
208  [DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --with-plplot=$withval"
[901]209   AS_IF([test "x$withval" = "xno"], [ dnl
210     plplot_found=skip;
211   ], [ dnl
[973]212     AS_IF([test -d $with_plplot], [],
213           [AC_MSG_ERROR([$with_plplot: no such directory])])
214     with_plplot=`cd $with_plplot && pwd`
[901]215     # help pkg-config find .pc file
[973]216     PKG_CONFIG_PATH=$with_plplot/lib/pkgconfig$PATH_SEPARATOR$PKG_CONFIG_PATH
[901]217     export PKG_CONFIG_PATH
218   ])
[888]219  ])
[858]220
[901]221use_plplot_pc="no"
222AS_IF([test "x$plplot_found" = "xyes" && test -n "$PKG_CONFIG"], [
223  AC_MSG_CHECKING([for plplotd-c++.pc])
224  AS_IF([$PKG_CONFIG --exists plplotd-c++], [
225    AC_MSG_RESULT([yes])
226    use_plplot_pc="yes"
227  ],[
228    AC_MSG_RESULT([no])
229    AC_MSG_WARN([cannot find plplotd-c++;
230      please use --with-plplot with appropriate argument to get more accurate
231      configuration.])
232  ])
[888]233])
[901]234
235AS_IF([test "x$plplot_found" = "xyes"], [
236  # copy flags if we have found pc file
237  AS_IF([test "$use_plplot_pc" = "yes"], [
238    YAT_LD_ADD_FLAG([PLPLOT_LDFLAGS], [`$PKG_CONFIG plplotd-c++ --libs-only-L`])
239    PLPLOT_LIBS="`$PKG_CONFIG plplotd-c++ --libs-only-l --libs-only-other`"
240  ],[
241    # otherwise guess
242    PLPLOT_LIBS="-lplplotcxxd -lplplotd";
243    AS_IF([test -n "$with_plplot" && test "x$with_plplot" != "xyes"], [
[988]244      YAT_LD_ADD_FLAG([PLPLOT_LDFLAGS], [-L$with_plplot/libs])
[901]245    ])
246  ])
[975]247  # don't use `pkg-config --cflags' because it returns
248  # `PREFIX/include/plplot' rather than `PREFIX/include'
249  AS_IF([test -n "$with_plplot" && test "x$with_plplot" != "xyes"], [
[988]250    YAT_CPP_ADD_FLAG([PLPLOT_CPPFLAGS], [-I$with_plplot/include])
[975]251  ])
[901]252])
[888]253                 
254AS_IF([test "x$plplot_found" = "xyes"], [
255  save_CPPFLAGS=$CPPFLAGS
256  CPPFLAGS="$PLPLOT_CPPFLAGS $CPPFLAGS"
257  AC_CHECK_HEADER([plplot/plstream.h], [], [plplot_found="noheader"])
258  CPPFLAGS=$save_CPPFLAGS
259])
260
[901]261
262AS_IF([test "x$plplot_found" = "xyes" && test -n "$PKG_CONFIG"], [
263  AC_MSG_CHECKING([plplot version >= $plplot_version])
264  AS_IF([$PKG_CONFIG --atleast-version=$plplot_version plplotd-c++], [
265    AC_MSG_RESULT([yes])
266  ],[
267    AC_MSG_RESULT([`$PKG_CONFIG --modversion= plplotd-c++`])
268    plplot_found="old"
[888]269  ])
270])
[901]271
[904]272AS_IF([test "x$plplot_found" = "xyes"], [
[988]273  save_CPPFLAGS=$CPPFLAGS
274  CPPFLAGS="$PLPLOT_CPPFLAGS $CPPFLAGS"
[901]275  save_LDFLAGS=$LDFLAGS
276  LDFLAGS="$PLPLOT_LDFLAGS $LDFLAGS"
277  save_LIBS=$LIBS
278  LIBS="$PLPLOT_LIBS $LIBS"
279  AC_MSG_CHECKING([for library containing plstream])
280  AC_LINK_IFELSE([AC_LANG_PROGRAM([@%:@include <plplot/plstream.h>],
[1029]281                                  [plstream pls(1,1,"svg", "conftest.svg");
282                                   pls.scolbga(255, 255, 255, 0);
283                                  ])],
[901]284                 [AC_MSG_RESULT([yes]);
285                  AC_DEFINE([HAVE_PLPLOT], [1],
286                            [Define to 1 if you have plplot])],
287                 [AC_MSG_RESULT([no])
288                  plplot_found=nolib;])
[989]289  CPPFLAGS=$save_CPPFLAGS
290  LDFLAGS=$save_LDFLAGS
291  LIBS=$save_LIBS
[901]292])
[888]293# restore variable
294export PKG_CONFIG_PATH=$save_PKG_CONFIG_PATH
295AC_SUBST(PLPLOT_CPPFLAGS)
296AC_SUBST(PLPLOT_LDFLAGS)
297AC_SUBST(PLPLOT_LIBS)
298
[614]299# checking if we build in a subversion WC
[835]300AS_IF([test -d $srcdir/.svn], [wc_found="yes"], [wc_found="no"])
[730]301AM_CONDITIONAL([HAVE_SVN_WC], [test "$wc_found" = "yes"])
[738]302AC_SUBST([wc_found])
[730]303
304# checking if we have test repo
305test_repo_filename=$srcdir/test/repo;
[835]306AS_IF([test -r $test_repo_filename],
[744]307              [AC_DEFINE([HAVE_TEST_REPO],[1],[define if test repo is available])
308               test_repo_found="yes"],
[730]309              [test_repo_found="no"])
[748]310AC_SUBST([test_repo_found])
[772]311AS_IF([test "x$test_repo_found" = xyes],
312      [abs_test_repo=`cd $test_repo_filename && pwd`;
313       AC_SUBST(abs_test_repo)]
314     )
[952]315AC_CONFIG_FILES([test/init.sh])
[772]316AC_CONFIG_FILES([test/svn_update.sh], [chmod +x test/svn_update.sh])
[540]317
[880]318dnl maintainer make rukes from yat project
[874]319YAT_SVN_RELEASE
[561]320
[901]321# Restore FLAGS
322APR_RESTORE_THE_ENVIRONMENT([CPPFLAGS], [DEFAULT_])
323APR_RESTORE_THE_ENVIRONMENT([CXXFLAGS], [DEFAULT_])
324
[2]325AC_CONFIG_FILES([Makefile
[21]326                bin/Makefile
327                lib/Makefile
[795]328                lib/yat/Makefile
[724]329                man/Makefile
[597]330                test/environment.h
[569]331                test/Makefile])
[2]332
[795]333AC_CONFIG_HEADER([lib/yat/config_public.h])
334
[164]335# Print failure status information about selected items, and exit if
336# fatal errors were encountered. No output will be created if
337# configure is halted prematurely.
[156]338
[164]339# used to trigger exit before creation of output
340all_reqs_ok="true"
[160]341
[730]342if (test "$wc_found" = "yes"); then
[742]343   if test x$HELP2MAN = xno; then
[740]344     AC_MSG_WARN(m4_text_wrap(m4_normalize([
345       `help2man' is missing on your system.  You will not be
346       able to create the man page. A sound man page should be
347       included in a distribution, and since you will not able
348       to create a complete distribution `make dist' will fail.
349       ]),[                   ],
350          [                             ], 79))
351   fi
[730]352   # svnversion is required when building from svn wc
353   if (test "$svnversion" = "no"); then
354      all_reqs_ok="false";
355      AC_MSG_WARN([dnl
356Cannot find svnversion, which is required when building from a
357subversion working copy. Please install svnversion and make sure it is
358in your search path.]);
359   fi
360   if (test "$test_repo_found" = "no"); then
361      all_reqs_ok="false";
362      AC_MSG_WARN([dnl
363Cannot find test repository (test_repo_filename), which should be
364available when building from a subversion working copy. Try svn
365update in top directory.]);
366   fi
[672]367fi
[540]368
[164]369# Non-existing APR is fatal -- sub-sequent compilation will fail.
370if (test "$apr_found" = "no") ; then
[670]371  AC_MSG_WARN([APR not found. The Apache Portable Runtime
372  (APR) library cannot be found. Please make sure APR is installed
373  and supply the appropriate --with-apr option to 'configure'.])
374  all_reqs_ok="false"
[164]375fi
[160]376
[164]377# Non-existing subversion API is fatal -- sub-sequent compilation will fail.
378if (test "$svn_found" = "no") ; then
[670]379  svn_msg="Subversion API not found. Subversion API libraries cannot
380  be found. Make sure the APIs are installed and supply the
381  appropriate --with-svn option to 'configure'."
382  if (test "$apr_found" = "no") ; then
[383]383    svn_msg="$svn_msg
[557]384    Note, APR was not found. Failure to locate APR affects the search
385    of the subversion API. Please fix the APR problem before trying
386    to resolve the subversion related issues."
[670]387  fi
388  AC_MSG_WARN([$svn_msg])
389  all_reqs_ok="false"
[383]390fi
[162]391
[858]392# Non-existing PLplot API is fatal -- sub-sequent compilation will fail.
[972]393AS_CASE([$plplot_found],
[901]394  [noheader],
395    [AC_MSG_WARN([
396    PLplot developer files cannot be found. Make sure PLplot is installed.])
397    all_reqs_ok="false"],
398  [old],
399    [AC_MSG_WARN([
400    PLplot developer files found but not required API version.
401    Version at least $plplot_version is required. Please upgrade PLplot.])
402    all_reqs_ok="false"],
403  [nolib],
404    [AC_MSG_WARN([
405    PLplot developer files found but linking against plplot library failed.])
406    all_reqs_ok="false"])
[858]407
[567]408if test $ac_cv_type_long_long_int != yes ; then
[670]409  AC_MSG_WARN([Compiler $CXX does not support `long long'.
410  svndigest must be compiled with a compiler that supports `long long'.])
411  all_reqs_ok="false"
[564]412fi
413
[164]414if (test "$all_reqs_ok" = "false") ; then
[670]415  AC_MSG_ERROR([Some pre-requisites were not fulfilled, aborting
416  configure. Please consult the 'README' file for more information
417  about what is needed to compile svndigest and refer to above
418  warning messages. Needed files were NOT created.])
[164]419fi
420
421# Create output.
422AC_OUTPUT
423
424# Some more messages.
[887]425AC_MSG_NOTICE([
426Ready to compile the executables of svndigest $VERSION
427The following flags and libs will be used:
428+++++++++++++++++++++++++++++++++++++++++++++++
429  Compiler:           $CXX
430  Preprocessor flags: $SD_CPPFLAGS $CPPFLAGS
431    CPPFLAGS:         $CPPFLAGS
432    DEFAULT_CPPFLAGS: $DEFAULT_CPPFLAGS
433    APR_CPPFLAGS:     $APR_CPPFLAGS
434    SVN_CPPFLAGS:     $SVN_CPPFLAGS
[888]435    PLPLOT_CPPFLAGS:  $PLPLOT_CPPFLAGS
[887]436  C++ flags:
437    CXXFLAGS:         $CXXFLAGS
438    DEFAULT_CXXFLAGS: $DEFAULT_CXXFLAGS
439  Linker flags:
440    LDFLAGS:          $LDFLAGS
441    APR_LDFLAGS:      $APR_LDFLAGS
442    SVN_LDFLAGS:      $SVN_LDFLAGS
443    PLPLOT_LDFLAGS:   $PLPLOT_LDFLAGS
444  Libraries:         
445    LIBS              $LIBS
446    APR_LIBS          $APR_LIBS
447    SVN_LIBS          $SVN_LIBS
[888]448    PLPLOT_LIBS       $PLPLOT_LIBS
[887]449+++++++++++++++++++++++++++++++++++++++++++++++]dnl
450)
[164]451
[880]452AC_MSG_NOTICE([Now type 'make all check'.])
Note: See TracBrowser for help on using the repository browser.