// Copyright 2022 The Dawn & Tint Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include "src/tint/utils/macros/concat.h"

#ifndef SRC_TINT_UTILS_MACROS_COMPILER_H_
#define SRC_TINT_UTILS_MACROS_COMPILER_H_

#define TINT_REQUIRE_SEMICOLON static_assert(true)

#if defined(_MSC_VER) && !defined(__clang__)
////////////////////////////////////////////////////////////////////////////////
// MSVC
////////////////////////////////////////////////////////////////////////////////
#define TINT_DISABLE_WARNING_CONSTANT_OVERFLOW __pragma(warning(disable : 4756))
#define TINT_DISABLE_WARNING_MAYBE_UNINITIALIZED /* currently no-op */
#define TINT_DISABLE_WARNING_NEWLINE_EOF         /* currently no-op */
#define TINT_DISABLE_WARNING_OLD_STYLE_CAST      /* currently no-op */
#define TINT_DISABLE_WARNING_SIGN_CONVERSION     /* currently no-op */
#define TINT_DISABLE_WARNING_UNREACHABLE_CODE __pragma(warning(disable : 4702))
#define TINT_DISABLE_WARNING_WEAK_VTABLES /* currently no-op */
#define TINT_DISABLE_WARNING_FLOAT_EQUAL  /* currently no-op */
#define TINT_DISABLE_WARNING_DEPRECATED __pragma(warning(disable : 4996))
#define TINT_DISABLE_WARNING_RESERVED_IDENTIFIER       /* currently no-op */
#define TINT_DISABLE_WARNING_RESERVED_MACRO_IDENTIFIER /* currently no-op */
#define TINT_DISABLE_WARNING_UNUSED_VALUE              /* currently no-op */
#define TINT_DISABLE_WARNING_UNUSED_PARAMETER __pragma(warning(disable : 4100))
#define TINT_DISABLE_WARNING_SHADOW_FIELD_IN_CONSTRUCTOR /* currently no-op */
#define TINT_DISABLE_WARNING_EXTRA_SEMICOLON             /* currently no-op */
#define TINT_DISABLE_WARNING_ZERO_AS_NULLPTR             /* currently no-op */
#define TINT_DISABLE_WARNING_MISSING_DESTRUCTOR_OVERRIDE /* currently no-op */

#define TINT_BEGIN_DISABLE_ALL_WARNINGS() __pragma(warning(push, 0)) TINT_REQUIRE_SEMICOLON

#define TINT_END_DISABLE_ALL_WARNINGS() __pragma(warning(pop)) TINT_REQUIRE_SEMICOLON

// clang-format off
#define TINT_BEGIN_DISABLE_WARNING(name)     \
    __pragma(warning(push))                  \
    TINT_CONCAT(TINT_DISABLE_WARNING_, name) \
    TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_WARNING(name)       \
    __pragma(warning(pop))                   \
    TINT_REQUIRE_SEMICOLON
// clang-format on

#define TINT_BEGIN_DISABLE_PROTOBUF_WARNINGS() \
    __pragma(warning(push)) TINT_DISABLE_WARNING_UNUSED_PARAMETER TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_PROTOBUF_WARNINGS() __pragma(warning(pop)) TINT_REQUIRE_SEMICOLON

#define TINT_UNLIKELY(x) x /* currently no-op */
#define TINT_LIKELY(x) x   /* currently no-op */

#if defined(__SANITIZE_ADDRESS__)
#define TINT_ASAN_ENABLED
#endif

#elif defined(__clang__)
////////////////////////////////////////////////////////////////////////////////
// Clang
////////////////////////////////////////////////////////////////////////////////
#define TINT_DISABLE_WARNING_CONSTANT_OVERFLOW /* currently no-op */
#define TINT_DISABLE_WARNING_MAYBE_UNINITIALIZED \
    _Pragma("clang diagnostic ignored \"-Wconditional-uninitialized\"")
#define TINT_DISABLE_WARNING_NEWLINE_EOF _Pragma("clang diagnostic ignored \"-Wnewline-eof\"")
#define TINT_DISABLE_WARNING_OLD_STYLE_CAST _Pragma("clang diagnostic ignored \"-Wold-style-cast\"")
#define TINT_DISABLE_WARNING_SIGN_CONVERSION \
    _Pragma("clang diagnostic ignored \"-Wsign-conversion\"")
