source: trunk/configure.ac @ 1323

Last change on this file since 1323 was 1321, checked in by Peter, 15 years ago

Basically reverting r1319. I was not happy with the macro, so create defines are now placed in version.h instead. version.h is generated by configure from version.h.in. The macro ax_prefix_config_h.m4 will be removed later.

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