configure.ac 8.59 KB
Newer Older
Adam Mercer's avatar
Adam Mercer committed
1
AC_PREREQ([2.63])
2
AC_INIT([LALInference],[1.8.2.1],[lal-discuss@ligo.org])
3
AC_CONFIG_HEADERS([src/config.h src/LALInferenceConfig.h])
4
5
6
7
8
9
AC_CONFIG_SRCDIR([src/LALInference.h])
AC_CONFIG_AUX_DIR([gnuscripts])
AC_CONFIG_MACRO_DIR([gnuscripts])
AC_CONFIG_FILES([ \
  Makefile \
  debian/Makefile \
10
  debian/control \
11
12
  doxygen/Makefile \
  doxygen/doxygen.cfg \
13
14
  include/Makefile \
  include/lal/Makefile \
15
16
  lalinference.pc \
  lalinference.spec \
17
  python/Makefile \
18
19
20
  python/lalinference/Makefile \
  python/lalinference/__init__.py \
  python/lalinference/bayestar/Makefile \
21
  python/lalinference/io/Makefile \
22
  python/lalinference/rapid_pe/Makefile \
23
  python/lalinference/imrtgr/Makefile \
24
  python/lalinference/tiger/Makefile \
25
  python/lalinference/plot/Makefile \
26
  python/lalinference/popprior/Makefile \
27
28
29
  src/LALInferenceVCSInfo.c \
  src/LALInferenceVCSInfo.h \
  src/Makefile \
30
  src/version.c \
31
  swig/Makefile \
Leo P. Singer's avatar
Leo P. Singer committed
32
  test/Makefile \
33
])
34
35
36
37
38
39
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
Adam Mercer's avatar
Adam Mercer committed
40
  tar-ustar \
41
42
  dist-xz \
  no-dist-gzip \
43
])
44

45
# version requirements
46
MIN_GLUE_VERSION="1.49.1"
47
48
49
50
51
52
53
54
MIN_LAL_VERSION="6.17.0"
MIN_LALMETAIO_VERSION="1.3.0"
MIN_LALFRAME_VERSION="1.4.2"
MIN_LALSIMULATION_VERSION="1.6.1"
MIN_LALINSPIRAL_VERSION="1.7.6"
MIN_LALPULSAR_VERSION="1.15.0"
MIN_LALBURST_VERSION="1.4.3"
MIN_LALXML_VERSION="1.2.3"
55
AC_SUBST([MIN_GLUE_VERSION])
56
57
58
59
60
61
62
63
64
AC_SUBST([MIN_LAL_VERSION])
AC_SUBST([MIN_LALMETAIO_VERSION])
AC_SUBST([MIN_LALFRAME_VERSION])
AC_SUBST([MIN_LALSIMULATION_VERSION])
AC_SUBST([MIN_LALINSPIRAL_VERSION])
AC_SUBST([MIN_LALPULSAR_VERSION])
AC_SUBST([MIN_LALBURST_VERSION])
AC_SUBST([MIN_LALXML_VERSION])

65
66
AC_CANONICAL_HOST

67
68
LALSUITE_ARG_VAR

Karl Wette's avatar
Karl Wette committed
69
LALSUITE_CHECK_GIT_REPO
70
LALSUITE_DISTCHECK_CONFIGURE_FLAGS
71

72
73
74
75
76
77
78
79
80
81
82
83
84
85
# set library api info
# 1. start with version information of "0:0:0" for each libtool library
# 2. update the version information only immediately before a public
#    release of your software. More frequent updates are unnecessary,
#    and only guarantee that the current interface number gets larger
#    faster.
# 3. if the library source code has changed at all since the last
#    update, then increment revision ("c:r:a" becomes "c:r+1:a").
# 4. if any interfaces have been added, removed, or changed since the
#    last update, increment current, and set revision to 0.
# 5. if any interfaces have been added since the last public release,
#    then increment age.
# 6. if any interfaces have been removed since the last public release,
#    then set age to 0.
86
AC_SUBST([LIBCURRENT],[12])
87
AC_SUBST([LIBREVISION],[0])
88
AC_SUBST([LIBAGE],[0])
89
90
91
92
93
AC_SUBST([LIBVERSION],[${LIBCURRENT}:${LIBREVISION}:${LIBAGE}])

# nightly build
LALSUITE_ENABLE_NIGHTLY

94
95
96
97
98
99
100
101
# enable strict gcc flags
LALSUITE_ENABLE_GCC_FLAGS

