Loading [MathJax]/extensions/TeX/newcommand.js
 deal.II version GIT relicensing-2995-gf925de1750 2025-04-02 00:10:01+00:00
\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}} \newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=} \newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]} \newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
config.h
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2012 - 2024 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15#ifndef dealii_config_h
16#define dealii_config_h
17
18/***********************************************************************
19 * Information about deal.II:
20 */
21
22#define DEAL_II_PACKAGE_NAME "deal.II"
23
24#define DEAL_II_PACKAGE_VERSION "GIT relicensing-2995-gf925de1750 2025-04-02 00:10:01+00:00"
25
26#define DEAL_II_VERSION_MAJOR GIT relicensing-2995-gf925de1750 2025-04-02 00:10:01+00:00
27#define DEAL_II_VERSION_MINOR GIT relicensing-2995-gf925de1750 2025-04-02 00:10:01+00:00
28#define DEAL_II_VERSION_SUBMINOR GIT relicensing-2995-gf925de1750 2025-04-02 00:10:01+00:00
29
30/***********************************************************************
31 * Two macro names that we put at the top and bottom of all deal.II files
32 * and that will be expanded to "namespace dealii {" and "}".
33 */
34
35#define DEAL_II_NAMESPACE_OPEN namespace dealii {
36#define DEAL_II_NAMESPACE_CLOSE }
37
38/***********************************************************************
39 * A variable that can be used to query whether we are compiling in
40 * debug or release mode.
41 */
42
44
51{
52 debug,
54};
55
62#ifdef DEBUG
64#else
66#endif
67
68
73constexpr bool running_in_debug_mode()
74{
76}
77
78
80
81
82/***********************************************************************
83 * Configured deal.II features:
84 */
85
86/* #undef DEAL_II_WITH_64BIT_INDICES */
87/* #undef DEAL_II_WITH_ADOLC */
88/* #undef DEAL_II_WITH_ARPACK */
89/* #undef DEAL_II_WITH_ARBORX */
90/* #undef DEAL_II_WITH_ASSIMP */
91#define DEAL_II_FEATURE_BOOST_BUNDLED_CONFIGURED
92/* #undef DEAL_II_WITH_CGAL */
93/* #undef DEAL_II_WITH_COMPLEX_VALUES */
94/* #undef DEAL_II_WITH_GINKGO */
95/* #undef DEAL_II_WITH_GMSH */
96/* #undef DEAL_II_WITH_GSL */
97/* #undef DEAL_II_WITH_HDF5 */
98#define DEAL_II_WITH_KOKKOS
99#define DEAL_II_FEATURE_KOKKOS_BUNDLED_CONFIGURED
100/* #undef DEAL_II_WITH_LAPACK */
101/* #undef LAPACK_WITH_64BIT_BLAS_INDICES */
102/* #undef DEAL_II_LAPACK_WITH_MKL */
103/* #undef DEAL_II_WITH_MAGIC_ENUM */
104/* #undef DEAL_II_WITH_METIS */
105/* #undef DEAL_II_WITH_MPI */
106#define DEAL_II_WITH_MUPARSER
107#define DEAL_II_FEATURE_MUPARSER_BUNDLED_CONFIGURED
108/* #undef DEAL_II_WITH_OPENCASCADE */
109/* #undef DEAL_II_WITH_P4EST */
110/* #undef DEAL_II_WITH_PETSC */
111/* #undef DEAL_II_WITH_PSBLAS */
112/* #undef DEAL_II_WITH_SCALAPACK */
113/* #undef DEAL_II_WITH_SLEPC */
114/* #undef DEAL_II_WITH_SUNDIALS */
115/* #undef DEAL_II_WITH_SYMENGINE */
116#define DEAL_II_WITH_TASKFLOW
117#define DEAL_II_FEATURE_TASKFLOW_BUNDLED_CONFIGURED
118#define DEAL_II_WITH_TBB
119#define DEAL_II_FEATURE_TBB_BUNDLED_CONFIGURED
120/* #undef DEAL_II_WITH_TRILINOS */
121/* #undef DEAL_II_WITH_UMFPACK */
122/* #undef DEAL_II_FEATURE_UMFPACK_BUNDLED_CONFIGURED */
123#define DEAL_II_USE_VECTORIZATION_GATHER
124/* #undef DEAL_II_WITH_VTK */
125/* #undef DEAL_II_WITH_ZLIB */
126
127#ifdef DEAL_II_WITH_TBB
132#define DEAL_II_WITH_THREADS
133
134#define TBB_SUPPRESS_DEPRECATED_MESSAGES 1
135
136/* #undef DEAL_II_TBB_WITH_ONEAPI */
137
138#endif
139
140/***********************************************************************
141 * Compiler bugs:
142 *
143 * For documentation see cmake/checks/check_03_compiler_bugs.cmake
144 */
145
146/* #undef DEAL_II_DELETED_MOVE_CONSTRUCTOR_BUG */
147
148/***********************************************************************
149 * Compiler features:
150 *
151 * For documentation see cmake/checks/check_01_compiler_features.cmake
152 */
153
154#define DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
155/* #undef DEAL_II_VECTOR_ITERATOR_IS_POINTER */
156#define DEAL_II_HAVE_BUILTIN_EXPECT
157#define DEAL_II_HAVE_GLIBC_STACKTRACE
158#define DEAL_II_HAVE_LIBSTDCXX_DEMANGLER
159/* #undef __PRETTY_FUNCTION__ */
160#define DEAL_II_ALWAYS_INLINE __attribute__((always_inline))
161#define DEAL_II_RESTRICT __restrict
162#define DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
163
164
165#define DEAL_II_HOST_DEVICE KOKKOS_FUNCTION
166#define DEAL_II_HOST_DEVICE_ALWAYS_INLINE KOKKOS_FORCEINLINE_FUNCTION
167
168// clang++ assumes that all constexpr functions are __host__ __device__ when
169// Kokkos was configured with CUDA or HIP support. This is problematic
170// when calling non-constexpr functions in constexpr functions. Hence, we
171// need a way to annotate functions explicitly as host-only.
172#if (defined(__clang__) && defined(__CUDA__)) || defined(KOKKOS_ENABLE_HIP)
173# define DEAL_II_HOST __host__
174#else
175# define DEAL_II_HOST
176#endif
177
178
179/***********************************************************************
180 * CPU features:
181 *
182 * For documentation see cmake/checks/check_01_cpu_features.cmake
183 */
184
185/* #undef DEAL_II_WORDS_BIGENDIAN */
186
187/*
188 * This sets the largest number of vectorization bits detected for the given
189 * compiler flags and hardware (e.g. 256 for AVX on x86-64 architectures) for
190 * use in deal.II's intrinsics-based VectorizedArray class.
191 */
192#define DEAL_II_VECTORIZATION_WIDTH_IN_BITS 128
193
194/*
195 * Backward compatibility setting
196 */
197#if DEAL_II_VECTORIZATION_WIDTH_IN_BITS == 512
198#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 3
199#elif DEAL_II_VECTORIZATION_WIDTH_IN_BITS == 256
200#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 2
201#elif DEAL_II_VECTORIZATION_WIDTH_IN_BITS == 128
202#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 1
203#else
204#define DEAL_II_COMPILER_VECTORIZATION_LEVEL 0
205#endif
206
207#define DEAL_II_OPENMP_SIMD_PRAGMA _Pragma("omp simd")
208
209
210/***********************************************************************
211 * Language features:
212 *
213 * For documentation see cmake/checks/check_01_cxx_features.cmake
214 */
215
216/* #undef DEAL_II_HAVE_CXX14 */
217#define DEAL_II_HAVE_CXX17
218/* #undef DEAL_II_HAVE_CXX20 */
219/* #undef DEAL_II_HAVE_CXX23 */
220
221#define DEAL_II_HAVE_FP_EXCEPTIONS
222/* #undef DEAL_II_HAVE_COMPLEX_OPERATOR_OVERLOADS */
223#define DEAL_II_HAVE_CXX17_BESSEL_FUNCTIONS
224/* #undef DEAL_II_CXX14_CONSTEXPR_BUG */
225
226// The following three are defined for backwards compatibility with older
227// deal.II versions:
228#define DEAL_II_WITH_CXX11
229#define DEAL_II_WITH_CXX14
230#define DEAL_II_WITH_CXX17
231
238#if defined(DEAL_II_HAVE_CXX20) && !defined(DEAL_II_DOXYGEN_DO_NOT_PARSE_REQUIRES_CLAUSES)
239# define DEAL_II_CXX20_REQUIRES(condition) requires(condition)
240#else
241# define DEAL_II_CXX20_REQUIRES(condition)
242#endif
243
249#ifdef DEAL_II_HAVE_CXX23
250# define DEAL_II_CXX23_ASSUME(expr) [[assume(expr)]]
251#else
252# if defined(__clang__)
253# define DEAL_II_CXX23_ASSUME(expr) __builtin_assume(static_cast<bool>(expr))
254# elif defined(_MSC_VER) || defined(__ICC)
255# define DEAL_II_CXX23_ASSUME(expr) __assume(expr);
256# else
257/* no way with GCC to express this without evaluating 'expr' */
258# define DEAL_II_CXX23_ASSUME(expr) \
259 do \
260 { \
261 } \
262 while (false)
263# endif
264#endif
265
266#define DEAL_II_FALLTHROUGH [[fallthrough]]
267#define DEAL_II_CONSTEXPR constexpr
268
269
270
271/***********************************************************************
272 * Dealing with deprecations.
273 */
274
279#define DEAL_II_DEPRECATED [[deprecated]]
280#define DEAL_II_DEPRECATED_WITH_COMMENT(comment) [[deprecated(comment)]]
281
288/* #undef DEAL_II_EARLY_DEPRECATIONS */
289#ifndef DEAL_II_DEPRECATED_EARLY
290// guard to allow user to override DEAL_II_DEPRECATED_EARLY
291#ifdef DEAL_II_EARLY_DEPRECATIONS
292#define DEAL_II_DEPRECATED_EARLY [[deprecated]]
293#else
294#define DEAL_II_DEPRECATED_EARLY
295#endif
296#endif
297
298#ifndef DEAL_II_DEPRECATED_EARLY_WITH_COMMENT
299// guard to allow user to override DEAL_II_DEPRECATED_EARLY
300#ifdef DEAL_II_EARLY_DEPRECATIONS
301#define DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(comment) [[deprecated(comment)]]
302#else
303#define DEAL_II_DEPRECATED_EARLY_WITH_COMMENT(comment)
304#endif
305#endif
306
307
308/***********************************************************************
309 * System features:
310 *
311 * For documentation see cmake/checks/check_02_system_features.cmake
312 */
313
314#define DEAL_II_HAVE_SYS_RESOURCE_H
315#define DEAL_II_HAVE_UNISTD_H
316#define DEAL_II_HAVE_GETHOSTNAME
317#define DEAL_II_HAVE_GETPID
318/* #undef DEAL_II_HAVE_JN */
319
320/* #undef DEAL_II_MSVC */
321
322
323/***********************************************************************
324 * Feature configuration
325 *
326 * For documentation see cmake/configure/configure_*.cmake and
327 * cmake/modules/Find*.cmake
328 */
329
330/* cmake/modules/FindADOLC.cmake */
331/* #undef DEAL_II_ADOLC_WITH_ATRIG_ERF */
332/* #undef DEAL_II_ADOLC_WITH_ADVANCED_BRANCHING */
333/* #undef DEAL_II_ADOLC_WITH_TAPELESS_REFCOUNTING */
334
335/* cmake/modules/FindARBORX.cmake */
336/* #undef DEAL_II_ARBORX_WITH_MPI */
337
338/* cmake/modules/FindARPACK.cmake */
339/* #undef DEAL_II_ARPACK_WITH_PARPACK */
340
341/* cmake/modules/FindGMSH.cmake */
342/* #undef DEAL_II_GMSH_WITH_API */
343
344/* cmake/modules/FindPETSC.cmake */
345/* #undef DEAL_II_PETSC_WITH_COMPLEX */
346/* #undef DEAL_II_PETSC_WITH_HYPRE */
347/* #undef DEAL_II_PETSC_WITH_MUMPS */
348/* #undef DEAL_II_PETSC_WITH_KOKKOS */
349
350/* cmake/modules/FindSUNDIALS.cmake */
351/* #undef DEAL_II_SUNDIALS_WITH_IDAS */
352
353/* cmake/modules/FindSYMENGINE.cmake */
354/* #undef DEAL_II_SYMENGINE_WITH_LLVM */
355
356/* cmake/configure/configure_20_boost.cmake */
357/* #undef DEAL_II_BOOST_HAS_BROKEN_HEADER_DEPRECATIONS */
358
359/* cmake/configure/configure_50_cgal.cmake */
360/* #undef DEAL_II_CGAL_HAS_DEPRECATED_BOOST_INCLUDES */
361
362/* cmake/configure/configure_2_trilinos.cmake */
363/* #undef DEAL_II_TRILINOS_CXX_SUPPORTS_SACADO_COMPLEX_RAD */
364/* #undef DEAL_II_TRILINOS_WITH_AMESOS2 */
365/* #undef DEAL_II_TRILINOS_WITH_BELOS */
366/* #undef DEAL_II_TRILINOS_WITH_EPETRAEXT */
367/* #undef DEAL_II_TRILINOS_WITH_IFPACK2 */
368/* #undef DEAL_II_TRILINOS_WITH_MUELU */
369/* #undef DEAL_II_TRILINOS_WITH_NOX */
370/* #undef DEAL_II_TRILINOS_WITH_ROL */
371/* #undef DEAL_II_TRILINOS_WITH_SACADO */
372/* #undef DEAL_II_TRILINOS_WITH_SEACAS */
373/* #undef DEAL_II_TRILINOS_WITH_TPETRA */
374/* #undef DEAL_II_TRILINOS_WITH_ZOLTAN */
375
376#if defined(DEAL_II_BOOST_HAS_BROKEN_HEADER_DEPRECATIONS) || \
377 defined(DEAL_II_CGAL_HAS_DEPRECATED_BOOST_INCLUDES)
378# ifndef BOOST_ALLOW_DEPRECATED_HEADERS
379# define BOOST_ALLOW_DEPRECATED_HEADERS
380# endif
381#endif
382
383/***********************************************************************
384 * Various macros for version number query and comparison:
385 *
386 * These macros are defined to make testing for specific versions within
387 * the deal.II main code as simple as possible.
388 */
389
390/*
391 * deal.II:
392 */
393
400#define DEAL_II_VERSION_GTE(major,minor,subminor) \
401 ((DEAL_II_VERSION_MAJOR * 10000 + \
402 DEAL_II_VERSION_MINOR * 100 + \
403 DEAL_II_VERSION_SUBMINOR) \
404 >= \
405 (major)*10000 + (minor)*100 + (subminor))
406
407/*
408 * boost:
409 */
410#define DEAL_II_BOOST_VERSION_MAJOR 1
411#define DEAL_II_BOOST_VERSION_MINOR 84
412#define DEAL_II_BOOST_VERSION_SUBMINOR 0
413
414#define DEAL_II_BOOST_VERSION_GTE(major,minor,subminor) \
415 ((DEAL_II_BOOST_VERSION_MAJOR * 100000 + \
416 DEAL_II_BOOST_VERSION_MINOR * 100 + \
417 DEAL_II_BOOST_VERSION_SUBMINOR) \
418 >= \
419 (major)*100000 + (minor)*100 + (subminor))
420
421/*
422 * Gmsh:
423 */
424#ifdef DEAL_II_WITH_GMSH
425# define DEAL_II_GMSH_EXECUTABLE_PATH ""
426#endif
427
428
433#ifdef DEAL_II_WITH_KOKKOS
434# define DEAL_II_KOKKOS_VERSION_MAJOR 3
435# define DEAL_II_KOKKOS_VERSION_MINOR 7
436# define DEAL_II_KOKKOS_VERSION_SUBMINOR 0
437
438# define DEAL_II_KOKKOS_VERSION_GTE(major,minor,subminor) \
439 ((DEAL_II_KOKKOS_VERSION_MAJOR * 10000 + \
440 DEAL_II_KOKKOS_VERSION_MINOR * 100 + \
441 DEAL_II_KOKKOS_VERSION_SUBMINOR) \
442 >= \
443 (major)*10000 + (minor)*100 + (subminor))
444#endif
445
446
451#ifdef DEAL_II_WITH_OPENCASCADE
452# define DEAL_II_OPENCASCADE_VERSION_MAJOR
453# define DEAL_II_OPENCASCADE_VERSION_MINOR
454# define DEAL_II_OPENCASCADE_VERSION_SUBMINOR
455
456# define DEAL_II_OPENCASCADE_VERSION_GTE(major,minor,subminor) \
457 ((DEAL_II_OPENCASCADE_VERSION_MAJOR * 10000 + \
458 DEAL_II_OPENCASCADE_VERSION_MINOR * 100 + \
459 DEAL_II_OPENCASCADE_VERSION_SUBMINOR) \
460 >= \
461 (major)*10000 + (minor)*100 + (subminor))
462#endif
463
464/*
465 * p4est:
466 */
467
468#ifdef DEAL_II_WITH_P4EST
469# define DEAL_II_P4EST_VERSION_MAJOR
470# define DEAL_II_P4EST_VERSION_MINOR
471# define DEAL_II_P4EST_VERSION_SUBMINOR
472# define DEAL_II_P4EST_VERSION_PATCH
473
474# define DEAL_II_P4EST_VERSION_GTE(major,minor,subminor,patch) \
475 ((DEAL_II_P4EST_VERSION_MAJOR * 1000000 + \
476 DEAL_II_P4EST_VERSION_MINOR * 10000 + \
477 DEAL_II_P4EST_VERSION_SUBMINOR * 100 + \
478 DEAL_II_P4EST_VERSION_PATCH) \
479 >= \
480 (major)*1000000 + (minor)*10000 + (subminor)*100 + (patch))
481#endif
482
483/*
484 * SUNDIALS:
485 */
486
487#ifdef DEAL_II_WITH_SUNDIALS
488 # define DEAL_II_SUNDIALS_VERSION_MAJOR
489 # define DEAL_II_SUNDIALS_VERSION_MINOR
490 # define DEAL_II_SUNDIALS_VERSION_PATCH
491
492 #define DEAL_II_SUNDIALS_VERSION_GTE(major,minor,patch) \
493 ((DEAL_II_SUNDIALS_VERSION_MAJOR * 10000 + \
494 DEAL_II_SUNDIALS_VERSION_MINOR * 100 + \
495 DEAL_II_SUNDIALS_VERSION_PATCH) \
496 >= \
497 (major)*10000 + (minor)*100 + (patch))
498
499 #define DEAL_II_SUNDIALS_VERSION_LT(major,minor,patch) \
500 ((DEAL_II_SUNDIALS_VERSION_MAJOR * 10000 + \
501 DEAL_II_SUNDIALS_VERSION_MINOR * 100 + \
502 DEAL_II_SUNDIALS_VERSION_PATCH) \
503 < \
504 (major)*10000 + (minor)*100 + (patch))
505#endif
506
507/*
508 * PETSc:
509 *
510 * Note: The following macros are defined in petscversion.h
511 * so we don't repeat them here.
512 */
513
514#ifdef DEAL_II_WITH_PETSC
515# define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
516 PETSC_VERSION_LT(major,minor,subminor)
517# define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
518 PETSC_VERSION_GE(major,minor,subminor)
519#endif
520
521/*
522 * SLEPC:
523 */
524
525#ifdef DEAL_II_WITH_SLEPC
526# define DEAL_II_SLEPC_VERSION_LT(major,minor,subminor) \
527 SLEPC_VERSION_LT(major,minor,subminor)
528# define DEAL_II_SLEPC_VERSION_GTE(major,minor,subminor) \
529 SLEPC_VERSION_GE(major,minor,subminor)
530#endif
531
532/*
533 * Trilinos:
534 */
535
536#ifdef DEAL_II_WITH_TRILINOS
537# define DEAL_II_TRILINOS_VERSION_MAJOR
538# define DEAL_II_TRILINOS_VERSION_MINOR
539# define DEAL_II_TRILINOS_VERSION_SUBMINOR
540
541# define DEAL_II_TRILINOS_VERSION_GTE(major,minor,subminor) \
542 ((DEAL_II_TRILINOS_VERSION_MAJOR * 10000 + \
543 DEAL_II_TRILINOS_VERSION_MINOR * 100 + \
544 DEAL_II_TRILINOS_VERSION_SUBMINOR) \
545 >= \
546 (major)*10000 + (minor)*100 + (subminor))
547#endif
548
549/*
550 * CGAL:
551 */
552
553#ifdef DEAL_II_WITH_CGAL
554# define DEAL_II_CGAL_VERSION_MAJOR
555# define DEAL_II_CGAL_VERSION_MINOR
556# define DEAL_II_CGAL_VERSION_SUBMINOR
557
558# define DEAL_II_CGAL_VERSION_GTE(major, minor, subminor) \
559 ((DEAL_II_CGAL_VERSION_MAJOR * 10000 + DEAL_II_CGAL_VERSION_MINOR * 100 + \
560 DEAL_II_CGAL_VERSION_SUBMINOR) >= \
561 (major)*10000 + (minor)*100 + (subminor))
562#endif
563
564/*
565 * MPI
566 */
567
568#ifdef DEAL_II_WITH_MPI
569# define DEAL_II_MPI_VERSION_MAJOR
570# define DEAL_II_MPI_VERSION_MINOR
571
572# define DEAL_II_MPI_VERSION_GTE(major,minor) \
573 ((DEAL_II_MPI_VERSION_MAJOR * 100 + \
574 DEAL_II_MPI_VERSION_MINOR) \
575 >= \
576 (major)*100 + (minor))
577#else
578# define DEAL_II_MPI_VERSION_GTE(major,minor) false
579#endif
580
581/* #undef DEAL_II_MPI_WITH_DEVICE_SUPPORT */
582
583/***********************************************************************
584 * Two macros to guard external header includes.
585 *
586 * Selectively disable diagnostics set by "-Wextra" (and similar flags) for
587 * GCC and compiler accepting GCC dialects (such as clang).
588 * "diagnostic push" is supported since gcc-4.6 and clang-3.3.
589 */
590
591#ifdef DEAL_II_COMPILER_HAS_DIAGNOSTIC_PRAGMA
592
593/* keep pragmas with an exclamation mark in order.. */
594# define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS \
595_Pragma("GCC diagnostic push") \
596_Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") \
597_Pragma("GCC diagnostic ignored \"-Wpragmas\"") \
598_Pragma("GCC diagnostic ignored \"-Wunknown-warning-option\"") \
599_Pragma("GCC diagnostic ignored \"-Wunknown-warning\"") \
600_Pragma("GCC diagnostic ignored \"-Wextra\"") \
601_Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"") \
602_Pragma("GCC diagnostic ignored \"-Wcast-function-type\"") \
603_Pragma("GCC diagnostic ignored \"-Wdeprecated-copy\"") \
604_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
605_Pragma("GCC diagnostic ignored \"-Wdeprecated-volatile\"") \
606_Pragma("GCC diagnostic ignored \"-Wexpansion-to-defined\"") \
607_Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") \
608_Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \
609_Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"") \
610_Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"") \
611_Pragma("GCC diagnostic ignored \"-Winfinite-recursion\"") \
612_Pragma("GCC diagnostic ignored \"-Wint-in-bool-context\"") \
613_Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \
614_Pragma("GCC diagnostic ignored \"-Wmisleading-indentation\"") \
615_Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \
616_Pragma("GCC diagnostic ignored \"-Wnested-anon-types\"") \
617_Pragma("GCC diagnostic ignored \"-Wnon-template-friend\"") \
618_Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
619_Pragma("GCC diagnostic ignored \"-Wnonnull\"") \
620_Pragma("GCC diagnostic ignored \"-Woverflow\"") \
621_Pragma("GCC diagnostic ignored \"-Woverloaded-virtual\"") \
622_Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
623_Pragma("GCC diagnostic ignored \"-Wsuggest-override\"") \
624_Pragma("GCC diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"") \
625_Pragma("GCC diagnostic ignored \"-Wtautological-overlap-compare\"") \
626_Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \
627_Pragma("GCC diagnostic ignored \"-Wundef\"") \
628_Pragma("GCC diagnostic ignored \"-Wunused-but-set-parameter\"") \
629_Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \
630_Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
631_Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \
632_Pragma("GCC diagnostic ignored \"-Wunused-private-field\"") \
633_Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \
634_Pragma("GCC diagnostic ignored \"-Wuse-after-free\"") \
635_Pragma("GCC diagnostic warning \"-Wpragmas\"")
636
637# define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS \
638_Pragma("GCC diagnostic pop")
639
640#else
641
642# define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
643# define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
644
645#endif
646
647/***********************************************************************
648 * Define macros for picking the correct C linkage name for a Fortran function.
649 * See cmake/configure/configure_fortran_mangling.cmake for more information.
650 */
651
652#define DEAL_II_FORTRAN_MANGLE(name, NAME) name ## _
653
654#define DEAL_II_FORTRAN_MANGLE_UNDERSCORE(name, NAME) name ## _
655
656/***********************************************************************
657 * Define a portable preprocessor macro that generates custom warnings
658 * reporting the line and the file where the warning appears. Taken from:
659 * http://goodliffe.blogspot.com/2009/07/c-how-to-say-warning-to-visual-studio-c.html
660 */
661
662#ifdef _MSC_VER
663 #define DEAL_II_STRINGIZE_HELPER(x) #x
664 #define DEAL_II_STRINGIZE(x) DEAL_II_STRINGIZE_HELPER(x)
665 #define DEAL_II_DO_PRAGMA(x) __pragma(x)
666 #define DEAL_II_WARNING(desc) DEAL_II_DO_PRAGMA(message(__FILE__ "(" DEAL_II_STRINGIZE(__LINE__) ") : warning: " #desc))
667#else
668 #define DEAL_II_DO_PRAGMA(x) _Pragma(#x)
669 #define DEAL_II_WARNING(desc) DEAL_II_DO_PRAGMA(message(#desc))
670#endif
671
672
673/***********************************************************************
674 * Final inclusions:
675 */
676
677/*
678 * Include the boost version header to do a quick version check in case, by
679 * accident, we have configured with one version of boost but are compiling
680 * either the library or an external application with a different version of
681 * boost.
682 */
683#include <boost/version.hpp>
684static_assert(
685 BOOST_VERSION == 100000 * DEAL_II_BOOST_VERSION_MAJOR +
688 "The version number of boost that you are compiling with does not match the "
689 "version number of boost found during deal.II's configuration step. This "
690 "leads to difficult to understand bugs and is not supported. Please check "
691 "that you have set up your application with the same version of boost as "
692 "deal.II.");
693
694#endif
#define DEAL_II_BOOST_VERSION_MINOR
Definition config.h:411
constexpr LibraryBuildMode library_build_mode
Definition config.h:63
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:35
constexpr bool running_in_debug_mode()
Definition config.h:73
#define DEAL_II_BOOST_VERSION_MAJOR
Definition config.h:410
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:36
LibraryBuildMode
Definition config.h:51
#define DEAL_II_BOOST_VERSION_SUBMINOR
Definition config.h:412