forked from osmocom/wireshark
775bbbcded
A while back Graham pointed out the SPDX project (spdx.org), which is working on standardizing license specifications: https://www.wireshark.org/lists/wireshark-dev/201509/msg00119.html Appendix V of the specification describes a short identifier (SPDX-License-Identifier) that you can use in place of boilerplate in your source files: https://spdx.org/spdx-specification-21-web-version#h.twlc0ztnng3b Start the conversion process with our top-level C and C++ files. Change-Id: Iba1d835776714deb6285e2181e8ca17f95221878 Reviewed-on: https://code.wireshark.org/review/24302 Reviewed-by: Gerald Combs <gerald@wireshark.org> Petri-Dish: Gerald Combs <gerald@wireshark.org> Reviewed-by: Balint Reczey <balint@balintreczey.hu> Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann <mmann78@netscape.net>
107 lines
3 KiB
C
107 lines
3 KiB
C
/* ws_diag_control.h
|
|
* Turn compiler diagnostic messages on and off.
|
|
*
|
|
* From FreeRADIUS build.h.
|
|
*
|
|
* @copyright 2013 The FreeRADIUS server project
|
|
*
|
|
* That project is covered by the GPLv2, so:
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#ifndef __WS_DIAG_CONTROL_H__
|
|
#define __WS_DIAG_CONTROL_H__
|
|
|
|
#include "ws_compiler_tests.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define XSTRINGIFY(x) #x
|
|
|
|
/*
|
|
* Macros for controlling warnings in GCC >= 4.2 and clang >= 2.8
|
|
*/
|
|
#define DIAG_JOINSTR(x,y) XSTRINGIFY(x ## y)
|
|
#define DIAG_DO_PRAGMA(x) _Pragma (#x)
|
|
|
|
#if defined(__clang__)
|
|
/*
|
|
* Clang, so we'd use _Pragma("clang diagnostic XXX"), if it's
|
|
* supported.
|
|
*/
|
|
#if WS_IS_AT_LEAST_CLANG_VERSION(2,8)
|
|
/*
|
|
* This is Clang 2.8 or later: we can use "clang diagnostic ignored -Wxxx"
|
|
* and "clang diagnostic push/pop".
|
|
*/
|
|
#define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(clang diagnostic x)
|
|
#define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x))
|
|
#define DIAG_ON(x) DIAG_PRAGMA(pop)
|
|
#endif
|
|
#elif defined(__GNUC__)
|
|
/*
|
|
* GCC, or a compiler (other than Clang) that claims to be GCC.
|
|
* We assume that the compiler accepts _Pragma("GCC diagnostic xxx")
|
|
* even if it's only claiming to be GCC.
|
|
*/
|
|
#if WS_IS_AT_LEAST_GNUC_VERSION(4,8)
|
|
/*
|
|
* This is GCC 4.8 or later, or a compiler claiming to be that.
|
|
* We can use "GCC diagnostic ignored -Wxxx" (introduced in 4.2)
|
|
* and "GCC diagnostic push/pop" (introduced in 4.6), *and* gcc
|
|
* supports "-Wpedantic" (introduced in 4.8), allowing us to
|
|
* turn off pedantic warnings with DIAG_OFF().
|
|
*/
|
|
#define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(GCC diagnostic x)
|
|
#define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x))
|
|
#define DIAG_ON(x) DIAG_PRAGMA(pop)
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef DIAG_OFF
|
|
/*
|
|
* This is none of the above; we don't have any way to turn diagnostics
|
|
* on or off.
|
|
*
|
|
* XXX - you can do that in MSVC, but it's done differently; we'd
|
|
* have to have macros for *particular* diagnostics, using the
|
|
* warning flag for GCC and Clang and the error number for MSVC.
|
|
*/
|
|
#define DIAG_OFF(x)
|
|
#define DIAG_ON(x)
|
|
#endif
|
|
|
|
/* Use for clang specific pragmas, so we can keep -Wpragmas enabled */
|
|
#ifdef __clang__
|
|
# define DIAG_OFF_CLANG(x) DIAG_OFF(x)
|
|
# define DIAG_ON_CLANG(x) DIAG_ON(x)
|
|
#else
|
|
# define DIAG_OFF_CLANG(x)
|
|
# define DIAG_ON_CLANG(x)
|
|
#endif
|
|
|
|
/*
|
|
* For dealing with APIs which are only deprecated in macOS (like the
|
|
* OpenSSL and MIT/Heimdal Kerberos APIs).
|
|
*
|
|
* Dear Apple: this is a cross-platform program, and we're not
|
|
* going to use your Shiny New Frameworks on macOS unless there's
|
|
* a sufficiently clear benefit to make it worth our while to have
|
|
* both macOS and non-macOS versions of the code.
|
|
*/
|
|
#ifdef __APPLE__
|
|
# define USES_APPLE_DEPRECATED_API DIAG_OFF(deprecated-declarations)
|
|
# define USES_APPLE_RST DIAG_ON(deprecated-declarations)
|
|
#else
|
|
# define USES_APPLE_DEPRECATED_API
|
|
# define USES_APPLE_RST
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __WS_DIAG_CONTROL_H__ */
|