source: trunk/configure.ac @ 1212

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

removing redundant test

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.2 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 1212 2008-03-07 04:00:28Z peter $
4
5# Copyright (C) 2003 Daniel Dalevi, Jari Häkkinen
6# Copyright (C) 2004 Jari Häkkinen
7# Copyright (C) 2005, 2006, 2007 Jari Häkkinen, Peter Johansson
8# Copyright (C) 2008 Jari Häkkinen
9#
10# This file is part of the yat library, http://trac.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
34AC_INIT([yat],[0.4pre],[jari@thep.lu.se])
35AC_PREREQ(2.60)
36AC_CONFIG_SRCDIR([yat/utility/Matrix.h])
37AC_CONFIG_AUX_DIR([autotools])
38AC_PREFIX_DEFAULT([/usr/local])
39
40# Library versioning (current:revision:age)
41# See the libtool manual for an explanation of the numbers
42#
43# yat-0.3    undefined
44# yat-0.4    1:0:0
45YAT_LT_VERSION="1:0:0"
46AC_SUBST(YAT_LT_VERSION)
47
48AM_CONFIG_HEADER([config.h])
49AM_INIT_AUTOMAKE()
50
51# Set default programming language
52AC_LANG(C++)
53
54# Checks for programs.
55AC_PROG_CXX
56AC_PROG_INSTALL
57AC_PROG_SED
58AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [true], [false])
59
60AM_CONDITIONAL(HAVE_DOXYGEN, test "$HAVE_DOXYGEN" = "true")
61
62# Checks for libraries.
63AC_CHECK_LIB(m,main)
64# searching for cblas. Priority 1) find a cblas library, 2) find ATLAS
65# generated cblas, and 3) fall back to GSL cblas implementation. If
66# partial ATLAS is detected the configure script fails.
67cblas_found="no"  # cblas_found may get values yes or no
68# atlas_found may get values yes, no, or partial. In some cases
69# partial atlas may be installed
70atlas_found="no"
71gslcblas_found="no" # gslcblas_found may get values yes or no
72AC_SEARCH_LIBS(cblas_sdsdot,cblas,cblas_found="yes",
73  AC_SEARCH_LIBS(ATL_sdsdot,atlas,
74    AC_SEARCH_LIBS(cblas_sdsdot,cblas,atlas_found="yes",
75                   atlas_found="partial",-m64),
76      AC_SEARCH_LIBS(cblas_dswap,gslcblas,gslcblas_found="yes"),-m64),)
77if test ${atlas_found} = "yes"; then
78  CXXFLAGS="$CXXFLAGS -m64" LDFLAGS="$LDFLAGS -m64"
79fi
80
81# GNU Scientific Library, GSL http://www.gnu.org/software/gsl/, checks
82# Including AM_PATH_GSL macro from gsl.m4 distributed by GSL
83gsl_found="no"
84gsl_version="1.6"
85sinclude(./build_support/gsl.m4)
86AM_PATH_GSL(${gsl_version},gsl_found="yes",gsl_version_check="no")
87if test "$gsl_found" = "yes"; then
88   LIBS="-lgsl $LIBS"
89fi
90
91# Checks for header files.
92AC_CHECK_HEADERS([unistd.h])
93
94# Checks for typedefs, structures, and compiler characteristics.
95AC_HEADER_STDBOOL
96AC_C_CONST
97AC_C_INLINE
98AC_TYPE_SIZE_T
99
100# Checks for library functions.
101AC_PROG_LIBTOOL
102AC_FUNC_ERROR_AT_LINE
103AC_HEADER_STDC
104AC_CHECK_FUNCS([pow sqrt])
105
106CXXFLAGS="$CXXFLAGS -Wall -pedantic"
107CPPFLAGS="$CPPFLAGS -DHAVE_INLINE=1"
108AC_ARG_ENABLE(debug,
109  [AS_HELP_STRING([--enable-debug],[turn on debug options and code])])
110if test "${enable_debug}" = "yes" ; then
111  CXXFLAGS="$CXXFLAGS -g -O"
112  CPPFLAGS="$CPPFLAGS -DYAT_DEBUG=1"
113else
114  CXXFLAGS="$CXXFLAGS -O3"
115  CPPFLAGS="$CPPFLAGS -DNDEBUG -DGSL_RANGE_CHECK_OFF"
116fi
117
118# check for quiet_NaN support in OS
119# At compile time, but this may not work if quiet_NaN exists and returns
120# an incorrect value
121AC_MSG_CHECKING([for std::numeric_limits<>::quiet_NaN()])
122AC_COMPILE_IFELSE(
123  [AC_LANG_PROGRAM(
124    [#include <limits>
125     extern void f(double);],
126    [f(std::numeric_limits<double>::quiet_NaN())])],
127  [quiet_nan=yes],
128  [quiet_nan=no])
129AC_MSG_RESULT($quiet_nan)
130# At run-time, but this has the disadvantage that yat cannot be built 
131# for cross-compilation
132AC_MSG_CHECKING([if std::numeric_limits<>::has_quiet_NaN is true])
133AC_RUN_IFELSE(
134  [AC_LANG_PROGRAM(
135    [#include <limits>],
136    [return !std::numeric_limits<double>::has_quiet_NaN])],
137  [quiet_nan=yes],
138  [quiet_nan=no])
139AC_MSG_RESULT($quiet_nan)
140# Check for infinity support for doubles in OS
141# At run-time, but this has the disadvantage that yat cannot be built 
142# for cross-compilation
143AC_MSG_CHECKING([if std::numeric_limits<>::has_infinity is true])
144AC_RUN_IFELSE(
145  [AC_LANG_PROGRAM(
146    [#include <limits>],
147    [return !std::numeric_limits<double>::has_infinity])],
148  [has_infinity=yes],
149  [has_infinity=no])
150AC_MSG_RESULT($has_infinity)
151
152
153# yat specific settings
154YAT_LIB="libyat.la"
155YAT_LIB_LOCATION="yat"
156AC_SUBST(YAT_LIB)
157AC_SUBST(YAT_LIB_LOCATION)
158
159AC_CONFIG_FILES([Makefile
160     doc/Makefile
161     test/Makefile
162     test/data/Makefile
163     yat/Makefile
164     yat/classifier/Makefile
165     yat/random/Makefile
166     yat/regression/Makefile
167     yat/statistics/Makefile
168     yat/utility/Makefile])
169
170# Only warning about missing programs (needed for docs generation)
171# when in debug mode
172if (test "$enable_debug" == "yes"); then
173if (test "$HAVE_DOXYGEN" != "true") ; then
174  AC_MSG_WARN([
175  Doxygen was not found. Yat will compile and work without doxygen.
176  However, in order to enable generation of documentation, please
177  install Doxygen available at http://www.doxygen.org/
178  ])
179fi
180fi
181
182# Print failure status information about selected items, and exit if
183# fatal errors were encountered. No output will be created if
184# configure is halted prematurely.
185
186# used to trigger exit before creation of output
187all_reqs_ok="true"
188
189# No support for quiet NAN is fatal -- sub-sequent compilation, or execution
190# of created binary, will fail.
191if test "${quiet_nan}" = "no" ; then
192  all_reqs_ok="false"
193  AC_MSG_WARN([
194  Support for quiet NAN required.
195  Yat will not work on this system!])
196fi
197
198# No support for infinity is fatal -- sub-sequent compilation, or execution
199# of created binary, will fail.
200if test "${has_infinity}" = "no" ; then
201  all_reqs_ok="false"
202  AC_MSG_WARN([
203  Support for infinity required.
204  Yat will not work on this system!])
205fi
206
207
208# Non-existing BLAS is fatal -- sub-sequent compilation will fail.
209if test "${cblas_found}" = "no" -a "${atlas_found}" = "no" -a "${gslcblas_found}" = "no"; then
210  all_reqs_ok="false"
211  AC_MSG_WARN([
212  cBLAS not found. The C implementation of Basic Linear Algebra
213  Subprograms (cBLAS) library cannot be found. Please make sure
214  cBLAS is installed.])
215fi
216if test "${atlas_found}" = "partial"; then
217  all_reqs_ok="false"
218  AC_MSG_WARN([
219  Partial ATLAS BLAS library found. Please repair your installation.])
220fi
221
222# Non-existing GSL is fatal -- sub-sequent compilation will fail.
223if test "${gsl_found}" = "no" ; then
224  all_reqs_ok="false"
225  if test "${gsl_version_check}" = "no" ; then
226  AC_MSG_WARN([
227  GSL found but not the required version. Please install
228  GSL version ${gsl_version} or later])
229  else
230  AC_MSG_WARN([
231  GSL not found. The GNU Scientific Library (GSL) library cannot be
232  found. Please make sure GSL is installed.])
233  fi
234fi
235
236if (test "$all_reqs_ok" = "false") ; then
237  AC_MSG_FAILURE([
238  Some pre-requisites were not fulfilled, aborting configure.
239  Please consult the 'README' file for more information about what
240  is needed to compile yat and refer to above warning messages.
241  Needed files were NOT created.])
242fi
243
244# Create output.
245AC_OUTPUT
246
247# Some more messages.
248AC_MSG_NOTICE([])
249AC_MSG_NOTICE([ Ready to compile the yat library])
250AC_MSG_NOTICE([ The following flags and libraries will be used:])
251AC_MSG_NOTICE([ +++++++++++++++++++++++++++++++++++++++++++++++])
252AC_MSG_NOTICE([  CPPFLAGS=\"$CPPFLAGS\"])
253AC_MSG_NOTICE([  CXXFLAGS=\"$CXXFLAGS\"])
254AC_MSG_NOTICE([  LIBS=\"$LIBS\"])
255AC_MSG_NOTICE([  LDFLAGS=\"$LDFLAGS\"])
256AC_MSG_NOTICE([ +++++++++++++++++++++++++++++++++++++++++++++++])
257AC_MSG_NOTICE([])
258if test "${gslcblas_found}" = "yes"; then
259AC_MSG_NOTICE([ GSL BLAS found. This is a reference implementation only.])
260AC_MSG_NOTICE([ Consider using hardware optimized BLAS.])
261AC_MSG_NOTICE([ ATLAS (http://math-atlas.sourceforge.net/) provides an])
262AC_MSG_NOTICE([ optimized BLAS library. It is supported by yat!])
263AC_MSG_NOTICE([])
264fi
265AC_MSG_NOTICE([ Now type 'make ; make check'.])
Note: See TracBrowser for help on using the repository browser.