diff options
Diffstat (limited to 'src/lib/netlist/plib/ppmf.h')
-rw-r--r-- | src/lib/netlist/plib/ppmf.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/lib/netlist/plib/ppmf.h b/src/lib/netlist/plib/ppmf.h index 8c8c6582579..4ff49911d63 100644 --- a/src/lib/netlist/plib/ppmf.h +++ b/src/lib/netlist/plib/ppmf.h @@ -41,6 +41,54 @@ * */ +//============================================================ +// Macro magic +//============================================================ + +//#define PPMF_TYPE 0 + +#define PPMF_TYPE_PMF 0 +#define PPMF_TYPE_GNUC_PMF_CONV 1 +#define PPMF_TYPE_INTERNAL 2 + +#if defined(__GNUC__) + /* does not work in versions over 4.7.x of 32bit MINGW */ + #if defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) + #define PHAS_PMF_INTERNAL 0 + #elif defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) + #define PHAS_PMF_INTERNAL 1 + #define MEMBER_ABI _thiscall + #elif defined(__clang__) && defined(__i386__) && defined(_WIN32) + #define PHAS_PMF_INTERNAL 0 + #elif defined(__arm__) || defined(__ARMEL__) || defined(__aarch64__) || defined(__MIPSEL__) || defined(__mips_isa_rev) || defined(__mips64) || defined(__EMSCRIPTEN__) + #define PHAS_PMF_INTERNAL 2 + #else + #define PHAS_PMF_INTERNAL 1 + #endif +#elif defined(_MSC_VER) && defined (_M_X64) + #define PHAS_PMF_INTERNAL 3 +#else + #define PHAS_PMF_INTERNAL 0 +#endif + +#ifndef MEMBER_ABI + #define MEMBER_ABI +#endif + +#ifndef PPMF_TYPE + #if (PHAS_PMF_INTERNAL > 0) + #define PPMF_TYPE PPMF_TYPE_INTERNAL + #else + #define PPMF_TYPE PPMF_TYPE_PMF + #endif +#else + #undef PHAS_PMF_INTERNAL + #define PHAS_PMF_INTERNAL 0 + #undef MEMBER_ABI + #define MEMBER_ABI +#endif + + #if (PPMF_TYPE == PPMF_TYPE_GNUC_PMF_CONV) #pragma GCC diagnostic ignored "-Wpmf-conversions" #endif |