Add pragma.h header for various long pragma definitions
e.g. NOVA_BEGIN/END_ALLOW_ANONYMOUS_TYPES
This commit is contained in:
44
engine/include/nova/pragma.h
Normal file
44
engine/include/nova/pragma.h
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
Reference in New Issue
Block a user