source: branches/0.4-stable/configure.ac @ 1285

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

warning about missing doxygen not only in debug-mode

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.8 KB
Line 
1## Process this file with autoconf to produce a configure script.
2##
3## $Id: configure.ac 1285 2008-04-23 21:40:19Z 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://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
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])
39AC_PREFIX_DEFAULT([/usr/local])
40
41AC_SUBST([YAT_LT_VERSION], [LT_VERSION])
42AC_SUBST([YAT_MAJOR_VERSION], [MAJOR_VERSION])
43AC_SUBST([YAT_MINOR_VERSION], [MINOR_VERSION])
44AC_SUBST([YAT_PATCH_VERSION], [PATCH_VERSION])
45
46AC_CONFIG_HEADER([config.h])
47AM_INIT_AUTOMAKE()
48
49# Set default programming language
50AC_LANG(C++)
51
52# Let user overide default CXXFLAGS
53if test "${CXXFLAGS+set}" != set; then
54  CXXFLAGS=""  # Setting CXXFLAGS here to prevent expansion in AC_PROG_CXX
55fi
56# Checks for programs.
57AC_PROG_CXX
58AC_PROG_INSTALL
59AC_PROG_SED
60AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [true], [false])
61
62AM_CONDITIONAL(HAVE_DOXYGEN, test "$HAVE_DOXYGEN" = "true")
63
64# Checks for libraries.
65AC_CHECK_LIB(m,main)
66# searching for cblas. Priority 1) find a cblas library, 2) find ATLAS
67# generated cblas, and 3) fall back to GSL cblas implementation. If
68# partial ATLAS is detected the configure script fails.
69cblas_found="no"  # cblas_found may get values yes or no
70# atlas_found may get values yes, no, or partial. In some cases
71# partial atlas may be installed
72atlas_found="no"
73gslcblas_found="no" # gslcblas_found may get values yes or no
74AC_SEARCH_LIBS(cblas_sdsdot,cblas,cblas_found="yes",
75  AC_SEARCH_LIBS(ATL_sdsdot,atlas,
76    AC_SEARCH_LIBS(cblas_sdsdot,cblas,atlas_found="yes",
77                   atlas_found="partial",-m64),
78      AC_SEARCH_LIBS(cblas_dswap,gslcblas,gslcblas_found="yes"),-m64),)
79if test ${atlas_found} = "yes"; then
80  CXXFLAGS="$CXXFLAGS -m64" LDFLAGS="$LDFLAGS -m64"
81fi
82
83# GNU Scientific Library, GSL http://www.gnu.org/software/gsl/, checks
84# Including AM_PATH_GSL macro from gsl.m4 distributed by GSL
85gsl_found="no"
86gsl_version="1.6"
87sinclude(./build_support/gsl.m4)
88AX_PATH_GSL(${gsl_version},gsl_found="yes",gsl_version_check="no")
89if test "$gsl_found" = "yes"; then
90   LIBS="-lgsl $LIBS"
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# Check for infinity support for doubles in OS
143# At run-time, but this has the disadvantage that yat cannot be built 
144# for cross-compilation
145AC_MSG_CHECKING([if std::numeric_limits<>::has_infinity is true])
146AC_RUN_IFELSE(
147  [AC_LANG_PROGRAM(
148    [#include <limits>],
149    [return !std::numeric_limits<double>::has_infinity])],
150  [has_infinity=yes],
151  [has_infinity=no])
152AC_MSG_RESULT($has_infinity)
153
154
155# yat specific settings
156YAT_LIB="libyat.la"
157YAT_LIB_LOCATION="yat"
158AC_SUBST(YAT_LIB)
159AC_SUBST(YAT_LIB_LOCATION)
160AC_DEFINE([YAT_MAJOR_VERSION],[MAJOR_VERSION], [Define to yat MAJOR version])
161AC_DEFINE([YAT_MINOR_VERSION],[MINOR_VERSION], [Define to yat MINOR version])
162AC_DEFINE([YAT_PATCH_VERSION],[PATCH_VERSION], [Define to yat PATCH version])
163AC_DEFINE([YAT_DEV_BUILD],[DEV_BUILD], [false if tagged release])
164
165#doxygen stuff
166DX_HTML_OUTPUT=html
167DX_LATEX_OUTPUT=latex
168AC_SUBST(DX_HTML_OUTPUT)
169AC_SUBST(DX_LATEX_OUTPUT)
170
171
172AC_CONFIG_FILES([Makefile
173     doc/Makefile
174     doc/doxygen.config
175     test/Makefile
176     test/environment.h
177     test/data/Makefile
178     yat/Makefile
179     yat/classifier/Makefile
180     yat/random/Makefile
181     yat/regression/Makefile
182     yat/statistics/Makefile
183     yat/utility/Makefile])
184
185# Only warning about missing programs (needed for docs generation)
186# when in debug mode
187if (test "$HAVE_DOXYGEN" != "true") ; then
188  AC_MSG_WARN([
189  Doxygen was not found. Yat will compile and work without doxygen.
190  However, in order to enable generation of documentation, please
191  install Doxygen available at http://www.doxygen.org/
192  ])
193fi
194
195# Print failure status information about selected items, and exit if
196# fatal errors were encountered. No output will be created if
197# configure is halted prematurely.
198
199# used to trigger exit before creation of output
200all_reqs_ok="true"
201
202# No support for quiet NAN is fatal -- sub-sequent compilation, or execution
203# of created binary, will fail.
204if test "${quiet_nan}" = "no" ; then
205  all_reqs_ok="false"
206  AC_MSG_WARN([
207  Support for quiet NAN required.
208  Yat will not work on this system!])
209fi
210
211# No support for infinity is fatal -- sub-sequent compilation, or execution
212# of created binary, will fail.
213if test "${has_infinity}" = "no" ; then
214  all_reqs_ok="false"
215  AC_MSG_WARN([
216  Support for infinity required.
217  Yat will not work on this system!])
218fi
219
220
221# Non-existing BLAS is fatal -- sub-sequent compilation will fail.
222if test "${cblas_found}" = "no" -a "${atlas_found}" = "no" -a "${gslcblas_found}" = "no"; then
223  all_reqs_ok="false"
224  AC_MSG_WARN([
225  cBLAS not found. The C implementation of Basic Linear Algebra
226  Subprograms (cBLAS) library cannot be found. Please make sure
227  cBLAS is installed.])
228fi
229if test "${atlas_found}" = "partial"; then
230  all_reqs_ok="false"
231  AC_MSG_WARN([
232  Partial ATLAS BLAS library found. Please repair your installation.])
233fi
234
235# Non-existing GSL is fatal -- sub-sequent compilation will fail.
236if test "${gsl_found}" = "no" ; then
237  all_reqs_ok="false"
238  if test "${gsl_version_check}" = "no" ; then
239  AC_MSG_WARN([
240  GSL found but not the required version. Please install
241  GSL version ${gsl_version} or later])
242  else
243  AC_MSG_WARN([
244  GSL not found. The GNU Scientific Library (GSL) library cannot be
245  found. Please make sure GSL is installed.])
246  fi
247fi
248
249if (test "$all_reqs_ok" = "false") ; then
250  AC_MSG_FAILURE([
251  Some pre-requisites were not fulfilled, aborting configure.
252  Please consult the 'README' file for more information about what
253  is needed to compile yat and refer to above warning messages.
254  Needed files were NOT created.])
255fi
256
257# Create output.
258AC_OUTPUT
259
260# Some more messages.
261AC_MSG_NOTICE([])
262AC_MSG_NOTICE([ Ready to compile the yat library])
263AC_MSG_NOTICE([ The following flags and libraries will be used:])
264AC_MSG_NOTICE([ +++++++++++++++++++++++++++++++++++++++++++++++])
265AC_MSG_NOTICE([  CPPFLAGS=\"$CPPFLAGS\"])
266AC_MSG_NOTICE([  CXXFLAGS=\"$CXXFLAGS\"])
267AC_MSG_NOTICE([  LIBS=\"$LIBS\"])
268AC_MSG_NOTICE([  LDFLAGS=\"$LDFLAGS\"])
269AC_MSG_NOTICE([ +++++++++++++++++++++++++++++++++++++++++++++++])
270AC_MSG_NOTICE([])
271if test "${gslcblas_found}" = "yes"; then
272AC_MSG_NOTICE([ GSL BLAS found. This is a reference implementation only.])
273AC_MSG_NOTICE([ Consider using hardware optimized BLAS.])
274AC_MSG_NOTICE([ ATLAS (http://math-atlas.sourceforge.net/) provides an])
275AC_MSG_NOTICE([ optimized BLAS library. It is supported by yat!])
276AC_MSG_NOTICE([])
277fi
278AC_MSG_NOTICE([ Now type 'make ; make check'.])
Note: See TracBrowser for help on using the repository browser.