Skip to content
Snippets Groups Projects
configure.ac 7.23 KiB
AC_PREREQ([2.63])
AC_INIT([LALSuite],[7.25.2],[lal-discuss@ligo.org])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_AUX_DIR([gnuscripts])
AC_CONFIG_MACRO_DIR([gnuscripts])
AC_PREFIX_DEFAULT(["`pwd`/_inst"])
AC_CONFIG_FILES([ \
  Makefile \
  doxygen/Makefile \
  wheel/Makefile \
  wheel/setup.py \
])
AM_INIT_AUTOMAKE([ \
  1.11 \
  foreign \
  subdir-objects \
  color-tests \
  parallel-tests \
  tar-pax \
  dist-xz \
  no-dist-gzip \
])

LALSUITE_DISTCHECK_CONFIGURE_FLAGS

# use silent build rules
AM_SILENT_RULES([yes])

# check for programs
AC_PROG_AWK
AC_PROG_SED

LALSUITE_ENABLE_NIGHTLY
LALSUITE_CHECK_PYTHON([3.5])
LALSUITE_CHECK_GIT_REPO

# provide LAL library enable/disable options
LALSUITE_ENABLE_ALL_LAL
lal=true
LALSUITE_ENABLE_LALFRAME
LALSUITE_ENABLE_LALMETAIO
LALSUITE_ENABLE_LALSIMULATION
LALSUITE_ENABLE_LALBURST
LALSUITE_ENABLE_LALINSPIRAL
LALSUITE_ENABLE_LALINFERENCE
LALSUITE_ENABLE_LALPULSAR
LALSUITE_ENABLE_LALAPPS

# enable Doxygen top-level documentation
LALSUITE_ENABLE_DOXYGEN

# directories of top-level build and source
lalsuite_abs_top_builddir="`pwd`"
lalsuite_abs_top_srcdir='$(abs_top_srcdir)/..'

# indicate to configure.ac in subdirectories that this is a top-level build
LALSUITE_BUILD="true"
export LALSUITE_BUILD

# list of LALSuite packages being built
LALSUITE_PACKAGES=
export LALSUITE_PACKAGES

# configure a lalsuite package
lalsuite_libs=
lalsuite_package_configure_deps=
AC_DEFUN([lalsuite_config_subdir],[
  m4_pushdef([lowercase],m4_translit([[$1]], [A-Z], [a-z]))
  m4_pushdef([uppercase],m4_translit([[$1]], [a-z], [A-Z]))
  # if $1 is enabled
  AS_IF([test "x${lowercase}" = xtrue],[

    # add to list of packages being built
    LALSUITE_PACKAGES="${LALSUITE_PACKAGES} $1"

    # check that environment for enabled dependent pacakges has been set
    m4_foreach_w([dep],$2,[
      m4_pushdef([dep_lowercase],m4_translit(dep, [A-Z], [a-z]))
      m4_pushdef([dep_uppercase],m4_translit(dep, [a-z], [A-Z]))
      AS_IF([test "x${dep_lowercase}" = xtrue && test "x${dep_uppercase[]_[]CFLAGS}" = x],[
        AC_MSG_ERROR([$1 depends on dep but dep environment is not set; [lalsuite_config_subdir()] calls may be in wrong dependency order])
      ])
      m4_popdef([dep_lowercase])
      m4_popdef([dep_uppercase])
    ])

    # re-run top-level ./00boot if any package-level ./configure.ac have changed
    # - this is needed to pick up e.g. any new inter-package dependencies
    lalsuite_package_configure_deps="${lalsuite_package_configure_deps} "'$(top_srcdir)/lowercase/configure.ac'

    # re-build AUTHORS if any package-level AUTHORS have changed
    lalsuite_package_AUTHORS_deps="${lalsuite_package_AUTHORS_deps} "'$(top_srcdir)/lowercase/AUTHORS'

    m4_if($1,[LALApps],[],[

      # add to list of libraries being built
      lalsuite_libs="${lalsuite_libs} lowercase"

      # export precious environment variables
      uppercase[]_LIBS="${lalsuite_abs_top_builddir}/lowercase/lib/lib[]lowercase.la"
      uppercase[]_CFLAGS="-I${lalsuite_abs_top_builddir}/lowercase/include"
      uppercase[]_HTMLDIR="${htmldir}/../lowercase"
      m4_foreach_w([dep],$2,[
        m4_pushdef([dep_uppercase],m4_translit(dep, [a-z], [A-Z]))
        for flag in ${dep_uppercase[]_CFLAGS}; do
          AS_CASE([${flag}],
            [-I*],[
              AS_CASE([" ${uppercase[]_CFLAGS} "],
                [*" ${flag} "*],[:],
                [uppercase[]_CFLAGS="${uppercase[]_CFLAGS} ${flag}"]
              )
            ]
          )
        done
        m4_popdef([dep_uppercase])
      ])
      export uppercase[]_LIBS uppercase[]_CFLAGS uppercase[]_HTMLDIR

      # export precious environment paths
      uppercase[]_BIN_PATH="${lalsuite_abs_top_builddir}/lowercase/bin"
      uppercase[]_DATA_PATH="${lalsuite_abs_top_srcdir}/lowercase/lib:${lalsuite_abs_top_srcdir}/lowercase/test"
      uppercase[]_OCTAVE_PATH="${lalsuite_abs_top_builddir}/lowercase/octave"
      uppercase[]_PYTHON_PATH="${lalsuite_abs_top_builddir}/lowercase/python"
      m4_foreach_w([suffix],DATA_PATH OCTAVE_PATH PYTHON_PATH,[
        m4_foreach_w([dep],$2,[
          m4_pushdef([dep_uppercase],m4_translit(dep, [a-z], [A-Z]))
          LALSUITE_ADD_PATH(uppercase[]_[]suffix,"${dep_uppercase[]_[]suffix}")
          m4_popdef([dep_uppercase])
        ])
      ])
      export uppercase[]_BIN_PATH uppercase[]_DATA_PATH uppercase[]_OCTAVE_PATH uppercase[]_PYTHON_PATH

    ])

    # configure $1
    AC_CONFIG_SUBDIRS(lowercase)

    # set enable string
    uppercase[]_ENABLE_VAL=ENABLED
  ],[
    # set disable string
    uppercase[]_ENABLE_VAL=DISABLED
  ])

  m4_popdef([lowercase])
  m4_popdef([uppercase])
])