#define TINT_DISABLE_WARNING_UNREACHABLE_CODE /* currently no-op */
#define TINT_DISABLE_WARNING_WEAK_VTABLES _Pragma("clang diagnostic ignored \"-Wweak-vtables\"")
#define TINT_DISABLE_WARNING_FLOAT_EQUAL _Pragma("clang diagnostic ignored \"-Wfloat-equal\"")
#define TINT_DISABLE_WARNING_DEPRECATED /* currently no-op */
#define TINT_DISABLE_WARNING_RESERVED_IDENTIFIER \
    _Pragma("clang diagnostic ignored \"-Wreserved-identifier\"")
#define TINT_DISABLE_WARNING_RESERVED_MACRO_IDENTIFIER                  \
    _Pragma("clang diagnostic ignored \"-Wreserved-macro-identifier\"") \
        _Pragma("clang diagnostic ignored \"-Wreserved-id-macro\"")
#define TINT_DISABLE_WARNING_UNUSED_VALUE _Pragma("clang diagnostic ignored \"-Wunused-value\"")
#define TINT_DISABLE_WARNING_UNUSED_PARAMETER \
    _Pragma("clang diagnostic ignored \"-Wunused-parameter\"")
#define TINT_DISABLE_WARNING_SHADOW_FIELD_IN_CONSTRUCTOR \
    _Pragma("clang diagnostic ignored \"-Wshadow-field-in-constructor\"")
#define TINT_DISABLE_WARNING_EXTRA_SEMICOLON \
    _Pragma("clang diagnostic ignored \"-Wextra-semi-stmt\"")
#define TINT_DISABLE_WARNING_ZERO_AS_NULLPTR \
    _Pragma("clang diagnostic ignored \"-Wzero-as-null-pointer-constant\"")
#define TINT_DISABLE_WARNING_MISSING_DESTRUCTOR_OVERRIDE                  \
    _Pragma("clang diagnostic ignored \"-Wsuggest-destructor-override\"") \
        _Pragma("clang diagnostic ignored \"-Winconsistent-missing-destructor-override\"")

// clang-format off
#define TINT_BEGIN_DISABLE_PROTOBUF_WARNINGS()        \
    _Pragma("clang diagnostic push")                  \
    TINT_DISABLE_WARNING_EXTRA_SEMICOLON              \
    TINT_DISABLE_WARNING_MAYBE_UNINITIALIZED          \
    TINT_DISABLE_WARNING_MISSING_DESTRUCTOR_OVERRIDE  \
    TINT_DISABLE_WARNING_RESERVED_IDENTIFIER          \
    TINT_DISABLE_WARNING_RESERVED_MACRO_IDENTIFIER    \
    TINT_DISABLE_WARNING_SHADOW_FIELD_IN_CONSTRUCTOR  \
    TINT_DISABLE_WARNING_SIGN_CONVERSION              \
    TINT_DISABLE_WARNING_UNUSED_PARAMETER             \
    TINT_DISABLE_WARNING_WEAK_VTABLES                 \
    TINT_DISABLE_WARNING_ZERO_AS_NULLPTR              \
    TINT_REQUIRE_SEMICOLON

#define TINT_END_DISABLE_PROTOBUF_WARNINGS() \
    _Pragma("clang diagnostic pop")          \
    TINT_REQUIRE_SEMICOLON

#define TINT_BEGIN_DISABLE_ALL_WARNINGS() \
    _Pragma("clang diagnostic push")      \
    _Pragma("clang diagnostic ignored \"-Weverything\"")       \
    TINT_REQUIRE_SEMICOLON

#define TINT_END_DISABLE_ALL_WARNINGS() \
    _Pragma("clang diagnostic pop")     \
    TINT_REQUIRE_SEMICOLON

#define TINT_BEGIN_DISABLE_WARNING(name)     \
    _Pragma("clang diagnostic push")         \
    TINT_CONCAT(TINT_DISABLE_WARNING_, name) \
    TINT_REQUIRE_SEMICOLON

#define TINT_END_DISABLE_WARNING(name)       \
    _Pragma("clang diagnostic pop")          \
    TINT_REQUIRE_SEMICOLON
// clang-format on

