source: trunk/configure.ac @ 1213

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

remove extra '-g -O2' expansion of CXXFLAGS in AC_PROG_CXX

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