/**
 * \file GyotoConfig.h
 * \brief Compile-time configuration
 *
 * Codes based on Gyoto and Gyoto plug-ins must have access to the
 * flags used when compiling Gyoto. This files is generated by Gyoto's
 * configure script and holds influential variables such as
 * HAVE_SINCOS.
 *
 * The values determined by configure when this documentation was
 * built are documented, replaced by "(undefined)" if the macro was
 * undefined.
 */
/*
    Copyright 2012-2015, 2018 Thibaut Paumard

    This file is part of Gyoto.

    Gyoto is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Gyoto is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Gyoto.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __GyotoConfig_H_
#define __GyotoConfig_H_

/** \def GYOTO_DEBUG_ENABLED
    \brief Whether debugging information gathering code was enabled. */
#undef GYOTO_DEBUG_ENABLED
#ifdef DOXYGEN_RUN
# ifndef GYOTO_DEBUG_ENABLED
#  define GYOTO_DEBUG_ENABLED (undefined)
# endif
#endif

/** \def GYOTO_PLUGIN_SFX
    \brief Suffix for Gyoto plug-ins. */
#undef GYOTO_PLUGIN_SFX
#ifdef DOXYGEN_RUN
# ifndef GYOTO_PLUGIN_SFX
#  define GYOTO_PLUGIN_SFX (undefined)
# endif
#endif

/** \def GYOTO_PREFIX
    \brief Gyoto prefix. */
#undef GYOTO_PREFIX
#ifdef DOXYGEN_RUN
# ifndef GYOTO_PREFIX
#  define GYOTO_PREFIX (undefined)
# endif
#endif

/** \def GYOTO_PKGLIBDIR
    \brief Gyoto pkglibdir, usually GYOTO_PREFIX/lib/gyoto */
#undef GYOTO_PKGLIBDIR
#ifdef DOXYGEN_RUN
# ifndef GYOTO_PKGLIBDIR
#  define GYOTO_PKGLIBDIR (undefined)
# endif
#endif

/** \def GYOTO_SIZE__T_IS_UNSIGNED_LONG
    \brief Define to 1 if size_t and unsigned long are the same */
#undef GYOTO_SIZE__T_IS_UNSIGNED_LONG
#ifdef DOXYGEN_RUN
# ifndef GYOTO_SIZE__T_IS_UNSIGNED_LONG
#  define GYOTO_SIZE__T_IS_UNSIGNED_LONG (undefined)
# endif
#endif

/** \def GYOTO_SOVERS
    \brief Gyoto ABI version.

    Updated in stable releases, not during dev. cycle. */
#undef GYOTO_SOVERS
#ifdef DOXYGEN_RUN
# ifndef GYOTO_SOVERS
#  define GYOTO_SOVERS (undefined)
# endif
#endif

/** \def GYOTO_USE_AEAE
 *  \brief Whether aeae support is compiled-in.
 *
 *  One of ARBLIB or AEAE is necessary for Astrobj::Jet.
 */
#undef GYOTO_USE_AEAE
#ifdef DOXYGEN_RUN
# ifndef GYOTO_USE_AEAE
#  define GYOTO_USE_AEAE (undefined)
# endif
#endif

/** \def GYOTO_USE_ARBLIB
 *  \brief Whether arblib support is compiled-in.
 *
 *  One of ARBLIB or AEAE is necessary for Astrobj::Jet.
 */
#undef GYOTO_USE_ARBLIB
#ifdef DOXYGEN_RUN
# ifndef GYOTO_USE_ARBLIB
#  define GYOTO_USE_ARBLIB (undefined)
# endif
#endif

/** \def GYOTO_USE_CFITSIO
 *  \brief Whether cfitsio support is compiled-in.
 *
 *  Necessary for FITS file format i/o, used in the Gyoto tool and
 *  optional in Gtyoto::PatternDisk.
 */
#undef GYOTO_USE_CFITSIO
#ifdef DOXYGEN_RUN
# ifndef GYOTO_USE_CFITSIO
#  define GYOTO_USE_CFITSIO (undefined)
# endif
#endif

