configure.ac 8.18 KB
Newer Older
Adam Mercer's avatar
Adam Mercer committed
1
AC_PREREQ([2.63])
2
AC_INIT([lalinference],[1.2.1.1],[lal-discuss@ligo.org])
3
AC_CONFIG_HEADERS([src/config.h src/LALInferenceConfig.h])
4 5 6 7 8 9 10 11 12 13 14 15
AC_CONFIG_SRCDIR([src/LALInference.h])
AC_CONFIG_AUX_DIR([gnuscripts])
AC_CONFIG_MACRO_DIR([gnuscripts])
AC_CONFIG_FILES([ \
  lalinference.spec \
  lalinference.pc \
  Makefile \
  gnuscripts/Makefile \
  debian/Makefile \
  include/Makefile \
  include/lal/Makefile \
  src/Makefile \
16 17
  python/Makefile \
  python/__init__.py \
18
  python/bayestar/Makefile \
19 20 21
  swig/Makefile \
  swig/octave/Makefile \
  swig/python/Makefile \
22 23
  test/Makefile
])
24
AM_INIT_AUTOMAKE([1.11 foreign color-tests parallel-tests])
25 26 27

AC_CANONICAL_HOST

28
LALSUITE_ARG_VAR
29
LALSUITE_DISTCHECK_CONFIGURE_FLAGS
30
LALSUITE_WITH_CFLAGS_LIBS
31

32 33 34 35 36 37 38 39 40 41 42 43 44 45
# 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.
46
AC_SUBST([LIBCURRENT],[6])
47 48
AC_SUBST([LIBREVISION],[0])
AC_SUBST([LIBAGE],[0])
49 50
AC_SUBST([LIBVERSION],[${LIBCURRENT}:${LIBREVISION}:${LIBAGE}])

51 52 53
# check for git repo
LALSUITE_CHECK_GIT_REPO

54 55 56
# nightly build
LALSUITE_ENABLE_NIGHTLY

Adam Mercer's avatar
Adam Mercer committed
57 58 59
# debug
LALSUITE_ENABLE_DEBUG

60 61 62 63 64 65 66 67 68 69
# enable strict gcc flags
LALSUITE_ENABLE_GCC_FLAGS

# optional lal libraries
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALPULSAR
LALSUITE_ENABLE_LALXML

70 71 72
# enable SWIG wrapping modules
LALSUITE_ENABLE_SWIG

73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
# put version/configure info in config header
lalinference_version_major=`echo "$VERSION" | cut -d. -f1`
lalinference_version_minor=`echo "$VERSION" | cut -d. -f2`
lalinference_version_micro=`echo "$VERSION" | cut -d. -f3`
lalinference_version_devel=`echo "$VERSION" | cut -d. -f4-`
test -z "$lalinference_version_micro" && lalinference_version_micro=0
test -z "$lalinference_version_devel" && lalinference_version_devel=0
lalinspiral_configure_date=`date +"%Y-%m-%dT%H:%M:%S%z"`
AC_DEFINE_UNQUOTED([LALINFERENCE_VERSION],["$VERSION"],[LALInference Version])
AC_DEFINE_UNQUOTED([LALINFERENCE_VERSION_MAJOR],[$lalinference_version_major],
                   [LALInference Version Major Number])
AC_DEFINE_UNQUOTED([LALINFERENCE_VERSION_MINOR],[$lalinference_version_minor],
                   [LALInference Version Minor Number])
AC_DEFINE_UNQUOTED([LALINFERENCE_VERSION_MICRO],[$lalinference_version_micro],
                   [LALInference Version Micro Number])
AC_DEFINE_UNQUOTED([LALINFERENCE_VERSION_DEVEL],[$lalinference_version_devel],
                   [LALInference Version Devel Number])
AC_DEFINE_UNQUOTED([LALINFERENCE_CONFIGURE_ARGS],["$ac_configure_args"],
                   [LALInference Configure Arguments])
AC_DEFINE_UNQUOTED([LALINFERENCE_CONFIGURE_DATE],["$lalinspiral_configure_date"],
                   [LALInference Configure Date])

95 96 97
# workaround broken libtool multilib support on sl6
LALSUITE_MULTILIB_LIBTOOL_HACK

98 99
# use silent build rules
AM_SILENT_RULES([yes])
100

101 102
# check for required compilers
LALSUITE_PROG_COMPILERS
103

