configure.ac 8.73 KB
Newer Older
Adam Mercer's avatar
Adam Mercer committed
1
AC_PREREQ([2.63])
2
AC_INIT([LALInference],[1.9.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/imrtgr/Makefile \
22
  python/lalinference/io/Makefile \
23
  python/lalinference/io/events/Makefile \
24
  python/lalinference/plot/Makefile \
25
  python/lalinference/popprior/Makefile \
26 27
  python/lalinference/rapid_pe/Makefile \
  python/lalinference/tiger/Makefile \
28 29 30
  src/LALInferenceVCSInfo.c \
  src/LALInferenceVCSInfo.h \
  src/Makefile \
31
  src/version.c \
32
  swig/Makefile \
Leo Pound Singer's avatar
Leo Pound Singer committed
33
  test/Makefile \
34 35 36
  test/baseline/Makefile \
  test/data/Makefile \
  test/data/gstlal_reference_psd/Makefile
37
])
38 39 40 41 42 43
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
44
  tar-ustar \
45 46
  dist-xz \
  no-dist-gzip \
47
])
48

49
# version requirements
50 51 52 53 54 55 56 57 58
MIN_GLUE_VERSION="1.54.1"
MIN_LAL_VERSION="6.18.0"
MIN_LALMETAIO_VERSION="1.3.1"
MIN_LALFRAME_VERSION="1.4.3"
MIN_LALSIMULATION_VERSION="1.7.0"
MIN_LALINSPIRAL_VERSION="1.7.7"
MIN_LALPULSAR_VERSION="1.16.0"
MIN_LALBURST_VERSION="1.4.4"
MIN_LALXML_VERSION="1.2.4"
59
AC_SUBST([MIN_GLUE_VERSION])
60 61 62 63 64 65 66 67 68
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])

69 70
AC_CANONICAL_HOST

71 72
LALSUITE_ARG_VAR

Karl Wette's avatar
Karl Wette committed
73
LALSUITE_CHECK_GIT_REPO
74
LALSUITE_DISTCHECK_CONFIGURE_FLAGS
75

76 77 78 79 80 81 82 83 84 85 86 87 88 89
# 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.
90
AC_SUBST([LIBCURRENT],[13])
91
AC_SUBST([LIBREVISION],[0])
92
AC_SUBST([LIBAGE],[0])
93 94 95 96 97
AC_SUBST([LIBVERSION],[${LIBCURRENT}:${LIBREVISION}:${LIBAGE}])

# nightly build
LALSUITE_ENABLE_NIGHTLY

98 99 100 101 102 103 104 105
# enable strict gcc flags
LALSUITE_ENABLE_GCC_FLAGS

# optional lal libraries
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALPULSAR
106
LALSUITE_ENABLE_LALBURST
107 108
LALSUITE_ENABLE_LALXML

109 110 111
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

112 113 114
# enable Doxygen documentation
LALSUITE_ENABLE_DOXYGEN

115 116 117
# enable help2man documentation
LALSUITE_ENABLE_HELP2MAN

118 119
# define version/configure info
LALSUITE_VERSION_CONFIGURE_INFO
120

121 122 123
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

124 125
# use silent build rules
AM_SILENT_RULES([yes])
126

127 128
# check for required compilers
LALSUITE_PROG_COMPILERS
129

130
# checks for programs
131
AC_PROG_INSTALL
132
AC_PROG_LN_S
133
AC_PROG_AWK
134
AC_PROG_SED
135
LALSUITE_CHECK_PYTHON([2.6])
136 137 138 139 140 141 142 143 144

# 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
145
AC_CHECK_HEADERS([unistd.h])
146 147 148 149

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

150
# check for OpenMP
151
LALSUITE_ENABLE_OPENMP
152 153

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

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

# 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])
173
LALSUITE_ADD_FLAGS([C],[${METAIO_CFLAGS}],[${METAIO_LIBS}])
174 175 176 177 178
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])])

179 180 181 182 183 184 185 186 187 188 189 190 191 192
# 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

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

200
# check for lal libraries and headers
201
LALSUITE_CHECK_LIB([LAL],[${MIN_LAL_VERSION}],[XLALPerror],[lal/XLALError.h])
202 203 204 205 206 207 208 209
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])

210

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

214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
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 )
237

238
# configure SWIG wrapping modules
Karl Wette's avatar
Karl Wette committed
239
LALSUITE_USE_SWIG
240

241 242 243
# configure Doxygen documentation
LALSUITE_USE_DOXYGEN

244 245 246
# add gcc specific flags
LALSUITE_ADD_GCC_FLAGS

247 248 249
# link any executables against LALInference library
AC_SUBST([LDADD], ["\$(top_builddir)/src/liblalinference.la"])

250 251 252 253
# add extra preprocessor flags
AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"

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

257 258 259 260 261
# 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}"])

262
# output
263
AC_OUTPUT
264
AC_MSG_NOTICE([
265 266
==================================================
LALInference has now been successfully configured:
267

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

277
and will be installed under the directory:
278

279
${prefix}
280

281 282 283
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
284
])