/** \def GYOTO_USE_UDUNITS
 *  \brief Whether libudunits2 support is compiled in.
 *
 *  Foundation for the Gyoto::Units framework. Gyoto ought to build
 *  and work without it, but with restricted unit conversion
 *  capabilities.
 */
#undef GYOTO_USE_UDUNITS
#ifdef DOXYGEN_RUN
# ifndef GYOTO_USE_UDUNITS
#  define GYOTO_USE_UDUNITS (undefined)
# endif
#endif

/** \def HAVE_UDUNITS
 *  \brief Whether libudunits2 support is compiled in.
 *
 *  Foundation for the Gyoto::Units framework. Gyoto ought to build
 *  and work without it, but with restricted unit conversion
 *  capabilities.
 */
#ifdef GYOTO_USE_UDUNITS
# define HAVE_UDUNITS
#endif

/** \def GYOTO_USE_XERCES
    \brief Whether Xerces support (XML i/o) is compiled-in.

    Used only in the Gyoto::Factory but Gyoto build is not often
    tested without it.
 */
#undef GYOTO_USE_XERCES
#ifdef DOXYGEN_RUN
# ifndef GYOTO_USE_XERCES
#  define GYOTO_USE_XERCES (undefined)
# endif
#endif

/** \def HAVE_DLFCN_H
    \brief Whether <dlfcn.h> header file was found. */
#undef HAVE_DLFCN_H
#ifdef DOXYGEN_RUN
# ifndef
#  define  (undefined)
# endif
#endif

/** \def HAVE_INTTYPES_H
    \brief Whether <inttypes.h> header file was found. */
#undef HAVE_INTTYPES_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_INTTYPES_H
#  define HAVE_INTTYPES_H (undefined)
# endif
#endif

/** \def HAVE_LIBDL
    \brief Whether the `dl' library (-ldl) was found.

    Plug-in support.
 */
#undef HAVE_LIBDL
#ifdef DOXYGEN_RUN
# ifndef HAVE_LIBDL
#  define HAVE_LIBDL (undefined)
# endif
#endif

/** \def HAVE_MEMORY_H
    \brief Whether the <memory.h> header file was found. */
#undef HAVE_MEMORY_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_MEMORY_H
#  define HAVE_MEMORY_H (undefined)
# endif
#endif

/** \def HAVE_MPI
 *  \brief Whether MPI support is compiled in.
 *
 *  Message-passing interface, used in multi-process ray-tracing
 */
#undef HAVE_MPI
#ifdef DOXYGEN_RUN
# ifndef HAVE_MPI
#  define HAVE_MPI (Undefined)
# endif
#endif

/** \def HAVE_PTHREAD
 *  \brief Whether POSIX threads support is compiled-in.
 *
 *  Multi-threading support, see Gyoto::Scenery::nthreads_.
 */
#undef HAVE_PTHREAD
#ifdef DOXYGEN_RUN
# ifndef HAVE_PTHREAD
#  define HAVE_PTHREAD (undefined)
# endif
#endif

/** \def HAVE_PTHREAD_PRIO_INHERIT
    \brief Have PTHREAD_PRIO_INHERIT. */
#undef HAVE_PTHREAD_PRIO_INHERIT
#ifdef DOXYGEN_RUN
# ifndef HAVE_PTHREAD_PRIO_INHERIT
#  define HAVE_PTHREAD_PRIO_INHERIT (undefined)
# endif
#endif

/** \def HAVE_SINCOS
 *  \brief Whether the `sincos' function is available.
 *
 *  Else Gyoto provides it as a macro in GyotoDefs.h.
 */
#undef HAVE_SINCOS
#ifdef DOXYGEN_RUN
# ifndef HAVE_SINCOS
#  define HAVE_SINCOS (undefined)
# endif
#endif

/** \def HAVE_STDINT_H
    \brief Whether the <stdint.h> header file was found. */
#undef HAVE_STDINT_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_STDINT_H
#  define HAVE_STDINT_H (undefined)
# endif
#endif

/** \def HAVE_STDLIB_H
    \brief Whether the <stdlib.h> header file was found. */
