configure.ac 9.44 KB
Newer Older
Adam Mercer's avatar
Adam Mercer committed
1
AC_PREREQ([2.63])
2
AC_INIT([LALInference],[1.7.0.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
  swig/Makefile \
Leo Pound Singer's avatar
Leo Pound Singer committed
31
  test/Makefile \
32
])
33 34 35 36 37 38
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
Adam Mercer's avatar
Adam Mercer committed
39
  tar-ustar \
40 41
  dist-xz \
  no-dist-gzip \
42
])
43

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
# version requirements
MIN_LAL_VERSION="6.16.1"
MIN_LALMETAIO_VERSION="1.2.8"
MIN_LALFRAME_VERSION="1.4.1"
MIN_LALSIMULATION_VERSION="1.6.0"
MIN_LALINSPIRAL_VERSION="1.7.5"
MIN_LALPULSAR_VERSION="1.14.0"
MIN_LALBURST_VERSION="1.4.2"
MIN_LALXML_VERSION="1.2.2"
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])

62 63
AC_CANONICAL_HOST

64 65
LALSUITE_ARG_VAR

Karl Wette's avatar
Karl Wette committed
66
LALSUITE_CHECK_GIT_REPO
67
LALSUITE_DISTCHECK_CONFIGURE_FLAGS
68

69 70 71 72 73 74 75 76 77 78 79 80 81 82
# 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.
83
AC_SUBST([LIBCURRENT],[11])
84
AC_SUBST([LIBREVISION],[0])
85
AC_SUBST([LIBAGE],[0])
86 87 88 89 90
AC_SUBST([LIBVERSION],[${LIBCURRENT}:${LIBREVISION}:${LIBAGE}])

# nightly build
LALSUITE_ENABLE_NIGHTLY

91 92 93 94 95 96 97 98
# enable strict gcc flags
LALSUITE_ENABLE_GCC_FLAGS

# optional lal libraries
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALPULSAR
99
LALSUITE_ENABLE_LALBURST
100 101
LALSUITE_ENABLE_LALXML

102 103 104
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

105 106 107
# enable Doxygen documentation
LALSUITE_ENABLE_DOXYGEN

108 109
# define version/configure info
LALSUITE_VERSION_CONFIGURE_INFO
110

111 112 113
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

114 115
# use silent build rules
AM_SILENT_RULES([yes])
116

117 118
# check for required compilers
LALSUITE_PROG_COMPILERS
119

120
# checks for programs
121
AC_PROG_INSTALL
122
AC_PROG_LN_S
123
AC_PROG_AWK
124
AC_PROG_SED
125
LALSUITE_CHECK_PYTHON([2.6])
126 127 128 129 130 131 132 133 134

# 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
135
AC_CHECK_HEADERS([unistd.h])
136 137 138 139

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

140 141 142 143 144 145 146 147
# check for OpenMP
AC_OPENMP

# check that compiler supports C99 variable length arrays in OpenMP for loops.
# Apple's llvm-gcc-4.2 is buggy and does not.
AS_IF([test "x$OPENMP_CFLAGS" != "x"],
  [
    AC_MSG_CHECKING([if compiler supports C99 VLAs in OpenMP for loops])
148 149
    LALSUITE_PUSH_UVARS
    CFLAGS="$OPENMP_CFLAGS"
150 151 152 153 154 155 156 157 158 159 160 161 162 163
    AC_LINK_IFELSE([
        AC_LANG_PROGRAM(, [
          int i, n = 10;
          #pragma omp parallel for
          for (i = 0; i < 10; i ++)
          { int a@<:@n@:>@; }
        ])
      ],
      [AC_MSG_RESULT([yes])],
      [
        AC_MSG_RESULT([no, disabling OpenMP])
        OPENMP_CFLAGS=
      ]
    )
164
    LALSUITE_POP_UVARS
165 166 167 168 169
  ]
)

# check for HEALPix
PKG_CHECK_MODULES([CHEALPIX],[chealpix],[true],[false])
170
LALSUITE_ADD_FLAGS([C],[${CHEALPIX_CFLAGS}],[${CHEALPIX_LIBS}])
171 172
HEALPIX_ENABLE_VAL=ENABLED
AC_CHECK_LIB([chealpix],[nside2npix],,[HEALPIX_ENABLE_VAL=DISABLED])
173 174
AM_CONDITIONAL([HAVE_CHEALPIX],[test "x$HEALPIX_ENABLE_VAL" = "xENABLED"])

