configure.ac 8.59 KB
Newer Older
Adam Mercer's avatar
Adam Mercer committed
1
AC_PREREQ([2.63])
2
AC_INIT([LALInference],[1.9.0],[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 Pound Singer's avatar
Leo Pound Singer committed
32
  test/Makefile \
33
])
34 35 36 37 38 39
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
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],[13])
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
])