configure.ac 7.79 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/rapid_pe/Makefile \
21
  python/lalinference/imrtgr/Makefile \
22
  python/lalinference/tiger/Makefile \
23
  python/lalinference/popprior/Makefile \
24 25 26
  src/LALInferenceVCSInfo.c \
  src/LALInferenceVCSInfo.h \
  src/Makefile \
27
  swig/Makefile \
Leo Pound Singer's avatar
Leo Pound Singer committed
28
  test/Makefile \
29
])
30 31 32 33 34 35
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
Adam Mercer's avatar
Adam Mercer committed
36
  tar-ustar \
37 38
  dist-xz \
  no-dist-gzip \
39
])
40 41 42

AC_CANONICAL_HOST

43 44
LALSUITE_ARG_VAR

Karl Wette's avatar
Karl Wette committed
45
LALSUITE_CHECK_GIT_REPO
46
LALSUITE_DISTCHECK_CONFIGURE_FLAGS
47

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

# nightly build
LALSUITE_ENABLE_NIGHTLY

70 71 72 73 74 75 76 77
# enable strict gcc flags
LALSUITE_ENABLE_GCC_FLAGS

# optional lal libraries
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALPULSAR
78
LALSUITE_ENABLE_LALBURST
79 80
LALSUITE_ENABLE_LALXML

81 82 83
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

84 85 86
# enable Doxygen documentation
LALSUITE_ENABLE_DOXYGEN

87 88
# define version/configure info
LALSUITE_VERSION_CONFIGURE_INFO
89

90 91 92
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

93 94
# use silent build rules
AM_SILENT_RULES([yes])
95

96 97
# check for required compilers
LALSUITE_PROG_COMPILERS
98

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

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

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

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

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

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

# 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])
167
LALSUITE_ADD_FLAGS([C],[${METAIO_CFLAGS}],[${METAIO_LIBS}])
168 169 170 171 172
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])])

John Douglas Veitch's avatar
John Douglas Veitch committed
173 174 175 176 177 178 179 180
# check for hdf5 support
HDF5_ENABLE_VAL="DISABLED"
AX_LIB_HDF5()
if test "${with_hdf5}" = "yes"; then
          AC_DEFINE([LAL_HDF5_ENABLED],[1],[Define if using HDF5 library])
            HDF5_ENABLE_VAL="ENABLED"
fi

181 182 183
if test "$lalxml" = "true"; then
  # check for libxml2
  PKG_CHECK_MODULES([LIBXML2],[libxml-2.0 >= 2.6],[true],[false])
184
  LALSUITE_ADD_FLAGS([C],[${LIBXML2_CFLAGS}],[${LIBXML2_LIBS}])
185 186 187
  AC_CHECK_LIB([xml2],[xmlInitParser],,[AC_MSG_WARN([cannot find the xml2 library])])
fi

188
# check for lal libraries and headers
189 190 191 192 193 194 195 196
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])
197

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

201
# configure SWIG wrapping modules
Karl Wette's avatar
Karl Wette committed
202
LALSUITE_USE_SWIG
203

204 205 206
# configure Doxygen documentation
LALSUITE_USE_DOXYGEN

207 208 209 210 211 212
# 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=]
)
213 214 215 216 217
# add compiler flags for OpenMP
AS_IF(
  [test "x$OPENMP_CFLAGS" = "x"],
  [
    OPENMP_ENABLE_VAL="DISABLED"
218
    LALSUITE_ADD_FLAGS([C],[-Wno-unknown-pragmas],[])
219 220 221
  ],
  [
    OPENMP_ENABLE_VAL="ENABLED"
222
    LALSUITE_ADD_FLAGS([C],[${OPENMP_CFLAGS}],[])
223 224 225
  ]
)

226 227 228
# add gcc specific flags
LALSUITE_ADD_GCC_FLAGS

229 230 231
# link any executables against LALInference library
AC_SUBST([LDADD], ["\$(top_builddir)/src/liblalinference.la"])

232 233 234 235
# add extra preprocessor flags
AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"

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

239 240 241 242 243
# 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}"])

244
# output
245
AC_OUTPUT
246
AC_MSG_NOTICE([
247 248
==================================================
LALInference has now been successfully configured:
249

250
* Python support is $PYTHON_ENABLE_VAL
John Douglas Veitch's avatar
John Douglas Veitch committed
251
* HDF5 support is $HDF5_ENABLE_VAL
252
* LALXML library support is $LALXML_ENABLE_VAL
Karl Wette's avatar
Karl Wette committed
253 254
* SWIG bindings for Octave are $SWIG_BUILD_OCTAVE_ENABLE_VAL
* SWIG bindings for Python are $SWIG_BUILD_PYTHON_ENABLE_VAL
255 256
* HEALPix is $HEALPIX_ENABLE_VAL
* OpenMP acceleration is $OPENMP_ENABLE_VAL
257
* Doxygen documentation is $DOXYGEN_ENABLE_VAL
258

259
and will be installed under the directory:
260

261
${prefix}
262

263 264 265
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
266
])