source: trunk/configure.ac @ 1105

Last change on this file since 1105 was 1097, checked in by Jari Häkkinen, 15 years ago

Fixes #243. ReleaseProcedures? was also changed.

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