]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/compute/include/boost/compute/detail/diagnostic.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / compute / include / boost / compute / detail / diagnostic.hpp
CommitLineData
7c673cae
FG
1//---------------------------------------------------------------------------//
2// Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com>
3//
4// Distributed under the Boost Software License, Version 1.0
5// See accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt
7//
8// See http://boostorg.github.com/compute for more information.
9//---------------------------------------------------------------------------//
10
11#ifndef BOOST_COMPUTE_DETAIL_DIAGNOSTIC_HPP
12#define BOOST_COMPUTE_DETAIL_DIAGNOSTIC_HPP
13
14// Macros for suppressing warnings for GCC version 4.6 or later. Usage:
15//
16// BOOST_COMPUTE_BOOST_COMPUTE_GCC_DIAG_OFF(sign-compare);
17// if(a < b){
18// BOOST_COMPUTE_BOOST_COMPUTE_GCC_DIAG_ON(sign-compare);
19//
20// Source: https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines
21#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402
22#define BOOST_COMPUTE_GCC_DIAG_STR(s) #s
23#define BOOST_COMPUTE_GCC_DIAG_JOINSTR(x,y) BOOST_COMPUTE_GCC_DIAG_STR(x ## y)
24# define BOOST_COMPUTE_GCC_DIAG_DO_PRAGMA(x) _Pragma (#x)
25# define BOOST_COMPUTE_GCC_DIAG_PRAGMA(x) BOOST_COMPUTE_GCC_DIAG_DO_PRAGMA(GCC diagnostic x)
26# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
27# define BOOST_COMPUTE_GCC_DIAG_OFF(x) BOOST_COMPUTE_GCC_DIAG_PRAGMA(push) \
28 BOOST_COMPUTE_GCC_DIAG_PRAGMA(ignored BOOST_COMPUTE_GCC_DIAG_JOINSTR(-W,x))
29# define BOOST_COMPUTE_GCC_DIAG_ON(x) BOOST_COMPUTE_GCC_DIAG_PRAGMA(pop)
30# else
31# define BOOST_COMPUTE_GCC_DIAG_OFF(x) \
32 BOOST_COMPUTE_GCC_DIAG_PRAGMA(ignored BOOST_COMPUTE_GCC_DIAG_JOINSTR(-W,x))
33# define BOOST_COMPUTE_GCC_DIAG_ON(x) \
34 BOOST_COMPUTE_GCC_DIAG_PRAGMA(warning BOOST_COMPUTE_GCC_DIAG_JOINSTR(-W,x))
35# endif
36#else // Ensure these macros do nothing for other compilers.
37# define BOOST_COMPUTE_GCC_DIAG_OFF(x)
38# define BOOST_COMPUTE_GCC_DIAG_ON(x)
39#endif
40
41// Macros for suppressing warnings for Clang.
42//
43// BOOST_COMPUTE_BOOST_COMPUTE_CLANG_DIAG_OFF(sign-compare);
44// if(a < b){
45// BOOST_COMPUTE_BOOST_COMPUTE_CLANG_DIAG_ON(sign-compare);
46//
47// Source: https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines
48#ifdef __clang__
49# define BOOST_COMPUTE_CLANG_DIAG_STR(s) # s
50// stringize s to "no-sign-compare"
51# define BOOST_COMPUTE_CLANG_DIAG_JOINSTR(x,y) BOOST_COMPUTE_CLANG_DIAG_STR(x ## y)
52// join -W with no-unused-variable to "-Wno-sign-compare"
53# define BOOST_COMPUTE_CLANG_DIAG_DO_PRAGMA(x) _Pragma (#x)
54// _Pragma is unary operator #pragma ("")
55# define BOOST_COMPUTE_CLANG_DIAG_PRAGMA(x) \
56 BOOST_COMPUTE_CLANG_DIAG_DO_PRAGMA(clang diagnostic x)
57# define BOOST_COMPUTE_CLANG_DIAG_OFF(x) BOOST_COMPUTE_CLANG_DIAG_PRAGMA(push) \
58 BOOST_COMPUTE_CLANG_DIAG_PRAGMA(ignored BOOST_COMPUTE_CLANG_DIAG_JOINSTR(-W,x))
59// For example: #pragma clang diagnostic ignored "-Wno-sign-compare"
60# define BOOST_COMPUTE_CLANG_DIAG_ON(x) BOOST_COMPUTE_CLANG_DIAG_PRAGMA(pop)
61// For example: #pragma clang diagnostic warning "-Wno-sign-compare"
62#else // Ensure these macros do nothing for other compilers.
63# define BOOST_COMPUTE_CLANG_DIAG_OFF(x)
64# define BOOST_COMPUTE_CLANG_DIAG_ON(x)
65# define BOOST_COMPUTE_CLANG_DIAG_PRAGMA(x)
66#endif
67
68// Macros for suppressing warnings for MSVC. Usage:
69//
70// BOOST_COMPUTE_BOOST_COMPUTE_MSVC_DIAG_OFF(4018); //sign-compare
71// if(a < b){
72// BOOST_COMPUTE_BOOST_COMPUTE_MSVC_DIAG_ON(4018);
73//
74#if defined(_MSC_VER)
75# define BOOST_COMPUTE_MSVC_DIAG_DO_PRAGMA(x) __pragma(x)
76# define BOOST_COMPUTE_MSVC_DIAG_PRAGMA(x) \
77 BOOST_COMPUTE_MSVC_DIAG_DO_PRAGMA(warning(x))
78# define BOOST_COMPUTE_MSVC_DIAG_OFF(x) BOOST_COMPUTE_MSVC_DIAG_PRAGMA(push) \
79 BOOST_COMPUTE_MSVC_DIAG_PRAGMA(disable: x)
80# define BOOST_COMPUTE_MSVC_DIAG_ON(x) BOOST_COMPUTE_MSVC_DIAG_PRAGMA(pop)
81#else // Ensure these macros do nothing for other compilers.
82# define BOOST_COMPUTE_MSVC_DIAG_OFF(x)
83# define BOOST_COMPUTE_MSVC_DIAG_ON(x)
84#endif
85
86// Macros for suppressing warnings for GCC, Clang and MSVC. Usage:
87//
88// BOOST_COMPUTE_DIAG_OFF(sign-compare, sign-compare, 4018);
89// if(a < b){
90// BOOST_COMPUTE_DIAG_ON(sign-compare, sign-compare, 4018);
91//
92#if defined(_MSC_VER) // MSVC
93# define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc) BOOST_COMPUTE_MSVC_DIAG_OFF(msvc)
94# define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc) BOOST_COMPUTE_MSVC_DIAG_ON(msvc)
95#elif defined(__clang__) // Clang
96# define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc) BOOST_COMPUTE_CLANG_DIAG_OFF(clang)
97# define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc) BOOST_COMPUTE_CLANG_DIAG_ON(clang)
98#elif defined(__GNUC__) // GCC/G++
99# define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc) BOOST_COMPUTE_GCC_DIAG_OFF(gcc)
100# define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc) BOOST_COMPUTE_GCC_DIAG_ON(gcc)
101#else // Ensure these macros do nothing for other compilers.
102# define BOOST_COMPUTE_DIAG_OFF(gcc, clang, msvc)
103# define BOOST_COMPUTE_DIAG_ON(gcc, clang, msvc)
104#endif
105
106#define BOOST_COMPUTE_DISABLE_DEPRECATED_DECLARATIONS() \
107 BOOST_COMPUTE_DIAG_OFF(deprecated-declarations, deprecated-declarations, 4996)
108#define BOOST_COMPUTE_ENABLE_DEPRECATED_DECLARATIONS() \
109 BOOST_COMPUTE_DIAG_ON(deprecated-declarations, deprecated-declarations, 4996);
110
111
112#endif /* BOOST_COMPUTE_DETAIL_DIAGNOSTIC_HPP */