#define TINT_UNLIKELY(x) __builtin_expect(!!(x), false)
#define TINT_LIKELY(x) __builtin_expect(!!(x), true)

#if __has_feature(address_sanitizer)
#define TINT_ASAN_ENABLED
#endif

#elif defined(__GNUC__)
////////////////////////////////////////////////////////////////////////////////
// GCC
////////////////////////////////////////////////////////////////////////////////
#define TINT_DISABLE_WARNING_CONSTANT_OVERFLOW /* currently no-op */
#define TINT_DISABLE_WARNING_MAYBE_UNINITIALIZED \
    _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
#define TINT_DISABLE_WARNING_NEWLINE_EOF               /* currently no-op */
#define TINT_DISABLE_WARNING_OLD_STYLE_CAST            /* currently no-op */
#define TINT_DISABLE_WARNING_SIGN_CONVERSION           /* currently no-op */
#define TINT_DISABLE_WARNING_UNREACHABLE_CODE          /* currently no-op */
#define TINT_DISABLE_WARNING_WEAK_VTABLES              /* currently no-op */
#define TINT_DISABLE_WARNING_FLOAT_EQUAL               /* currently no-op */
#define TINT_DISABLE_WARNING_DEPRECATED                /* currently no-op */
#define TINT_DISABLE_WARNING_RESERVED_IDENTIFIER       /* currently no-op */
#define TINT_DISABLE_WARNING_RESERVED_MACRO_IDENTIFIER /* currently no-op */
#define TINT_DISABLE_WARNING_UNUSED_VALUE _Pragma("GCC diagnostic ignored \"-Wunused-value\"")
#define TINT_DISABLE_WARNING_UNUSED_PARAMETER \
    _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"")
#define TINT_DISABLE_WARNING_SHADOW_FIELD_IN_CONSTRUCTOR /* currently no-op */
#define TINT_DISABLE_WARNING_EXTRA_SEMICOLON             /* currently no-op */
#define TINT_DISABLE_WARNING_ZERO_AS_NULLPTR             /* currently no-op */
#define TINT_DISABLE_WARNING_MISSING_DESTRUCTOR_OVERRIDE /* currently no-op */

#define TINT_BEGIN_DISABLE_PROTOBUF_WARNINGS() \
    _Pragma("GCC diagnostic push") TINT_DISABLE_WARNING_UNUSED_PARAMETER TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_PROTOBUF_WARNINGS() _Pragma("GCC diagnostic pop") TINT_REQUIRE_SEMICOLON

#define TINT_BEGIN_DISABLE_ALL_WARNINGS()                                      \
    _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wall\"") \
        _Pragma("GCC diagnostic ignored \"-Wextra\"") TINT_REQUIRE_SEMICOLON

#define TINT_END_DISABLE_ALL_WARNINGS() _Pragma("GCC diagnostic pop") TINT_REQUIRE_SEMICOLON

// clang-format off
#define TINT_BEGIN_DISABLE_WARNING(name)     \
    _Pragma("GCC diagnostic push")           \
    TINT_CONCAT(TINT_DISABLE_WARNING_, name) \
    TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_WARNING(name)       \
    _Pragma("GCC diagnostic pop")            \
    TINT_REQUIRE_SEMICOLON
// clang-format on

#define TINT_UNLIKELY(x) __builtin_expect(!!(x), false)
#define TINT_LIKELY(x) __builtin_expect(!!(x), true)

#if defined(__SANITIZE_ADDRESS__)
#define TINT_ASAN_ENABLED
#endif

#else
////////////////////////////////////////////////////////////////////////////////
// Other
////////////////////////////////////////////////////////////////////////////////
#define TINT_BEGIN_DISABLE_ALL_WARNINGS() TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_ALL_WARNINGS TINT_REQUIRE_SEMICOLON
#define TINT_BEGIN_DISABLE_WARNING(name) TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_WARNING(name) TINT_REQUIRE_SEMICOLON
#define TINT_BEGIN_DISABLE_PROTOBUF_WARNINGS() TINT_REQUIRE_SEMICOLON
#define TINT_END_DISABLE_PROTOBUF_WARNINGS() TINT_REQUIRE_SEMICOLON
#define TINT_UNLIKELY(x) x
#define TINT_LIKELY(x) x

#endif

#endif  // SRC_TINT_UTILS_MACROS_COMPILER_H_