175 176
# check for gsl
PKG_CHECK_MODULES([GSL],[gsl],[true],[false])
177
LALSUITE_ADD_FLAGS([C],[${GSL_CFLAGS}],[${GSL_LIBS}])
178
AC_CHECK_LIB([gslcblas],[main],,[AC_MSG_ERROR([could not find the gsl library])])
Karl Wette's avatar
Karl Wette committed
179
AC_CHECK_LIB([gsl],[gsl_version],,[AC_MSG_ERROR([could not find the gsl library])])
180
LALSUITE_CHECK_GSL_VERSION([1.15])
181
LALSUITE_ENABLE_FAST_GSL
182 183 184 185 186 187

# 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])
188
LALSUITE_ADD_FLAGS([C],[${METAIO_CFLAGS}],[${METAIO_LIBS}])
189 190 191 192 193
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])])

194 195 196 197 198 199 200 201 202 203 204 205 206 207
# 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

208 209 210
if test "$lalxml" = "true"; then
  # check for libxml2
  PKG_CHECK_MODULES([LIBXML2],[libxml-2.0 >= 2.6],[true],[false])
211
  LALSUITE_ADD_FLAGS([C],[${LIBXML2_CFLAGS}],[${LIBXML2_LIBS}])
212 213 214
  AC_CHECK_LIB([xml2],[xmlInitParser],,[AC_MSG_WARN([cannot find the xml2 library])])
fi

215
# check for lal libraries and headers
216 217 218 219 220 221 222 223 224
LALSUITE_CHECK_LIB([LAL],[${MIN_LAL_VERSION}],[LALVersion],[lal/LALStdio.h])
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])

225

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

229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251
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 )
252

253
# configure SWIG wrapping modules
Karl Wette's avatar
Karl Wette committed
254
LALSUITE_USE_SWIG
255

256 257 258
# configure Doxygen documentation
LALSUITE_USE_DOXYGEN

259 260 261 262 263 264
# Disable OpenMP by default.
# FIXME: OpenMP should be on by default, but it breaks condor_compiling lalapps.
AS_IF(
  [test "x$enable_openmp" = "x"],
  [OPENMP_CFLAGS=]
)
265 266 267 268 269
# add compiler flags for OpenMP
AS_IF(
  [test "x$OPENMP_CFLAGS" = "x"],
  [
    OPENMP_ENABLE_VAL="DISABLED"
270
    LALSUITE_ADD_FLAGS([C],[-Wno-unknown-pragmas],[])
271 272 273
  ],
  [
    OPENMP_ENABLE_VAL="ENABLED"
274
    LALSUITE_ADD_FLAGS([C],[${OPENMP_CFLAGS}],[])
275 276 277
  ]
)

278 279 280
# add gcc specific flags
LALSUITE_ADD_GCC_FLAGS

281 282 283
# link any executables against LALInference library
AC_SUBST([LDADD], ["\$(top_builddir)/src/liblalinference.la"])

284 285 286 287
# add extra preprocessor flags
AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"

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

291 292 293 294 295
# 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}"])

296
# output
297
AC_OUTPUT
298
AC_MSG_NOTICE([
299 300
==================================================
LALInference has now been successfully configured:
301

302
* Python support is $PYTHON_ENABLE_VAL
303
* LALXML library support is $LALXML_ENABLE_VAL
Karl Wette's avatar
Karl Wette committed
304 305
* SWIG bindings for Octave are $SWIG_BUILD_OCTAVE_ENABLE_VAL
* SWIG bindings for Python are $SWIG_BUILD_PYTHON_ENABLE_VAL
306 307
* HEALPix is $HEALPIX_ENABLE_VAL
* OpenMP acceleration is $OPENMP_ENABLE_VAL
308
* Doxygen documentation is $DOXYGEN_ENABLE_VAL
309

310
and will be installed under the directory:
311

312
${prefix}
313

314 315 316
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
317
])