#define DEAL_II_NAMESPACE_OPEN namespace dealii {
#define DEAL_II_NAMESPACE_CLOSE }
+/* Define to the full name of this package. */
+#define DEAL_II_PACKAGE_NAME "@DEAL_II_PACKAGE_NAME@"
+/* Define to the one symbol short name of this package. */
+#define DEAL_II_PACKAGE_TARNAME "@DEAL_II_PACKAGE_TARNAME@"
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Defined if the prototype of abort() has a no-throw exception specification.
- */
-#undef DEAL_II_ABORT_NOTHROW_EXCEPTION
-
-/* Flag indicating whether there is a bug in the compiler that leads to bogus
- warnings for inline class members in anonymous namespaces */
-#undef DEAL_II_ANON_NAMESPACE_BOGUS_WARNING
-
-/* Defined if the compiler needs to see the static keyword even for functions
- in anonymous namespaces, to avoid duplicate symbol errors when linking. For
- the details, look at aclocal.m4 in the top-level directory. */
-#undef DEAL_II_ANON_NAMESPACE_BUG
-
-/* Another test if the compiler needs to see the static keyword even for
- functions in anonymous namespaces, to avoid duplicate symbol errors when
- linking. For the details, look at aclocal.m4 in the top-level directory. */
-#undef DEAL_II_ANON_NAMESPACE_LINKAGE_BUG
-
-/* Defined if the compiler has a problem with using arrays as arguments in
- functions */
-#undef DEAL_II_ARRAY_ARG_BUG
-
-/* Defined if the compiler has a problem with assigning arrays in conditionals
- */
-#undef DEAL_II_ARRAY_CONDITIONAL_DECAY_BUG
-
-/* Defined if the compiler gets an internal error compiling some code that
- involves boost::bind */
-#undef DEAL_II_BOOST_BIND_COMPILER_BUG
-
-/* Defined if the compiler gets an internal error compiling some code that
- involves boost::graph */
-#undef DEAL_II_BOOST_GRAPH_COMPILER_BUG
-
-/* Define if the use of socket functionality leads to strange results with
- floating point computations on cygwin systems. */
-#undef DEAL_II_BROKEN_SOCKETS
-
-/* Defined if the compiler we use supports the C++2011 standard well enough to
- allow using the standard library classes instead of the corresponding BOOST
- classes. */
-#undef DEAL_II_CAN_USE_CXX1X
-
-/* Backward compatibility support for functions and classes that do not take
- an explicit mapping variable, but rather use a default Q1 mapping instead
- */
-#undef DEAL_II_COMPAT_MAPPING
-
-/* Defined if the compiler supports including <mpi.h> */
-#undef DEAL_II_COMPILER_SUPPORTS_MPI
-
-/* Defined if the compiler can use arithmetic operations on vectorized data
- types */
-#undef DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
-
-/* Equal to 0 in the generic case, equal to 1 if CPU compiled for supports
- SSE2, equal to 2 if CPU compiled for supports AVX */
-#undef DEAL_II_COMPILER_VECTORIZATION_LEVEL
-
-/* Defined if the compiler has a bug in deducing the type of pointers to const
- member functions. */
-#undef DEAL_II_CONST_MEMBER_DEDUCTION_BUG
-
-/* If the compiler supports this, then this variable is defined to a string
- that when written after a function name makes the compiler emit a warning
- whenever this function is used somewhere that its use is deprecated. */
-#undef DEAL_II_DEPRECATED
-
-/* disable the function parser in contrib */
-#undef DEAL_II_DISABLE_PARSER
-
-/* Defined if the compiler does not honor the explicit keyword on template
- constructors. */
-#undef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
-
-/* Define if we have to work around a bug where the compiler doesn't accept an
- explicit destructor call. See the aclocal.m4 file in the top-level
- directory for a description of this bug. */
-#undef DEAL_II_EXPLICIT_DESTRUCTOR_BUG
-
-/* Defined if the compiler needs a workaround for certain problems with taking
- the address of template template functions. For the details, look at
- aclocal.m4 in the top-level directory. */
-#undef DEAL_II_FUNPTR_TEMPLATE_TEMPLATE_BUG
-
-/* Defined if the compiler has a bug with dynamic casting and dynamic
- libraries */
-#undef DEAL_II_HAVE_DARWIN_DYNACAST_BUG
-
-/* Defined if you have HDF5 support */
-#undef DEAL_II_HAVE_HDF5
-
-/* Defined if std::isfinite is available */
-#undef DEAL_II_HAVE_ISFINITE
+/* Define to the version of this package. */
+#define DEAL_II_PACKAGE_VERSION "@DEAL_II_PACKAGE_VERSION@"
-/* Flag indicating whether the library shall be compiled to use the Tecplot
- interface */
-#undef DEAL_II_HAVE_TECPLOT
+/* Define to the full name and version of this package. */
+#define DEAL_II_PACKAGE_STRING "@DEAL_II_PACKAGE_STRING@"
-/* Defined if the compiler refuses to compile the definition of a function
- that was previously declared abstract. */
-#undef DEAL_II_IMPLEMENTED_PURE_FUNCTION_BUG
+/* Define to the address where bug reports for this package should be sent. */
+#define DEAL_II_PACKAGE_BUGREPORT "@DEAL_II_PACKAGE_BUGREPORT@"
-/* Define if we have to work around a bug in Sun's Forte compiler. See the
- aclocal.m4 file in the top-level directory for a description of this bug.
- */
-#undef DEAL_II_LOCAL_TYPEDEF_COMP_WORKAROUND
+/* Define to the home page for this package. */
+#define DEAL_II_PACKAGE_URL "@DEAL_II_PACKAGE_URL@"
-/* Defined if the compiler gets an internal compiler upon some code involving
- long doubles, and with optimization. For the details, look at aclocal.m4 in
- the top-level directory. */
-#undef DEAL_II_LONG_DOUBLE_LOOP_BUG
+/* Path to the deal.II directory */
+#define DEAL_II_PATH "@DEAL_II_PATH@"
/* Major version number of deal.II */
-#undef DEAL_II_MAJOR
-
-/* Defined if the compiler refuses to allow the explicit specialization of
- static member arrays. For the exact failure mode, look at aclocal.m4 in the
- top-level directory. */
-#undef DEAL_II_MEMBER_ARRAY_SPECIALIZATION_BUG
-
-/* Define if we have to work around a bug in gcc with explicitly instantiating
- template member operators. See the aclocal.m4 file in the top-level
- directory for a description of this bug. */
-#undef DEAL_II_MEMBER_OP_TEMPLATE_INST
-
-/* Defined if the compiler refuses to specialize an outer class template while
- keeping a member as a template. For the exact failure mode, look at
- aclocal.m4 in the top-level directory. */
-#undef DEAL_II_MEMBER_TEMPLATE_SPECIALIZATION_BUG
-
-/* Defined if the compiler refuses to allow the explicit specialization of
- static member variables. For the exact failure mode, look at aclocal.m4 in
- the top-level directory. */
-#undef DEAL_II_MEMBER_VAR_SPECIALIZATION_BUG
+#define DEAL_II_MAJOR "@DEAL_II_VERSION_MAJOR@" # legacy
+#define DEAL_II_VERSION_MAJOR "@DEAL_II_VERSION_MAJOR@"
/* Minor version number of deal.II */
-#undef DEAL_II_MINOR
+#define DEAL_II_MINOR "@DEAL_II_VERSION_MINOR@" # legacy
+#define DEAL_II_VERSION_MINOR "@DEAL_II_VERSION_MINOR@"
-/* Set to the minimal number of elements a std::vector<bool> can always hold,
- i.e. its minimal capacity. */
-#undef DEAL_II_MIN_BOOL_VECTOR_CAPACITY
-/* Set to the minimal number of elements a std::vector<T> can always hold,
- i.e. its minimal capacity. */
-#undef DEAL_II_MIN_VECTOR_CAPACITY
-
-/* enable multigrid compatibility mode */
-#undef DEAL_II_MULTIGRID_COMPATIBILITY
-
-/* Define if we have to work around a bug in gcc with marking all instances of
- a template class as friends to this class if the class is inside a
- namespace. See the aclocal.m4 file in the top-level directory for a
- description of this bug. */
-#undef DEAL_II_NAMESP_TEMPL_FRIEND_BUG
-
-/* Define if we have to work around another bug in gcc with marking all
- instances of a template class as friends to this class if the class is
- inside a namespace. See the aclocal.m4 file in the top-level directory for
- a description of this bug. */
-#undef DEAL_II_NAMESP_TEMPL_FRIEND_BUG2
-/* Defined if the compiler does not properly implement the resolution of
- defect report #45 to the C++ standard, which makes nested types implicit
- friends of the enclosing class. */
-#undef DEAL_II_NESTED_CLASS_FRIEND_BUG
-/* Defined if the compiler does not understand friend declarations for nested
- member classes when giving a full class specification. */
-#undef DEAL_II_NESTED_CLASS_TEMPL_FRIEND_BUG
-
-/* Path to the deal.II directory */
-#undef DEAL_II_PATH
-
-/* Defined if the compiler does not support the
- substitution-failure-is-not-an-error paradigm. For the details, look at
- aclocal.m4 in the top-level directory. */
-#undef DEAL_II_SFINAE_BUG
-
-/* Define if we have to work around a bug in Sun's Forte compiler. See the
- aclocal.m4 file in the top-level directory for a description of this bug.
- */
-#undef DEAL_II_TEMPLATE_SPEC_ACCESS_WORKAROUND
-
-/* Defined if the compiler refuses to allow a typedef to a template template
- class template parameter. For the exact failure mode, look at aclocal.m4 in
- the top-level directory. */
-#undef DEAL_II_TEMPLATE_TEMPLATE_TYPEDEF_BUG
-
-/* Defined if the compiler requires the use of the template keyword for
- disambiguation keyword in certain contexts in which it is not supposed to
- do so. For the exact failure mode, look at aclocal.m4 in the top-level
- directory. */
-#undef DEAL_II_TEMPL_OP_DISAMBIGUATION_BUG
-
-/* Define if we have to work around a bug with some compilers that will not
- allow us to specify a fully specialized class of a template as a friend.
- See the aclocal.m4 file in the top-level directory for a description of
- this bug. */
-#undef DEAL_II_TEMPL_SPEC_FRIEND_BUG
+/*****************************************
+ * Configured in configure_arpack.cmake: *
+ *****************************************/
/* Defined if an ARPACK installation was found and is going to be used */
-#undef DEAL_II_USE_ARPACK
-
-/* Define if the compiler provides a <errno.g> header file which does not
- define all error codes such as EINTR. In that case, use the system include
- file at /usr/include instead. There is probably a better way to do this,
- but it is not apparent by looking at the C/C++ compatibility header
- provided by the compiler. */
-#undef DEAL_II_USE_DIRECT_ERRNO_H
-
-/* Defined if deal.II is configured with an external Boost library */
-#undef DEAL_II_USE_EXTERNAL_BOOST
-
-/* Defined if a Metis installation was found and is going to be used */
-#undef DEAL_II_USE_METIS
-
-/* Flag indicating whether the library shall be compiled for multithreaded
- applications. If so, then it is set to one, otherwise to zero. */
-#undef DEAL_II_USE_MT
-
-/* Defined if multi-threading is to be achieved by using the POSIX functions
- */
-#undef DEAL_II_USE_MT_POSIX
+#cmakedefine DEAL_II_USE_ARPACK
-/* Defined if POSIX is supported but not the newer POSIX barrier functions.
- Barriers will then not work in the library, but the other threading
- functionality is available. */
-#undef DEAL_II_USE_MT_POSIX_NO_BARRIERS
-
-/* Defined if a MUMPS installation was found and is going to be used */
-#undef DEAL_II_USE_MUMPS
-
-/* Defined if we are to use the p4est library to distribute meshes on a
- cluster computer. */
-#undef DEAL_II_USE_P4EST
-
-/* Defined if a PETSc installation was found and is going to be used */
-#undef DEAL_II_USE_PETSC
-
-/* Defined if a PETSc installation was found with complex scalar type and is
- going to be used */
-#undef DEAL_II_USE_PETSC_COMPLEX
-/* Defined if a PETSc installation was found and is not a release */
-#undef DEAL_II_USE_PETSC_DEV
+/***************************************
+ * Configured in configure_blas.cmake: *
+ ***************************************/
-/* Defined if a SLEPc installation was found and is going to be used */
-#undef DEAL_II_USE_SLEPC
-
-/* Defined if a Trilinos installation was found and is going to be used */
-#undef DEAL_II_USE_TRILINOS
-
-/* Define if vector iterators are just plain pointers */
-#undef DEAL_II_VECTOR_ITERATOR_IS_POINTER
+/* Defined if deal.II was configured with BLAS support */
+#cmakedefine HAVE_LIBBLAS
-/* This error appears in the Apple edition of the gcc 3.3, which ships with
- Darwin7.9.0 and probably previous version. It leads to problems during
- linking. For the details, look at aclocal.m4 in the top-level directory. */
-#undef DEAL_II_WEAK_LINKAGE_BUG
-/* Defined if the system stores words with the most significant byte first */
-#undef DEAL_II_WORDS_BIGENDIAN
+/*************************************************
+ * Configured in configure_functionparser.cmake: *
+ *************************************************/
-/* Define to 1 if you have the <Amesos.h> header file. */
-#undef HAVE_AMESOS_H
+/* Defined if you have the `functionparser' library */
+#cmakedefine HAVE_FUNCTIONPARSER
-/* Define to 1 if you have the <AztecOO.h> header file. */
-#undef HAVE_AZTECOO_H
-/* Define to 1 if you have the <AztecOO_Operator.h> header file. */
-#undef HAVE_AZTECOO_OPERATOR_H
+/*****************************************
+ * Configured in configure_lapack.cmake: *
+ *****************************************/
-/* Define if the compiler provides __builtin_expect */
-#undef HAVE_BUILTIN_EXPECT
+/* Defined if deal.II was configured with LAPACK support */
+#cmakedefine HAVE_LIBLAPACK
/* Define to 1 if you have the `daxpy_' function. */
-#undef HAVE_DAXPY_
+#cmakedefine HAVE_DAXPY_
/* Define to 1 if you have the `dgeevx_' function. */
-#undef HAVE_DGEEVX_
+#cmakedefine HAVE_DGEEVX_
/* Define to 1 if you have the `dgeev_' function. */
-#undef HAVE_DGEEV_
+#cmakedefine HAVE_DGEEV_
/* Define to 1 if you have the `dgelsd_' function. */
-#undef HAVE_DGELSD_
+#cmakedefine HAVE_DGELSD_
/* Define to 1 if you have the `dgemm_' function. */
-#undef HAVE_DGEMM_
+#cmakedefine HAVE_DGEMM_
/* Define to 1 if you have the `dgemv_' function. */
-#undef HAVE_DGEMV_
+#cmakedefine HAVE_DGEMV_
/* Define to 1 if you have the `dgeqrf_' function. */
-#undef HAVE_DGEQRF_
+#cmakedefine HAVE_DGEQRF_
/* Define to 1 if you have the `dgesdd_' function. */
-#undef HAVE_DGESDD_
+#cmakedefine HAVE_DGESDD_
/* Define to 1 if you have the `dgesvd_' function. */
-#undef HAVE_DGESVD_
+#cmakedefine HAVE_DGESVD_
/* Define to 1 if you have the `dgetrf_' function. */
-#undef HAVE_DGETRF_
+#cmakedefine HAVE_DGETRF_
/* Define to 1 if you have the `dgetri_' function. */
-#undef HAVE_DGETRI_
+#cmakedefine HAVE_DGETRI_
/* Define to 1 if you have the `dgetrs_' function. */
-#undef HAVE_DGETRS_
+#cmakedefine HAVE_DGETRS_
/* Define to 1 if you have the `dorgqr_' function. */
-#undef HAVE_DORGQR_
+#cmakedefine HAVE_DORGQR_
/* Define to 1 if you have the `dormqr_' function. */
-#undef HAVE_DORMQR_
+#cmakedefine HAVE_DORMQR_
/* Define to 1 if you have the `dstev_' function. */
-#undef HAVE_DSTEV_
+#cmakedefine HAVE_DSTEV_
/* Define to 1 if you have the `dsyevx_' function. */
-#undef HAVE_DSYEVX_
+#cmakedefine HAVE_DSYEVX_
/* Define to 1 if you have the `dsygvx_' function. */
-#undef HAVE_DSYGVX_
+#cmakedefine HAVE_DSYGVX_
-/* Define to 1 if you have the `dsygv_' function. */
-#undef HAVE_DSYGV_
+/* Define to 1 if you have the `sgeevx_' function. */
+#cmakedefine HAVE_SGEEVX_
-/* Define to 1 if you have the `dtrtrs_' function. */
-#undef HAVE_DTRTRS_
+/* Define to 1 if you have the `sgeev_' function. */
+#cmakedefine HAVE_SGEEV_
-/* Define to 1 if you have the <Epetra_CrsGraph.h> header file. */
-#undef HAVE_EPETRA_CRSGRAPH_H
+/* Define to 1 if you have the `sgelsd_' function. */
+#cmakedefine HAVE_SGELSD_
-/* Define to 1 if you have the <Epetra_CrsMatrix.h> header file. */
-#undef HAVE_EPETRA_CRSMATRIX_H
+/* Define to 1 if you have the `sgemm_' function. */
+#cmakedefine HAVE_SGEMM_
-/* Define to 1 if you have the <Epetra_Import.h> header file. */
-#undef HAVE_EPETRA_IMPORT_H
+/* Define to 1 if you have the `sgemv_' function. */
+#cmakedefine HAVE_SGEMV_
-/* Define to 1 if you have the <Epetra_LinearProblem.h> header file. */
-#undef HAVE_EPETRA_LINEARPROBLEM_H
+/* Define to 1 if you have the `sgeqrf_' function. */
+#cmakedefine HAVE_SGEQRF_
-/* Define to 1 if you have the <Epetra_Map.h> header file. */
-#undef HAVE_EPETRA_MAP_H
+/* Define to 1 if you have the `sgesdd_' function. */
+#cmakedefine HAVE_SGESDD_
-/* Define to 1 if you have the <Epetra_MultiVector.h> header file. */
-#undef HAVE_EPETRA_MULTIVECTOR_H
+/* Define to 1 if you have the `sgesvd_' function. */
+#cmakedefine HAVE_SGESVD_
-/* Define to 1 if you have the <Epetra_Operator.h> header file. */
-#undef HAVE_EPETRA_OPERATOR_H
+/* Define to 1 if you have the `sgetrf_' function. */
+#cmakedefine HAVE_SGETRF_
-/* Define to 1 if you have the <Epetra_SerialComm.h> header file. */
-#undef HAVE_EPETRA_SERIALCOMM_H
+/* Define to 1 if you have the `sgetri_' function. */
+#cmakedefine HAVE_SGETRI_
-/* Define to 1 if you have the <Epetra_Vector.h> header file. */
-#undef HAVE_EPETRA_VECTOR_H
+/* Define to 1 if you have the `sgetrs_' function. */
+#cmakedefine HAVE_SGETRS_
-/* Define to 1 if you have the `gethostname' function. */
-#undef HAVE_GETHOSTNAME
+/* Define to 1 if you have the `sorgqr_' function. */
+#cmakedefine HAVE_SORGQR_
-/* Define to 1 if you have the `getpid' function. */
-#undef HAVE_GETPID
+/* Define to 1 if you have the `sormqr_' function. */
+#cmakedefine HAVE_SORMQR_
-/* Define if deal.II is linked against a libc that provides stacktrace debug
- information that can be printed out in the exception class */
-#undef HAVE_GLIBC_STACKTRACE
+/* Define to 1 if you have the `sstev_' function. */
+#cmakedefine HAVE_SSTEV_
-/* Availability of the MA27 algorithm from HSL */
-#undef HAVE_HSL_MA27
+/* Define to 1 if you have the `ssyevx_' function. */
+#cmakedefine HAVE_SSYEVX_
-/* Availability of the MA47 algorithm from HSL */
-#undef HAVE_HSL_MA47
+/* Define to 1 if you have the `ssygvx_' function. */
+#cmakedefine HAVE_SSYGVX_
-/* Define to 1 if you have the <Ifpack.h> header file. */
-#undef HAVE_IFPACK_H
+/* Defined if you have the `strtrs_' function. */
+#cmakedefine HAVE_STRTRS_
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-/* Define to 1 if you have the `jn' function. */
-#undef HAVE_JN
+/****************************************
+ * Configured in configure_metis.cmake: *
+ ****************************************/
-/* Defined if deal.II was configured with BLAS support */
-#undef HAVE_LIBBLAS
+/* Defined if a Metis installation was found and is going to be used */
+#cmakedefine DEAL_II_USE_METIS
-/* Defined if deal.II was configured with LAPACK support */
-#undef HAVE_LIBLAPACK
-/* Define to 1 if you have the `NetCDF' library (-lnetcdf). */
-#undef HAVE_LIBNETCDF
+/**************************************
+ * Configured in configure_mpi.cmake: *
+ **************************************/
-/* Define if the std c++ library provides a demangler conforming to the GCC
- libstdc++ interface. */
-#undef HAVE_LIBSTDCXX_DEMANGLER
+/* Defined if the compiler supports mpi */
+#cmakedefine DEAL_II_COMPILER_SUPPORTS_MPI
-/* UMFPACK is */
-#undef HAVE_LIBUMFPACK
-/* "" */
-#undef HAVE_LIBZ
+/*****************************************
+ * Configured in configure_netcdf.cmake: *
+ *****************************************/
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
+/* Defined if you have the `NetCDF' library */
+#cmakedefine HAVE_LIBNETCDF
-/* Define to 1 if you have the <ml_MultiLevelPreconditioner.h> header file. */
-#undef HAVE_ML_MULTILEVELPRECONDITIONER_H
-/* Define if you have the rand_r function */
-#undef HAVE_RAND_R
+/****************************************
+ * Configured in configure_p4est.cmake: *
+ ****************************************/
-/* Define to 1 if you have the <Sacado.hpp> header file. */
-#undef HAVE_SACADO_HPP
+/* Defined if we are to use the p4est library to distribute meshes on a
+ cluster computer. */
+#cmakedefine DEAL_II_USE_P4EST
-/* Define to 1 if you have the `saxpy_' function. */
-#undef HAVE_SAXPY_
-/* Define to 1 if you have the `sgeevx_' function. */
-#undef HAVE_SGEEVX_
+/****************************************
+ * Configured in configure_petsc.cmake: *
+ ****************************************/
-/* Define to 1 if you have the `sgeev_' function. */
-#undef HAVE_SGEEV_
+/* Defined if a PETSc installation was found and is going to be used */
+#cmakedefine DEAL_II_USE_PETSC
-/* Define to 1 if you have the `sgelsd_' function. */
-#undef HAVE_SGELSD_
+/*
+ * Note: The following definitions will be set in petscconf.h and
+ * petscversion.h, so we don't repeat them here.
+ *
+ * PETSC_VERSION_MAJOR
+ * PETSC_VERSION_MINOR
+ * PETSC_VERSION_SUBMINOR
+ * PETSC_VERSION_PATCH
+ * PETSC_VERSION_RELEASE
+ * PETSC_USE_COMPLEX
+ */
-/* Define to 1 if you have the `sgemm_' function. */
-#undef HAVE_SGEMM_
+/**
+ * These macros are defined to make testing for PETSc versions within
+ * the deal.II main code as simple as possible. In brief they are used
+ * like this: (i) DEAL_II_PETSC_VERSION_LT is used to advance the
+ * PETScWrappers to newer versions of PETSc while preserving backward
+ * compatibility; and (ii) DEAL_II_PETSC_VERSION_GTE is used to add
+ * functionality to the PETScWrappers that does not exist in previous
+ * versions of PETSc. Examples of usage can be found in
+ * lac/source/petsc_matrix_base.h. Note: SLEPcWrappers do not need
+ * their own analogical macros, since SLEPc and PETSc must have
+ * identical version numbers anyways.
+ */
+#define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
+ ((PETSC_VERSION_MAJOR * 10000 + \
+ PETSC_VERSION_MINOR * 100 + \
+ PETSC_VERSION_SUBMINOR) \
+ < \
+ (major)*10000 + (minor)*100 + (subminor))
-/* Define to 1 if you have the `sgemv_' function. */
-#undef HAVE_SGEMV_
+#define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
+ ((PETSC_VERSION_MAJOR * 10000 + \
+ PETSC_VERSION_MINOR * 100 + \
+ PETSC_VERSION_SUBMINOR) \
+ >= \
+ (major)*10000 + (minor)*100 + (subminor))
-/* Define to 1 if you have the `sgeqrf_' function. */
-#undef HAVE_SGEQRF_
-/* Define to 1 if you have the `sgesdd_' function. */
-#undef HAVE_SGESDD_
+/**************************************
+ * Configured in configure_tbb.cmake: *
+ **************************************/
-/* Define to 1 if you have the `sgesvd_' function. */
-#undef HAVE_SGESVD_
+/* Flag indicating whether the library shall be compiled for multithreaded
+ * applications. If so, then it is set to one, otherwise to zero.
+ */
+#cmakedefine DEAL_II_USE_MT
-/* Define to 1 if you have the `sgetrf_' function. */
-#undef HAVE_SGETRF_
+/* Defined if multi-threading is to be achieved by using the POSIX functions
+ */
+#cmakedefine DEAL_II_USE_MT_POSIX
-/* Define to 1 if you have the `sgetri_' function. */
-#undef HAVE_SGETRI_
+/* Defined if POSIX is supported but not the newer POSIX barrier functions.
+ * Barriers will then not work in the library, but the other threading
+ * functionality is available.
+ */
+#cmakedefine DEAL_II_USE_MT_POSIX_NO_BARRIERS
-/* Define to 1 if you have the `sgetrs_' function. */
-#undef HAVE_SGETRS_
+/**
+ * Depending on the use of threads, we will have to make some variables
+ * volatile. We do this here in a very old-fashioned C-style, but still
+ * convenient way.
+ */
+#ifdef DEAL_II_USE_MT
+# define DEAL_VOLATILE volatile
+#else
+# define DEAL_VOLATILE
+#endif
-/* Define to 1 if you have the `sorgqr_' function. */
-#undef HAVE_SORGQR_
-/* Define to 1 if you have the `sormqr_' function. */
-#undef HAVE_SORMQR_
+/*******************************************
+ * Configured in configure_trilinos.cmake: *
+ *******************************************/
-/* Define to 1 if you have the `sstev_' function. */
-#undef HAVE_SSTEV_
+/* Defined if a Trilinos installation was found and is going to be used */
+#cmakedefine DEAL_II_USE_TRILINOS
-/* Define to 1 if you have the `ssyevx_' function. */
-#undef HAVE_SSYEVX_
-/* Define to 1 if you have the `ssygvx_' function. */
-#undef HAVE_SSYGVX_
+/******************************************
+ * Configured in configure_umfpack.cmake: *
+ ******************************************/
-/* Define to 1 if you have the `ssygv_' function. */
-#undef HAVE_SSYGV_
+/* Defined if deal.II was configured with UMFPACK support */
+#cmakedefine HAVE_LIBUMFPACK
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
+/***************************************
+ * Configured in configure_zlib.cmake: *
+ ***************************************/
-/* Define if the compiler provides an <iosfwd> header file */
-#undef HAVE_STD_IOSFWD_HEADER
+/* Defined if deal.II was configure with zlib support */
+#cmakedefine HAVE_LIBZ
-/* Define if the compiler's library in use provides a std::iterator class
- (early gcc versions did not) */
-#undef HAVE_STD_ITERATOR_CLASS
-/* Define if the compiler's library in use provides std::numeric_limits
- classes in the appropriate header file */
-#undef HAVE_STD_NUMERIC_LIMITS
-/* Define if the compiler provides an <ostream> header file */
-#undef HAVE_STD_OSTREAM_HEADER
-/* Define if the compiler's library in use provides std::i/ostringstream
- classes (early gcc versions did not) */
-#undef HAVE_STD_STRINGSTREAM
+/**********************************************
+ * Configured in check_for_compiler_features: *
+ **********************************************/
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
+/* Defined if vector iterators are just plain pointers */
+#cmakedefine DEAL_II_VECTOR_ITERATOR_IS_POINTER
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
+/* Define if the compiler provides __builtin_expect */
+#cmakedefine HAVE_BUILTIN_EXPECT
-/* Define to 1 if you have the `strtrs_' function. */
-#undef HAVE_STRTRS_
+/* Define if the compiler provides __verbose_terminate_handler */
+#cmakedefine HAVE_VERBOSE_TERMINATE
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
+/* Define if deal.II is linked against a libc that provides stacktrace
+ * debug information that can be printed out in the exception class
+ * */
+#cmakedefine HAVE_GLIBC_STACKTRACE
-/* Define to 1 if you have the <sys/syscall.h> header file. */
-#undef HAVE_SYS_SYSCALL_H
+/* Defined if the std c++ library provides a demangler conforming to the
+ * GCC libstdc++ interface.
+ */
+#cmakedefine HAVE_LIBSTDCXX_DEMANGLER
-/* Define to 1 if you have the <sys/times.h> header file. */
-#undef HAVE_SYS_TIMES_H
+/* Equal to 0 in the generic case, equal to 1 if CPU compiled for supports
+ * SSE2, equal to 2 if CPU compiled for supports AVX
+ */
+#define DEAL_II_COMPILER_VECTORIZATION_LEVEL @DEAL_II_COMPILER_VECTORIZATION_LEVEL@
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
+/* Defined if the compiler can use arithmetic operations on vectorized data
+ * types
+ */
+#cmakedefine DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
-/* Define to 1 if you have the <Teuchos_ParameterList.hpp> header file. */
-#undef HAVE_TEUCHOS_PARAMETERLIST_HPP
+/* If already available, do not define at all. Otherwise, define to
+ * __func__ if that is available. In all other cases, indicate that no
+ * information about the present function is available for this compiler.
+ */
+#cmakedefine __PRETTY_FUNCTION__ @__PRETTY_FUNCTION__@
-/* Define to 1 if you have the <Teuchos_RCP.hpp> header file. */
-#undef HAVE_TEUCHOS_RCP_HPP
+/* Set to the minimal number of elements a std::vector<T> can always hold,
+ * i.e. its minimal capacity.
+ */
+#define DEAL_II_MIN_VECTOR_CAPACITY @DEAL_II_MIN_VECTOR_CAPACITY@
-/* Define to 1 if you have the <Teuchos_RefCountPtr.hpp> header file. */
-#undef HAVE_TEUCHOS_REFCOUNTPTR_HPP
+/* Set to the minimal number of elements a std::vector<bool> can always
+ * hold, i.e. its minimal capacity.
+ */
+#define DEAL_II_MIN_BOOL_VECTOR_CAPACITY @DEAL_II_MIN_BOOL_VECTOR_CAPACITY@
-/* Define to 1 if you have the `times' function. */
-#undef HAVE_TIMES
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-/* Define if the compiler provides __verbose_terminate_handler */
-#undef HAVE_VERBOSE_TERMINATE
-/* On SunOS 4.x, the getrusage() function exists, but is not declared in the
- respective header file <resource.h>, as one would think when reading the
- man pages. Then we have to declare this function ourselves in those files
- that use this function. The question whether we have to do so is controlled
- by the preprocessor variable. */
-#undef NO_HAVE_GETRUSAGE
+/******************************************
+ * Configured in check_for_compiler_bugs: *
+ ******************************************/
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
+/* Define if we have to work around a bug where the compiler doesn't accept
+ * an explicit destructor call. See the aclocal.m4 file in the top-level
+ * directory for a description of this bug.
+ */
+#cmakedefine DEAL_II_EXPLICIT_DESTRUCTOR_BUG
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
+/*****************************************
+ * Configured in check_for_cxx_features: *
+ *****************************************/
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Make sure PETSc doesn't re-define the underscore through the preprocessor,
- since this interferes with boost. PETSc redefines the underscore to be
- "__gterr =", but then forgets to undef this thing. Boost simply wants to
- concatenate the underscore with another string to form a class name, which
- then of course isn't valid any more. See mails in early Feb 2006. */
-#undef PETSC_SKIP_UNDERSCORE_CHKERR
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-# undef WORDS_BIGENDIAN
-# endif
-#endif
+/* Defined if the compiler we use supports the C++2011 standard well enough
+ * to allow using the standard library classes instead of the corresponding
+ * BOOST classes.
+ */
+#cmakedefine DEAL_II_CAN_USE_CXX1X
-/* If already available, do not define at all. Otherwise, define to __func__
- if that is available. In all other cases, indicate that no information
- about the present function is available for this compiler. */
-#undef __PRETTY_FUNCTION__
+/* Defined if isnan is available */
+#cmakedefine HAVE_ISNAN
+/* Defined if _isnan is available */
+#cmakedefine HAVE_UNDERSCORE_ISNAN
-/**
- * Depending on the use of threads, we will have to make some variables
- * volatile. We do this here in a very old-fashioned C-style, but still
- * convenient way.
- */
-#if DEAL_II_USE_MT != 0
-# define DEAL_VOLATILE volatile
-#else
-# define DEAL_VOLATILE
-#endif
+/* Defined if std::isfinite is available */
+#cmakedefine DEAL_II_HAVE_ISFINITE
+/* Defined if you have the <stdint.h> header file. */
+#cmakedefine HAVE_STDINT_H
-/**
- * A #define that indicates whether we are using the Microsoft
- * Windows Visual C/C++ compiler. We currently do not run ./configure
- * on MS Windows, so the detection for this compiler happens via
- * the appropriate #ifdef, not through a configuration testcase.
- */
-#ifdef _MSC_VER
-# define DEAL_II_MSVC
-#endif
+/* Defined if you have the <stdlib.h> header file. */
+#cmakedefine HAVE_STDLIB_H
-/**
- * Using pthreads under windows as a non-static library requires the following
- * preprocessor switch to be undefined.
- */
-#ifdef DEAL_II_MSVC
-# if defined(PTW32_STATIC_LIB)
-# undef PTW32_STATIC_LIB
-# endif
-#endif
+/* Defined if you have the <strings.h> header file. */
+#cmakedefine HAVE_STRINGS_H
-/*
- * There is an annoying problem in the Trilinos header ml_config.h: It
- * #define's HAVE_INTTYPES_H but doesn't give the symbol a value. This
- * conflicts with the result of running deal.II's ./configure which
- * #define's it and gives it the value "1". The result is a compiler
- * warning. So if we use Trilinos and if the symbol is already
- * #define'd, then #undef it again here. deal.II doesn't use the
- * #define anyway and this way if we include any of the Trilinos
- * headers they can feel free to set it again to whatever they wish.
- *
- * The form of the #undef with the comment in the middle is necessary
- * to avoid that the pattern substitution of ./configure turns the
- * #undef into a #define again.
- */
-#if defined(DEAL_II_USE_TRILINOS) && defined(HAVE_INTTYPES_H)
-# undef /* */ HAVE_INTTYPES_H
-#endif
+/* Defined if you have the <string.h> header file. */
+#cmakedefine HAVE_STRING_H
+
+/* Defined if you have the <sys/stat.h> header file. */
+#cmakedefine HAVE_SYS_STAT_H
+
+/* Defined if you have the <sys/syscall.h> header file. */
+#cmakedefine HAVE_SYS_SYSCALL_H
+
+/* Defined if you have the <sys/times.h> header file. */
+#cmakedefine HAVE_SYS_TIMES_H
+
+/* Defined if you have the <sys/types.h> header file. */
+#cmakedefine HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#cmakedefine HAVE_UNISTD_H
+
++/* If the compiler supports it, then this variable is defined to a string
++ that when written after a function name makes the compiler emit a warning
++ whenever this function is used somewhere that its use is deprecated. */
++#define DEAL_II_DEPRECATED
-/**
- * These macros are defined to make testing for PETSc versions within
- * the deal.II main code as simple as possible. In brief they are used
- * like this: (i) DEAL_II_PETSC_VERSION_LT is used to advance the
- * PETScWrappers to newer versions of PETSc while preserving backward
- * compatibility; and (ii) DEAL_II_PETSC_VERSION_GTE is used to add
- * functionality to the PETScWrappers that does not exist in previous
- * versions of PETSc. Examples of usage can be found in
- * lac/source/petsc_matrix_base.h. Note: SLEPcWrappers do not need
- * their own analogical macros, since SLEPc and PETSc must have
- * identical version numbers anyways.
- */
-#define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
- ((PETSC_VERSION_MAJOR * 10000 + \
- PETSC_VERSION_MINOR * 100 + \
- PETSC_VERSION_SUBMINOR) \
- < \
- (major)*10000 + (minor)*100 + (subminor))
-#define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
- ((PETSC_VERSION_MAJOR * 10000 + \
- PETSC_VERSION_MINOR * 100 + \
- PETSC_VERSION_SUBMINOR) \
- >= \
- (major)*10000 + (minor)*100 + (subminor))
#include <deal.II/base/numbers.h>
#include <deal.II/base/types.h>