configure.ac 8.75 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 11
  doxygen/Makefile \
  doxygen/doxygen.cfg \
12 13
  include/Makefile \
  include/lal/Makefile \
14 15
  lalinference.pc \
  lalinference.spec \
16
  python/Makefile \
17 18 19
  python/lalinference/Makefile \
  python/lalinference/__init__.py \
  python/lalinference/bayestar/Makefile \
20
  python/lalinference/io/Makefile \
21
  python/lalinference/rapid_pe/Makefile \
22
  python/lalinference/imrtgr/Makefile \
23
  python/lalinference/tiger/Makefile \
24
  python/lalinference/plot/Makefile \
25
  python/lalinference/popprior/Makefile \
26 27 28
  src/LALInferenceVCSInfo.c \
  src/LALInferenceVCSInfo.h \
  src/Makefile \
29
  swig/Makefile \
Leo Pound Singer's avatar
Leo Pound Singer committed
30
  test/Makefile \
31
])
32 33 34 35 36 37
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
Adam Mercer's avatar
Adam Mercer committed
38
  tar-ustar \
39 40
  dist-xz \
  no-dist-gzip \
41
])
42 43 44

AC_CANONICAL_HOST

45 46
LALSUITE_ARG_VAR

Karl Wette's avatar
Karl Wette committed
47
LALSUITE_CHECK_GIT_REPO
48
LALSUITE_DISTCHECK_CONFIGURE_FLAGS
49

50 51 52 53 54 55 56 57 58 59 60 61 62 63
# 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.
64
AC_SUBST([LIBCURRENT],[11])
65
AC_SUBST([LIBREVISION],[0])
66
AC_SUBST([LIBAGE],[0])
67 68 69 70 71
AC_SUBST([LIBVERSION],[${LIBCURRENT}:${LIBREVISION}:${LIBAGE}])

# nightly build
LALSUITE_ENABLE_NIGHTLY

72 73 74 75 76 77 78 79
# enable strict gcc flags
LALSUITE_ENABLE_GCC_FLAGS

# optional lal libraries
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALPULSAR
80
LALSUITE_ENABLE_LALBURST
81 82
LALSUITE_ENABLE_LALXML

83 84 85
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

86 87 88
# enable Doxygen documentation
LALSUITE_ENABLE_DOXYGEN

89 90
# define version/configure info
LALSUITE_VERSION_CONFIGURE_INFO
91

92 93 94
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

95 96
# use silent build rules
AM_SILENT_RULES([yes])
97

98 99
# check for required compilers
LALSUITE_PROG_COMPILERS
100

101
# checks for programs
102
AC_PROG_INSTALL
103
AC_PROG_LN_S
104
AC_PROG_AWK
105
AC_PROG_SED
106
LALSUITE_CHECK_PYTHON([2.6])
107 108 109 110 111 112 113 114 115

# 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
116
AC_CHECK_HEADERS([unistd.h])
117 118 119 120

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

121 122 123 124 125 126 127 128
# 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])
129 130
    LALSUITE_PUSH_UVARS
    CFLAGS="$OPENMP_CFLAGS"
131 132 133 134 135 136 137 138 139 140 141 142 143 144
    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=
      ]
    )
145
    LALSUITE_POP_UVARS
146 147 148 149 150
  ]
)

# check for HEALPix
PKG_CHECK_MODULES([CHEALPIX],[chealpix],[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 198 199 200 201 202 203 204
LALSUITE_CHECK_LIB([LAL],[6.16.1],[LALVersion],[lal/LALStdio.h])
LALSUITE_CHECK_LIB([LALSupport],[6.16.1],[XLALCacheImport],[lal/LALCache.h])
LALSUITE_CHECK_LIB([LALMetaIO],[1.2.8],[XLALCreateMetaTableDir],[lal/LIGOLwXMLRead.h])
LALSUITE_CHECK_LIB([LALFrame],[1.4.1],[LALFrOpen],[lal/LALFrameL.h])
LALSUITE_CHECK_LIB([LALSimulation],[1.6.0],[XLALSimDetectorStrainREAL8TimeSeries],[lal/LALSimulation.h])
LALSUITE_CHECK_LIB([LALInspiral],[1.7.5],[LALInspiralParameterCalc],[lal/LALInspiral.h])
LALSUITE_CHECK_LIB([LALPulsar],[1.14.0],[XLALComputeFstat],[lal/ComputeFstat.h])
LALSUITE_CHECK_LIB([LALBurst],[1.4.2],[XLALEPSearch],[lal/EPSearch.h])
205

206
# check for lalxml
207
LALSUITE_CHECK_OPT_LIB([LALXML],[1.2.2],[XLALXMLFilePrintElements],[lal/LALXML.h])
John Douglas Veitch's avatar
John Douglas Veitch committed
208

209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
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 )
232

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

236 237 238
# configure Doxygen documentation
LALSUITE_USE_DOXYGEN

239 240 241 242 243 244
# 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=]
)
245 246 247 248 249
# add compiler flags for OpenMP
AS_IF(
  [test "x$OPENMP_CFLAGS" = "x"],
  [
    OPENMP_ENABLE_VAL="DISABLED"
250
    LALSUITE_ADD_FLAGS([C],[-Wno-unknown-pragmas],[])
251 252 253
  ],
  [
    OPENMP_ENABLE_VAL="ENABLED"
254
    LALSUITE_ADD_FLAGS([C],[${OPENMP_CFLAGS}],[])
255 256 257
  ]
)

258 259 260
# add gcc specific flags
LALSUITE_ADD_GCC_FLAGS

261 262 263
# link any executables against LALInference library
AC_SUBST([LDADD], ["\$(top_builddir)/src/liblalinference.la"])

264 265 266 267
# add extra preprocessor flags
AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"

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

271 272 273 274 275
# 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}"])

276
# output
277
AC_OUTPUT
278
AC_MSG_NOTICE([
279 280
==================================================
LALInference has now been successfully configured:
281

282
* Python support is $PYTHON_ENABLE_VAL
283
* LALXML library support is $LALXML_ENABLE_VAL
Karl Wette's avatar
Karl Wette committed
284 285
* SWIG bindings for Octave are $SWIG_BUILD_OCTAVE_ENABLE_VAL
* SWIG bindings for Python are $SWIG_BUILD_PYTHON_ENABLE_VAL
286 287
* HEALPix is $HEALPIX_ENABLE_VAL
* OpenMP acceleration is $OPENMP_ENABLE_VAL
288
* Doxygen documentation is $DOXYGEN_ENABLE_VAL
289

290
and will be installed under the directory:
291

292
${prefix}
293

294 295 296
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
297
])