|
446 | 446 | AM_ENABLE_WARNING(AM_W_DATE_TIME) \ |
447 | 447 | AM_ENABLE_WARNING(AM_W_NULL_DEREFERENCE) |
448 | 448 |
|
| 449 | +/** Internal stringification macro helper. */ |
| 450 | +#define AM_STRINGIFY_IMPL2(s) #s |
| 451 | +/** Internal stringification macro. */ |
| 452 | +#define AM_STRINGIFY_IMPL(s) AM_STRINGIFY_IMPL2(s) |
| 453 | +/** Join x and y together. */ |
| 454 | +#define AM_JOINSTR_(x, y) AM_STRINGIFY_IMPL(x##y) |
| 455 | + |
449 | 456 | #if (AM_COMPILER_ID == AM_COMPILER_CLANG) |
| 457 | + |
450 | 458 | #define AM_DISABLE_WARNING(warning) \ |
451 | 459 | AM_DIAG_PRAGMA(clang, push) \ |
452 | 460 | AM_DIAG_PRAGMA(clang, ignored AM_JOINSTR_(-W, warning)) |
453 | 461 | #define AM_ENABLE_WARNING(warning) AM_DIAG_PRAGMA(clang, pop) |
| 462 | + |
454 | 463 | #elif defined(_MSC_VER) |
| 464 | + |
455 | 465 | #define AM_DISABLE_WARNING(warning) \ |
456 | 466 | AM_DIAG_PRAGMA(msvc, push) \ |
457 | 467 | AM_DIAG_DO_PRAGMA(warning(disable :##warning)) |
458 | 468 | #define AM_ENABLE_WARNING(warning) AM_DIAG_PRAGMA(msvc, pop) |
| 469 | + |
459 | 470 | #elif (AM_COMPILER_ID == AM_COMPILER_GCC) |
| 471 | + |
460 | 472 | #if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406 |
| 473 | + |
461 | 474 | #define AM_DISABLE_WARNING(warning) \ |
462 | 475 | AM_DIAG_PRAGMA(GCC, push) \ |
463 | 476 | AM_DIAG_PRAGMA(GCC, ignored AM_JOINSTR_(-W, warning)) |
464 | 477 | #define AM_ENABLE_WARNING(warning) AM_DIAG_PRAGMA(GCC, pop) |
| 478 | + |
465 | 479 | #else |
| 480 | + |
466 | 481 | #define AM_DISABLE_WARNING(warning) \ |
467 | 482 | AM_DIAG_PRAGMA(GCC, ignored AM_JOINSTR_(-W, warning)) |
468 | 483 | #define AM_ENABLE_WARNING(warning) \ |
469 | 484 | AM_DIAG_PRAGMA(GCC, warning AM_JOINSTR_(-W, warning)) |
| 485 | + |
470 | 486 | #endif /* __GNUC__ */ |
| 487 | + |
471 | 488 | #endif /* AM_COMPILER_ID */ |
472 | 489 |
|
473 | 490 | /* taken from https://github.com/sustrik/libdill */ |
|
0 commit comments