From 1f43f629e2a90022d7ca3968b6ede3ad26ab99b6 Mon Sep 17 00:00:00 2001 From: Jayden Grubb Date: Thu, 17 Apr 2025 02:00:33 +1000 Subject: [PATCH] Add pragma.h header for various long pragma definitions e.g. NOVA_BEGIN/END_ALLOW_ANONYMOUS_TYPES --- engine/include/nova/pragma.h | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 engine/include/nova/pragma.h diff --git a/engine/include/nova/pragma.h b/engine/include/nova/pragma.h new file mode 100644 index 0000000..3ea319b --- /dev/null +++ b/engine/include/nova/pragma.h @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2025, Jayden Grubb + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#pragma once + +// clang-format off + +#ifdef NOVA_COMPILER_GCC + #define NOVA_COMPILER_DIAGNOSTIC_POP \ + _Pragma("GCC diagnostic pop") +#elif NOVA_COMPILER_CLANG + #define NOVA_COMPILER_DIAGNOSTIC_POP \ + _Pragma("clang diagnostic pop") +#elif NOVA_COMPILER_MSVC + #define NOVA_COMPILER_DIAGNOSTIC_POP \ + __pragma(warning(pop)) +#else + #define NOVA_COMPILER_DIAGNOSTIC_POP +#endif + +#ifdef NOVA_COMPILER_GCC + #define NOVA_BEGIN_ALLOW_ANONYMOUS_TYPES \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wpedantic\"") +#elif NOVA_COMPILER_CLANG + #define NOVA_BEGIN_ALLOW_ANONYMOUS_TYPES \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wgnu-anonymous-struct\"") \ + _Pragma("clang diagnostic ignored \"-Wnested-anon-types\"") +#elif NOVA_COMPILER_MSVC + #define NOVA_BEGIN_ALLOW_ANONYMOUS_TYPES \ + __pragma(warning(push)) \ + __pragma(warning(disable : 4201)) +#else + #define NOVA_BEGIN_ALLOW_ANONYMOUS_TYPES +#endif + +#define NOVA_END_ALLOW_ANONYMOUS_TYPES \ + NOVA_COMPILER_DIAGNOSTIC_POP + +// clang-format on