#undef HAVE_STDLIB_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_STDLIB_H
#  define HAVE_STDLIB_H (undefined)
# endif
#endif

/** \def HAVE_STRINGS_H
    \brief Whether the <strings.h> header file was found. */
#undef HAVE_STRINGS_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_STRINGS_H
#  define HAVE_STRINGS_H (undefined)
# endif
#endif

/** \def HAVE_STRING_H
    \brief Whether the <string.h> header file was found. */
#undef HAVE_STRING_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_STRING_H
#  define HAVE_STRING_H (undefined)
# endif
#endif

/** \def HAVE_SYS_STAT_H
    \brief Whether the <sys/stat.h> header file was found. */
#undef HAVE_SYS_STAT_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_SYS_STAT_H
#  define HAVE_SYS_STAT_H (undefined)
# endif
#endif

/** \def HAVE_SYS_TYPES_H
    \brief Whether the <sys/types.h> header file was found. */
#undef HAVE_SYS_TYPES_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_SYS_TYPES_H
#  define HAVE_SYS_TYPES_H (undefined)
# endif
#endif

/** \def HAVE_BOOST_MULTIPRECISION_CPP_DEC_FLOAT_HPP
 *  \brief Whether support for arbitrary precision arithmetics is present
 *
 */
#undef HAVE_BOOST_MULTIPRECISION_CPP_DEC_FLOAT_HPP
#ifdef DOXYGEN_RUN
# ifndef HAVE_BOOST_MULTIPRECISION_CPP_DEC_FLOAT_HPP
#  define HAVE_BOOST_MULTIPRECISION_CPP_DEC_FLOAT_HPP (undefined)
# endif
#endif

/** \def HAVE_BOOST_ARRAY_HPP
 *  \brief Whether boost::array is available
 *
 */
#undef HAVE_BOOST_ARRAY_HPP
#ifdef DOXYGEN_RUN
# ifndef HAVE_BOOST_ARRAY_HPP
#  define HAVE_BOOST_ARRAY_HPP (undefined)
# endif
#endif

/** \def GYOTO_HAVE_BOOST_INTEGRATORS
 *  \brief Whether Boost.odeint is present, as well as C++11
 *
 *  Advanced integrators from boost/numeric/odeint/.
 */
#undef GYOTO_HAVE_BOOST_INTEGRATORS
#ifdef DOXYGEN_RUN
# ifndef GYOTO_HAVE_BOOST_INTEGRATORS
#  define GYOTO_HAVE_BOOST_INTEGRATORS (undefined)
# endif
#endif

/** \def HAVE_UNISTD_H
    \brief Whether the <unistd.h> header file was found. */
#undef HAVE_UNISTD_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_UNISTD_H
#  define HAVE_UNISTD_H (undefined)
# endif
#endif

/** \def HAVE_FENV_H
    \brief Define to 1 to use fenv.h. */
#undef HAVE_FENV_H
#ifdef DOXYGEN_RUN
# ifndef HAVE_FENV_H
#  define HAVE_FENV_H (undefined)
# endif
#endif

/** \def HAVE__BOOL
    \brief Whether the system has the type `_Bool'. */
#undef HAVE__BOOL
#ifdef DOXYGEN_RUN
# ifndef HAVE__BOOL
#  define HAVE__BOOL (undefined)
# endif
#endif

/** \def PTHREAD_CREATE_JOINABLE
    \brief Define to necessary symbol if this constant uses a non-standard name on your system. */
#undef PTHREAD_CREATE_JOINABLE
#ifdef DOXYGEN_RUN
# ifndef PTHREAD_CREATE_JOINABLE
#  define PTHREAD_CREATE_JOINABLE (undefined)
# endif
#endif

/** \def STDC_HEADERS
    \brief Whether the ANSI C header files were found. */
#undef STDC_HEADERS
#ifdef DOXYGEN_RUN
# ifndef STDC_HEADERS
#  define STDC_HEADERS (undefined)
# endif
#endif

/** \def size_t
    \brief If not defined in <sys/types.h>. */
#undef size_t
#ifdef DOXYGEN_RUN
# ifndef size_t
#  define size_t (undefined)
# endif
#endif

#endif