# optional lal libraries
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALPULSAR
102
LALSUITE_ENABLE_LALBURST
103
104
LALSUITE_ENABLE_LALXML

105
106
107
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

108
109
110
# enable Doxygen documentation
LALSUITE_ENABLE_DOXYGEN

111
112
113
# enable help2man documentation
LALSUITE_ENABLE_HELP2MAN

114
115
# define version/configure info
LALSUITE_VERSION_CONFIGURE_INFO
116

117
118
119
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

120
121
# use silent build rules
AM_SILENT_RULES([yes])
122

123
124
# check for required compilers
LALSUITE_PROG_COMPILERS
125

126
# checks for programs
127
AC_PROG_INSTALL
128
AC_PROG_LN_S
129
AC_PROG_AWK
130
AC_PROG_SED
131
LALSUITE_CHECK_PYTHON([2.6])
132
133
134
135
136
137
138
139
140

# check for supported mac os x version
LALSUITE_OSX_VERSION_CHECK

# link tests using libtool
LALSUITE_USE_LIBTOOL

# check for header files
AC_HEADER_STDC
141
AC_CHECK_HEADERS([unistd.h])
142
143
144
145

# check for required libraries
AC_CHECK_LIB([m],[main],,[AC_MSG_ERROR([could not find the math library])])

146
# check for OpenMP
147
LALSUITE_ENABLE_OPENMP
148
149

# check for HEALPix
150
PKG_CHECK_MODULES([CHEALPIX],[chealpix >= 3.30.0],[true],[false])
151
LALSUITE_ADD_FLAGS([C],[${CHEALPIX_CFLAGS}],[${CHEALPIX_LIBS}])
152
153
HEALPIX_ENABLE_VAL=ENABLED
AC_CHECK_LIB([chealpix],[nside2npix],,[HEALPIX_ENABLE_VAL=DISABLED])
154
155
AM_CONDITIONAL([HAVE_CHEALPIX],[test "x$HEALPIX_ENABLE_VAL" = "xENABLED"])

156
157
# check for gsl
PKG_CHECK_MODULES([GSL],[gsl],[true],[false])
158
LALSUITE_ADD_FLAGS([C],[${GSL_CFLAGS}],[${GSL_LIBS}])
159
AC_CHECK_LIB([gslcblas],[main],,[AC_MSG_ERROR([could not find the gsl library])])
Karl Wette's avatar
Karl Wette committed
160
AC_CHECK_LIB([gsl],[gsl_version],,[AC_MSG_ERROR([could not find the gsl library])])
161
LALSUITE_CHECK_GSL_VERSION([1.15])
162
LALSUITE_ENABLE_FAST_GSL
163
164
165
166
167
168

# check for gsl headers
AC_CHECK_HEADERS([gsl/gsl_errno.h],,[AC_MSG_ERROR([could not find the gsl/gsl_errno.h header])])

# metaio
PKG_CHECK_MODULES([METAIO],[libmetaio],[true],[false])
169
LALSUITE_ADD_FLAGS([C],[${METAIO_CFLAGS}],[${METAIO_LIBS}])
170
171
172
173
174
AC_CHECK_LIB([metaio],[MetaioOpen],,[AC_MSG_ERROR([could not find the metaio library])])

# check for libmetaio headers
AC_CHECK_HEADERS([metaio.h],,[AC_MSG_ERROR([could not find the metaio.h header])])

175
176
177
178
179
180
181
182
183
184
185
186
187
188
# check for hdf5 support
HDF5_ENABLE_VAL="DISABLED"
# Note that AX_LIB_HDF5 uses h5cc to determine compiler for configure tests.
# Make sure that it uses the same compiler as we are using.
# Otherwise the configure tests may fail if we are using icc.
HDF5_CC="${CC}"; export HDF5_CC
HDF5_CLINKER="${CC}"; export HDF5_CLINKER
AX_LIB_HDF5()
unset HDF5_CC
unset HDF5_CLINKER
if test "${with_hdf5}" != "yes"; then
  AC_MSG_ERROR([could not find the HDF5 library])
fi

189
190
191
if test "$lalxml" = "true"; then
  # check for libxml2
  PKG_CHECK_MODULES([LIBXML2],[libxml-2.0 >= 2.6],[true],[false])
192
  LALSUITE_ADD_FLAGS([C],[${LIBXML2_CFLAGS}],[${LIBXML2_LIBS}])
193
194
195
  AC_CHECK_LIB([xml2],[xmlInitParser],,[AC_MSG_WARN([cannot find the xml2 library])])
fi

