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

47
# version requirements
Adam Mercer's avatar
Adam Mercer committed
48
MIN_GLUE_VERSION="1.54.1"
Adam Mercer's avatar
Adam Mercer committed
49 50
MIN_LAL_VERSION="6.19.2"
MIN_LALMETAIO_VERSION="1.5.0"
Adam Mercer's avatar
Adam Mercer committed
51
MIN_LALFRAME_VERSION="1.4.0"
Adam Mercer's avatar
Adam Mercer committed
52 53 54 55
MIN_LALSIMULATION_VERSION="1.8.2"
MIN_LALBURST_VERSION="1.5.1"
MIN_LALINSPIRAL_VERSION="1.8.1"
MIN_LALPULSAR_VERSION="1.17.1"
56
AC_SUBST([MIN_GLUE_VERSION])
57 58 59 60
AC_SUBST([MIN_LAL_VERSION])
AC_SUBST([MIN_LALMETAIO_VERSION])
AC_SUBST([MIN_LALFRAME_VERSION])
AC_SUBST([MIN_LALSIMULATION_VERSION])
Adam Mercer's avatar
Adam Mercer committed
61
AC_SUBST([MIN_LALBURST_VERSION])
62 63 64
AC_SUBST([MIN_LALINSPIRAL_VERSION])
AC_SUBST([MIN_LALPULSAR_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],[18])
87
AC_SUBST([LIBREVISION],[0])
88
AC_SUBST([LIBAGE],[1])
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 105 106
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

107 108 109
# enable Doxygen documentation
LALSUITE_ENABLE_DOXYGEN

110 111 112
# enable help2man documentation
LALSUITE_ENABLE_HELP2MAN

113 114
# define version/configure info
LALSUITE_VERSION_CONFIGURE_INFO
115

116 117 118
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

119 120
# use silent build rules
AM_SILENT_RULES([yes])
121

122 123
# check for required compilers
LALSUITE_PROG_COMPILERS
124

125
# checks for programs
126
AC_PROG_INSTALL
127
AC_PROG_LN_S
128
AC_PROG_AWK
129
AC_PROG_SED
130
LALSUITE_CHECK_PYTHON([2.6])
131 132 133 134 135 136 137 138 139

# 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
140
AC_CHECK_HEADERS([unistd.h])
141

142 143
# check for specific functions
AC_FUNC_STRNLEN
144
AC_CHECK_FUNC([strdup], [], [AC_MSG_ERROR([could not find the strdup function])])
145

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

149
# check for OpenMP
150
LALSUITE_ENABLE_OPENMP
151 152

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

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

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

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

191
# check for lal libraries and headers
192
LALSUITE_CHECK_LIB([LAL],[${MIN_LAL_VERSION}],[XLALPerror],[lal/XLALError.h])
193
LALSUITE_CHECK_LIB([LALSupport],[${MIN_LAL_VERSION}],[XLALCacheImport],[lal/LALCache.h])
Kipp Cannon's avatar
Kipp Cannon committed
194
LALSUITE_CHECK_LIB([LALMetaIO],[${MIN_LALMETAIO_VERSION}],[XLALLIGOLwHasTable],[lal/LIGOLwXMLRead.h])
195 196 197 198 199 200
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])

201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
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 )
224

225
# configure SWIG wrapping modules
Karl Wette's avatar
Karl Wette committed
226
LALSUITE_USE_SWIG
227

228 229 230
# configure Doxygen documentation
LALSUITE_USE_DOXYGEN

231 232 233
# add gcc specific flags
LALSUITE_ADD_GCC_FLAGS

234 235 236
# link any executables against LALInference library
AC_SUBST([LDADD], ["\$(top_builddir)/src/liblalinference.la"])

237 238 239 240
# add extra preprocessor flags
AM_CPPFLAGS="-DPKG_DATA_DIR='\"\$(pkgdatadir)/\"' ${AM_CPPFLAGS}"
AM_CPPFLAGS="-I\$(top_builddir)/include ${AM_CPPFLAGS}"

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

244 245 246 247 248
# 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}"])

249
# output
250
AC_OUTPUT
251
AC_MSG_NOTICE([
252 253
==================================================
LALInference has now been successfully configured:
254

255
* Python support is $PYTHON_ENABLE_VAL
Karl Wette's avatar
Karl Wette committed
256 257
* SWIG bindings for Octave are $SWIG_BUILD_OCTAVE_ENABLE_VAL
* SWIG bindings for Python are $SWIG_BUILD_PYTHON_ENABLE_VAL
258 259
* HEALPix is $HEALPIX_ENABLE_VAL
* OpenMP acceleration is $OPENMP_ENABLE_VAL
260
* Doxygen documentation is $DOXYGEN_ENABLE_VAL
261
* help2man documentation is $HELP2MAN_ENABLE_VAL
262

263
and will be installed under the directory:
264

265
${prefix}
266

267 268 269
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
270
])