// file : odb/gcc-fwd.hxx // copyright : Copyright (c) 2009-2018 Code Synthesis Tools CC // license : GNU GPL v3; see accompanying LICENSE file #ifndef ODB_GCC_FWD_HXX #define ODB_GCC_FWD_HXX #if __GNUC__ >= 5 # if !__has_include() # error GCC plugin headers are not installed # endif #endif #include #if BUILDING_GCC_MAJOR >= 6 // If we include here, it pulls in all kinds of GCC trouble that // "poisons" standard C/C++ declarations; see safe-ctype.h. So instead we // are going to "exclude" safe-ctype.h. To compensate, however, we will // include it first thing in gcc.hxx. // # include # define SAFE_CTYPE_H # include # undef SAFE_CTYPE_H # include typedef unsigned int source_location; // typedef source_location location_t; // #else // GCC < 6 #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 8 # include // CHAR_BIT # include #endif #if BUILDING_GCC_MAJOR >= 5 # include // Needed by coretypes.h #endif extern "C" { // The hwint.h header uses gcc_checking_assert macro from system.h. But // if we include system.h here, it pulls in all kinds of GCC trouble that // "poisons" standard C/C++ declarations (see safe-ctype.h for an example). // Instead we are just going to provide the no-op definition of this macro. // #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 8 # define gcc_checking_assert(expr) ((void)(0 & (expr))) # include # undef gcc_checking_assert #endif #include typedef unsigned int source_location; // typedef source_location location_t; // } // extern "C" #endif #endif // ODB_GCC_FWD_HXX