source: trunk/configure.ac @ 1459

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

Cleaning up in configure.ac. Removed a couple of macros that were C
specific or obsolete. Possibly we could keep tests for sqrt but then
we need to use the test somehow (see discussion in ticket:430. Closes
#430 and #431.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 11.8 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 1459 2008-08-31 13:46:07Z peter $
4
5# Copyright (C) 2003 Daniel Dalevi, Jari Häkkinen
6# Copyright (C) 2004 Jari Häkkinen
7# Copyright (C) 2005, 2006 Jari Häkkinen, Peter Johansson
8# Copyright (C) 2007, 2008 Jari Häkkinen, Peter Johansson, Markus Ringnér
9#
10# This file is part of the yat library, http://dev.thep.lu.se/yat
11#
12# The yat library is free software; you can redistribute it
13# and/or modify it under the terms of the GNU General Public License as
14# published by the Free Software Foundation; either version 2 of the
15# License, or (at your option) any later version.
16#
17# The yat library is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, write to the Free Software
24# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25# 02111-1307, USA.
26#
27# If you grabbed the source from the subversion repository you should,
28# at top-level, execute:
29#     ./bootstrap
30# To push subsequent changes of this file into the build scripts you
31# must issue:
32#     autoreconf
33
34m4_include([./build_support/version.m4])
35AC_INIT([yat],[YAT_VERSION],[jari@thep.lu.se])
36AC_PREREQ(2.60)
37AC_CONFIG_SRCDIR([yat/utility/Matrix.h])
38AC_CONFIG_AUX_DIR([autotools])
39dnl arg below should be the same as in Makefile.am
40AC_CONFIG_MACRO_DIR([build_support])
41AC_PREFIX_DEFAULT([/usr/local])
42
43AC_SUBST([YAT_LT_VERSION], [LT_VERSION])
44AC_SUBST([YAT_MAJOR_VERSION], [MAJOR_VERSION])
45AC_SUBST([YAT_MINOR_VERSION], [MINOR_VERSION])
46AC_SUBST([YAT_PATCH_VERSION], [PATCH_VERSION])
47AC_SUBST([YAT_DEV_BUILD], [DEV_BUILD])
48
49AC_CONFIG_HEADER([config.h])
50AM_INIT_AUTOMAKE()
51
52# Set default programming language
53AC_LANG(C++)
54
55# Let user overide default CXXFLAGS
56if test "${CXXFLAGS+set}" != set; then
57  CXXFLAGS=""  # Setting CXXFLAGS here to prevent expansion in AC_PROG_CXX
58fi
59# Checks for programs.
60AC_PROG_CXX
61AC_PROG_INSTALL
62AC_PROG_SED
63
64AC_MSG_NOTICE(dnl
65[checking whether tools for generating documentation are available])
66
67have_dox_tools="yes"
68AC_PATH_PROG([DOXYGEN], [doxygen], [no])
69if test "$DOXYGEN" = "no"; then
70   AC_MSG_WARN([unable to find doxygen application])
71   have_dox_tools=no
72else
73   doxygen_min_version=1.5
74   AC_MSG_CHECKING([if doxygen is at least $doxygen_min_version])
75   doxygen_version=`$DOXYGEN --version`
76   AX_COMPARE_VERSION([$doxygen_version], [ge], [$doxygen_min_version], ,
77                      [have_dox_tools=no])
78   AC_MSG_RESULT([$doxygen_version])
79fi
80AC_CHECK_PROG([have_epstopdf], [epstopdf], [yes], [no])
81if test "$have_epstopdf" != "yes"; then
82   AC_MSG_WARN([unable to find epstopdf application])
83   have_dox_tools=no
84fi
85AC_CHECK_PROG([have_latex], [latex], [yes], [no])
86if test "$have_latex" != "yes"; then
87   AC_MSG_WARN([unable to find latex application])
88fi
89AC_CHECK_PROG([have_makeindex], [makeindex], [yes], [no])
90if test "$have_makeindex" != "yes"; then
91   AC_MSG_WARN([unable to find makeindex application])
92   have_dox_tools=no
93fi
94AC_CHECK_PROG([have_pdflatex], [pdflatex], [yes], [no])
95if test "$have_pdflatex" != "yes"; then
96   AC_MSG_WARN([unable to find pdflatex application])
97   have_dox_tools=no
98fi
99
100AM_CONDITIONAL(HAVE_DOXYGEN, test "$have_dox_tools" = "yes")
101AC_CONFIG_FILES([test/documentation_test.sh],
102                [chmod +x test/documentation_test.sh])
103
104# Save user-defined environment settings for later restoration
105APR_SAVE_THE_ENVIRONMENT(CPPFLAGS)
106APR_SAVE_THE_ENVIRONMENT(CXXFLAGS)
107APR_SAVE_THE_ENVIRONMENT(LDFLAGS)
108
109# Checks for libraries.
110AC_MSG_NOTICE([checking for libraries])
111AC_CHECK_LIB(m,main)
112# searching for cblas. Priority 1) find a cblas library, 2) find ATLAS
113# generated cblas, and 3) fall back to GSL cblas implementation. If
114# partial ATLAS is detected the configure script fails.
115cblas_found="no"  # cblas_found may get values yes or no
116# atlas_found may get values yes, no, or partial. In some cases
117# partial atlas may be installed
118atlas_found="no"
119gslcblas_found="no" # gslcblas_found may get values yes or no
120AC_SEARCH_LIBS(cblas_sdsdot,cblas,cblas_found="yes",
121  AC_SEARCH_LIBS(ATL_sdsdot,atlas,
122    AC_SEARCH_LIBS(cblas_sdsdot,cblas,atlas_found="yes",
123                   atlas_found="partial",-m64),
124      AC_SEARCH_LIBS(cblas_dswap,gslcblas,gslcblas_found="yes"),-m64),)
125# CBLAS used in test of GSL
126gsl_cblas_lib=-lgslcblas
127if test ${cblas_found} = "yes"; then
128  gsl_cblas_lib=-lcblas
129fi
130if test ${atlas_found} = "yes"; then
131  CXXFLAGS="$CXXFLAGS -m64" LDFLAGS="$LDFLAGS -m64"
132  gsl_cblas_lib=-latlas
133fi
134export GSL_CBLAS_LIB=${gsl_cblas_lib}
135
136# GNU Scientific Library, GSL http://www.gnu.org/software/gsl/, checks
137# Including AX_PATH_GSL macro from gsl.m4 distributed by GSL
138gsl_found="no"
139gsl_version="1.8"
140AC_SUBST(gsl_version)
141AX_PATH_GSL(${gsl_version},gsl_found="yes",gsl_version_check="no")
142if test "$gsl_found" = "yes"; then
143   LIBS="-lgsl $LIBS"
144   # grep words starting with '-L' in other words LDFLAGS
145   for i in $GSL_LIBS; do
146     if test ${i:0:2} = "-L"; then
147       LDFLAGS="$LDFLAGS $i"
148     fi
149   done
150fi
151
152# Boost http://www.boost.org
153boost_version=1.33
154AC_SUBST(boost_version)
155AX_BOOST_BASE("$boost_version")
156boost_version_check=$succeeded;
157CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
158
159# Checks for library functions.
160AC_PROG_LIBTOOL
161
162#support for large files
163AC_SYS_LARGEFILE
164if test "$enable_largefile" = "no"; then
165  AC_DEFINE([YAT_LFS_DISABLED], 1,
166            [defined to 1 if large file support is disabled])
167fi
168
169CXXFLAGS="$CXXFLAGS -Wall -pedantic"
170CPPFLAGS="$CPPFLAGS -DHAVE_INLINE=1"
171AC_ARG_ENABLE(debug,
172  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])])
173if test "${enable_debug}" = "yes" ; then
174  CXXFLAGS="$CXXFLAGS -g -O"
175  CPPFLAGS="$CPPFLAGS -DYAT_DEBUG=1"
176else
177  CXXFLAGS="$CXXFLAGS -O3"
178  CPPFLAGS="$CPPFLAGS -DNDEBUG -DGSL_RANGE_CHECK_OFF"
179fi
180
181# check for quiet_NaN support in OS
182# Check at run-time, but if we are cross-compiling fall back on a
183# compilation test
184AC_MSG_CHECKING([if std::numeric_limits<>::has_quiet_NaN is true])
185AC_RUN_IFELSE(
186  [AC_LANG_PROGRAM(
187    [@%:@include <limits>],
188    [return !std::numeric_limits<double>::has_quiet_NaN])],
189  [quiet_nan=yes
190   AC_MSG_RESULT($quiet_nan)],
191  [quiet_nan=no
192   AC_MSG_RESULT($quiet_nan)],
193  # if we are cross-compiling fall back on compilation test
194  [AC_MSG_RESULT(cross-compiling)
195   AC_MSG_CHECKING([for std::numeric_limits<>::quiet_NaN()])
196    AC_COMPILE_IFELSE(
197     [AC_LANG_PROGRAM(
198        [@%:@include <limits>
199         extern void f(double);],
200        [f(std::numeric_limits<double>::quiet_NaN())])],
201     [quiet_nan=yes],
202     [quiet_nan=no])
203   AC_MSG_RESULT($quiet_nan)])
204# Check for infinity support for doubles in OS
205# Check at run-time, but if we are cross-compiling fall back on a
206# compilation test
207AC_MSG_CHECKING([if std::numeric_limits<>::has_infinity is true])
208AC_RUN_IFELSE(
209  [AC_LANG_PROGRAM(
210    [@%:@include <limits>],
211    [return !std::numeric_limits<double>::has_infinity])],
212  [has_infinity=yes
213   AC_MSG_RESULT($has_infinity)],
214  [has_infinity=no
215   AC_MSG_RESULT($has_infinity)],
216  # if we are cross-compiling fall back on compilation test
217  [AC_MSG_RESULT(cross-compiling)
218   AC_MSG_CHECKING([for std::numeric_limits<>::infinity()])
219    AC_COMPILE_IFELSE(
220     [AC_LANG_PROGRAM(
221        [@%:@include <limits>
222         extern void f(double);],
223        [f(std::numeric_limits<double>::infinity())])],
224     [has_infinity=yes],
225     [has_infinity=no])
226   AC_MSG_RESULT($has_infinity)])
227
228
229# yat specific settings
230YAT_LIBNAME="yat"
231YAT_LIB_LOCATION="yat"
232AC_SUBST(YAT_LIBNAME)
233AC_SUBST(YAT_LIB)
234AC_SUBST(YAT_LIB_LOCATION)
235
236#doxygen stuff
237DX_HTML_OUTPUT=html
238DX_LATEX_OUTPUT=latex
239AC_SUBST(DX_HTML_OUTPUT)
240AC_SUBST(DX_LATEX_OUTPUT)
241
242
243AC_CONFIG_FILES([Makefile
244     build_support/yat.pc
245     doc/Makefile
246     doc/doxygen.config
247     doc/first_page.doxygen
248     test/Makefile
249     test/environment.h
250     test/data/Makefile
251     yat/Makefile
252     yat/classifier/Makefile
253     yat/normalization/Makefile
254     yat/random/Makefile
255     yat/regression/Makefile
256     yat/statistics/Makefile
257     yat/utility/version.h
258     yat/utility/Makefile])
259
260AC_CONFIG_FILES([build_support/yat-config],
261                [chmod +x build_support/yat-config])
262
263# warning about missing doxygen
264if (test "$have_dox_tools" != "yes") ; then
265  AC_MSG_WARN([
266  Some pre-requisites for generating documentation were not
267  fulfilled. The build will not create any documentation.
268  Please consult the 'README' file for more information about
269  what is needed to generate documentation and refer to above
270  warning messages.
271  ])
272fi
273
274# Print failure status information about selected items, and exit if
275# fatal errors were encountered. No output will be created if
276# configure is halted prematurely.
277
278# used to trigger exit before creation of output
279all_reqs_ok="true"
280
281# No support for quiet NAN is fatal -- sub-sequent compilation, or execution
282# of created binary, will fail.
283if test "${quiet_nan}" = "no" ; then
284  all_reqs_ok="false"
285  AC_MSG_WARN([
286  Support for quiet NAN required.
287  Yat will not work on this system!])
288fi
289
290# No support for infinity is fatal -- sub-sequent compilation, or execution
291# of created binary, will fail.
292if test "${has_infinity}" = "no" ; then
293  all_reqs_ok="false"
294  AC_MSG_WARN([
295  Support for infinity required.
296  Yat will not work on this system!])
297fi
298
299
300# Non-existing BLAS is fatal -- sub-sequent compilation will fail.
301if test "${cblas_found}" = "no" -a "${atlas_found}" = "no" -a "${gslcblas_found}" = "no"; then
302  all_reqs_ok="false"
303  AC_MSG_WARN([
304  cBLAS not found. The C implementation of Basic Linear Algebra
305  Subprograms (cBLAS) library cannot be found. Please make sure
306  cBLAS is installed.])
307fi
308if test "${atlas_found}" = "partial"; then
309  all_reqs_ok="false"
310  AC_MSG_WARN([
311  Partial ATLAS BLAS library found. Please repair your installation.])
312fi
313
314# Non-existing GSL is fatal -- sub-sequent compilation will fail.
315if test "${gsl_found}" = "no" ; then
316  all_reqs_ok="false"
317  if test "${gsl_version_check}" = "no" ; then
318  AC_MSG_WARN([
319  GSL found but not the required version. Please install
320  GSL version ${gsl_version} or later])
321  else
322  AC_MSG_WARN([
323  GSL not found. The GNU Scientific Library (GSL) library cannot be
324  found. Please make sure GSL is installed.])
325  fi
326fi
327
328# Too old Boost is fatal -- sub-sequent compilation will fail.
329if test "${boost_version_check}" != "yes" ; then
330  all_reqs_ok="false"
331  AC_MSG_WARN([
332  Boost found but not the required version. Please install
333  Boost version ${boost_version} or later])
334fi
335
336if (test "$all_reqs_ok" = "false") ; then
337  AC_MSG_FAILURE([
338  Some pre-requisites were not fulfilled, aborting configure.
339  Please consult the 'README' file for more information about what
340  is needed to compile yat and refer to above warning messages.
341  Needed files were NOT created.])
342fi
343
344# Reset flags
345APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
346APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_)
347APR_RESTORE_THE_ENVIRONMENT(LDFLAGS, EXTRA_)
348
349# Create output.
350AC_OUTPUT
351
352# Some more messages.
353AC_MSG_NOTICE([])
354AC_MSG_NOTICE([ Ready to compile the yat library])
355AC_MSG_NOTICE([ The following flags and libraries will be used:])
356AC_MSG_NOTICE([ +++++++++++++++++++++++++++++++++++++++++++++++])
357AC_MSG_NOTICE([  CPPFLAGS=\"$CPPFLAGS\"])
358AC_MSG_NOTICE([  EXTRA_CPPFLAGS=\"$EXTRA_CPPFLAGS\"])
359AC_MSG_NOTICE([  CXXFLAGS=\"$CXXFLAGS\"])
360AC_MSG_NOTICE([  EXTRA_CXXFLAGS=\"$EXTRA_CXXFLAGS\"])
361AC_MSG_NOTICE([  LDFLAGS=\"$LDFLAGS\"])
362AC_MSG_NOTICE([  EXTRA_LDFLAGS=\"$EXTRA_LDFLAGS\"])
363AC_MSG_NOTICE([  LIBS=\"$LIBS\"])
364AC_MSG_NOTICE([ +++++++++++++++++++++++++++++++++++++++++++++++])
365AC_MSG_NOTICE([])
366if test "${gslcblas_found}" = "yes"; then
367AC_MSG_NOTICE([ GSL BLAS found. This is a reference implementation only.])
368AC_MSG_NOTICE([ Consider using hardware optimized BLAS.])
369AC_MSG_NOTICE([ ATLAS (http://math-atlas.sourceforge.net/) provides an])
370AC_MSG_NOTICE([ optimized BLAS library. It is supported by yat!])
371AC_MSG_NOTICE([])
372fi
373AC_MSG_NOTICE([ Now type 'make ; make check'.])
Note: See TracBrowser for help on using the repository browser.