104
# checks for programs
105
LALSUITE_PROG_INSTALL
106
AC_PROG_LN_S
107
AC_PROG_AWK
108
AC_PROG_SED
Adam Mercer's avatar
Adam Mercer committed
109
AM_PATH_PYTHON([2.6],,[AC_MSG_ERROR([Python-2.6, or higher, is required])])
110
AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != :])
111 112 113 114 115 116 117 118 119 120 121 122 123

# 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

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

124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 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])
    save_CFLAGS=$CFLAGS
    CFLAGS="$CFLAGS $OPENMP_CFLAGS"
    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=
      ]
    )
Leo Pound Singer's avatar
Leo Pound Singer committed
148
    CFLAGS=$save_CFLAGS
149 150 151 152 153
  ]
)

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

159 160
# check for gsl
PKG_CHECK_MODULES([GSL],[gsl],[true],[false])
161 162
LALSUITE_ADD_CFLAGS(${GSL_CFLAGS})
LALSUITE_ADD_LIBS(${GSL_LIBS})
163 164
AC_CHECK_LIB([gslcblas],[main],,[AC_MSG_ERROR([could not find the gsl library])])
AC_CHECK_LIB([gsl],[gsl_strerror],,[AC_MSG_ERROR([could not find the gsl library])])
165
LALSUITE_ENABLE_FAST_GSL
166 167 168 169 170 171

# 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])
172 173
LALSUITE_ADD_CFLAGS(${METAIO_CFLAGS})
LALSUITE_ADD_LIBS(${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
if test "$lalxml" = "true"; then
  # check for libxml2
  PKG_CHECK_MODULES([LIBXML2],[libxml-2.0 >= 2.6],[true],[false])
182 183
  LALSUITE_ADD_CFLAGS(${LIBXML2_CFLAGS})
  LALSUITE_ADD_LIBS(${LIBXML2_LIBS})
184 185 186
  AC_CHECK_LIB([xml2],[xmlInitParser],,[AC_MSG_WARN([cannot find the xml2 library])])
fi

187
# check for lal libraries and headers
188 189
LALSUITE_CHECK_LIB([LAL],[6.11.0],[LALVersion],[lal/LALStdio.h])
LALSUITE_CHECK_LIB([LALSupport],[6.11.0],[LALOpenDataFile],[lal/FileIO.h])
190
LALSUITE_CHECK_LIB([LALMetaIO],[1.1.0],[XLALCreateMetaTableDir],[lal/LIGOLwXMLRead.h])
191 192
LALSUITE_CHECK_LIB([LALFrame],[1.1.0],[LALFrOpen],[lal/LALFrameL.h])
LALSUITE_CHECK_LIB([LALSimulation],[1.0.0],[XLALSimDetectorStrainREAL8TimeSeries],[lal/LALSimulation.h])
193
LALSUITE_CHECK_LIB([LALInspiral],[1.5.0],[LALInspiralParameterCalc],[lal/LALInspiral.h])
194
LALSUITE_CHECK_LIB([LALPulsar],[1.8.0],[XLALComputeFaFb],[lal/ComputeFstat.h])
195

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

199 200 201
# configure SWIG wrapping modules
LALSUITE_USE_SWIG([XLALInference LALInference XLAL LAL])

202
# add gcc specific flags
203
LALSUITE_ADD_GCC_FLAGS
204

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

224 225 226 227 228
# 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}"])

229 230 231 232
# ensure CPPFLAGS/CFLAGS and LDFLAGS/LIBS are in correct order
LALSUITE_ADD_CFLAGS()
LALSUITE_ADD_LIBS()

233 234 235 236 237 238
# output
LAL_HEADER_LINK=${ac_aux_dir}/header-link.mk
AC_SUBST_FILE([LAL_HEADER_LINK])
AC_PROG_MAKE_SET
AC_OUTPUT
echo "
239 240
==================================================
LALInference has now been successfully configured:
241

242
* LALXML library support is $LALXML_ENABLE_VAL
243 244
* SWIG wrapping module for Octave is $SWIG_OCTAVE_ENABLE_VAL
* SWIG wrapping module for Python is $SWIG_PYTHON_ENABLE_VAL
245 246
* HEALPix is $HEALPIX_ENABLE_VAL
* OpenMP acceleration is $OPENMP_ENABLE_VAL
247

248
and will be installed under the directory:
249

250
${prefix}
251

252 253 254 255
Now run 'make' to build LALInference,
and run 'make install' to install LALInference.
==================================================
"