196
# check for lal libraries and headers
197
LALSUITE_CHECK_LIB([LAL],[${MIN_LAL_VERSION}],[XLALPerror],[lal/XLALError.h])
198
199
200
201
202
203
204
205
LALSUITE_CHECK_LIB([LALSupport],[${MIN_LAL_VERSION}],[XLALCacheImport],[lal/LALCache.h])
LALSUITE_CHECK_LIB([LALMetaIO],[${MIN_LALMETAIO_VERSION}],[XLALCreateMetaTableDir],[lal/LIGOLwXMLRead.h])
LALSUITE_CHECK_LIB([LALFrame],[${MIN_LALFRAME_VERSION}],[LALFrOpen],[lal/LALFrameL.h])
LALSUITE_CHECK_LIB([LALSimulation],[${MIN_LALSIMULATION_VERSION}],[XLALSimDetectorStrainREAL8TimeSeries],[lal/LALSimulation.h])
LALSUITE_CHECK_LIB([LALInspiral],[${MIN_LALINSPIRAL_VERSION}],[LALInspiralParameterCalc],[lal/LALInspiral.h])
LALSUITE_CHECK_LIB([LALPulsar],[${MIN_LALPULSAR_VERSION}],[XLALComputeFstat],[lal/ComputeFstat.h])
LALSUITE_CHECK_LIB([LALBurst],[${MIN_LALBURST_VERSION}],[XLALEPSearch],[lal/EPSearch.h])

206

207
# check for lalxml
208
LALSUITE_CHECK_OPT_LIB([LALXML],[${MIN_LALXML_VERSION}],[XLALXMLFilePrintElements],[lal/LALXML.h])
John Douglas Veitch's avatar
John Douglas Veitch committed
209

210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
dnl FIXME: This doesn't work in the top-level build, because it tries
dnl to compile and link against LAL itself, which will not have been built yet.
dnl
dnl AC_MSG_CHECKING([if LAL was built with HDF5 support])
dnl AC_RUN_IFELSE(
dnl   [AC_LANG_PROGRAM(
dnl     [
dnl       #include <lal/H5FileIO.h>
dnl       #include <lal/XLALError.h>
dnl     ],
dnl     [
dnl       int ret;
dnl       (void)XLALSetSilentErrorHandler();
dnl       (void)XLALH5FileOpen(NULL, NULL);
dnl       return xlalErrno != XLAL_EFAULT;
dnl     ]
dnl   )],
dnl   [AC_MSG_RESULT([yes])],
dnl   [
dnl     AC_MSG_RESULT([no])
dnl     AC_MSG_ERROR([LAL must be built with HDF5 support in order to build LALInference])
dnl   ]
dnl )
233

234
# configure SWIG wrapping modules
Karl Wette's avatar
Karl Wette committed
235
LALSUITE_USE_SWIG
236

237
238
239
# configure Doxygen documentation
LALSUITE_USE_DOXYGEN

240
241
242
# add gcc specific flags
LALSUITE_ADD_GCC_FLAGS

243
244
245
# link any executables against LALInference library
AC_SUBST([LDADD], ["\$(top_builddir)/src/liblalinference.la"])

246
247
248
249
# add extra preprocessor flags
AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"

250
251
252
# force headers to be installed in ${includedir}/lal, ignoring library name
AC_SUBST([pkgincludedir], ["\${includedir}/lal"])

253
254
255
256
257
# force all python modules into the exec dir to prevent mixed C and
# pure-python library code from being split across lib and lib64 on
# RedHat-derived systems.
AC_SUBST([pkgpythondir], ["\${pkgpyexecdir}"])

258
# output
259
AC_OUTPUT
260
AC_MSG_NOTICE([
261
262
==================================================
LALInference has now been successfully configured:
263

264
* Python support is $PYTHON_ENABLE_VAL
265
* LALXML library support is $LALXML_ENABLE_VAL
Karl Wette's avatar
Karl Wette committed
266
267
* SWIG bindings for Octave are $SWIG_BUILD_OCTAVE_ENABLE_VAL
* SWIG bindings for Python are $SWIG_BUILD_PYTHON_ENABLE_VAL
268
269
* HEALPix is $HEALPIX_ENABLE_VAL
* OpenMP acceleration is $OPENMP_ENABLE_VAL
270
* Doxygen documentation is $DOXYGEN_ENABLE_VAL
271
* help2man documentation is $HELP2MAN_ENABLE_VAL
272

273
and will be installed under the directory:
274

275
${prefix}
276

277
278
279
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
280
])