# lal and lalsupport are always configured
lalsuite_config_subdir([LAL],[])
LALSUPPORT_LIBS="${lalsuite_abs_top_builddir}/lal/lib/support/liblalsupport.la"
LALSUPPORT_CFLAGS="-I${lalsuite_abs_top_builddir}/lal/include"
LALSUPPORT_BIN_PATH="${LAL_BIN_PATH}"
LALSUPPORT_DATA_PATH="${LAL_DATA_PATH}"
LALSUPPORT_OCTAVE_PATH="${LAL_OCTAVE_PATH}"
LALSUPPORT_PYTHON_PATH="${LAL_PYTHON_PATH}"
LALSUPPORT_HTMLDIR="${htmldir}/../lal"
export LALSUPPORT_LIBS LALSUPPORT_CFLAGS LALSUPPORT_HTMLDIR
export LALSUPPORT_BIN_PATH LALSUPPORT_DATA_PATH LALSUPPORT_OCTAVE_PATH LALSUPPORT_PYTHON_PATH

# configure optional packages
# - 2nd argument lists library dependencies
#   * used by lalsuite_config_subdir() to generate DATA/OCTAVE/PYTHON_PATHs including dependencies
#   * used by gnuscripts/check_library_dependencies to check for consistent dependencies throughout build system
lalsuite_config_subdir([LALFrame],[LAL])
lalsuite_config_subdir([LALMetaIO],[LAL])
lalsuite_config_subdir([LALSimulation],[LAL])
lalsuite_config_subdir([LALBurst],[LAL LALMetaIO LALSimulation])
lalsuite_config_subdir([LALInspiral],[LAL LALFrame LALMetaIO LALSimulation LALBurst])
lalsuite_config_subdir([LALInference],[LAL LALFrame LALMetaIO LALSimulation LALBurst LALInspiral])
lalsuite_config_subdir([LALPulsar],[LAL LALFrame LALSimulation LALInference])
lalsuite_config_subdir([LALApps],[LAL LALFrame LALMetaIO LALSimulation LALBurst LALInspiral LALInference LALPulsar])

# configure Doxygen top-level documentation
# - needs to come after all LALSuite libraries have been configured
LALSUITE_USE_DOXYGEN
DOXYGEN_TAGFILES=`echo "${DOXYGEN_TAGFILES}" | ${SED} 's|\$(abs_top_builddir)/\.\./|$(abs_top_builddir)/|g'`
DOXYGEN_INSTALL_DIRMAP=`echo "${DOXYGEN_INSTALL_DIRMAP}" | ${SED} 's|\$(abs_top_builddir)/\.\./|$(abs_top_builddir)/|g'`

AC_SUBST([LALSUITE_PACKAGES])
AC_SUBST([ac_configure_args])
AC_SUBST([lalsuite_package_configure_deps])
AC_SUBST([lalsuite_package_AUTHORS_deps])
AC_OUTPUT
AC_MSG_NOTICE([
==================================================
LALSuite has now been successfully configured:

* LALFrame library support is $LALFRAME_ENABLE_VAL
* LALMetaIO library support is $LALMETAIO_ENABLE_VAL
* LALSimulation library support is $LALSIMULATION_ENABLE_VAL
* LALBurst library support is $LALBURST_ENABLE_VAL
* LALInspiral library support is $LALINSPIRAL_ENABLE_VAL
* LALInference library support is $LALINFERENCE_ENABLE_VAL
* LALPulsar library support is $LALPULSAR_ENABLE_VAL
* LALApps library support is $LALAPPS_ENABLE_VAL
* Doxygen documentation is $DOXYGEN_ENABLE_VAL

and will be installed under the directory:

${prefix}

Now run 'make' to build LALSuite,
and run 'make install' to install LALSuite.
==================================================
])