-
Notifications
You must be signed in to change notification settings - Fork 163
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
We want to consolidate our configuration and keep it maintainable. Consequently put the different functionality into individual headers
- Loading branch information
Showing
8 changed files
with
260 additions
and
183 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
59 changes: 59 additions & 0 deletions
59
libcudacxx/include/cuda/std/detail/libcxx/include/__cccl/compiler.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// Part of libcu++, the C++ Standard Library for your entire system, | ||
// under the Apache License v2.0 with LLVM Exceptions. | ||
// See https://llvm.org/LICENSE.txt for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
// SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef __CCCL_COMPILER_H | ||
#define __CCCL_COMPILER_H | ||
|
||
// Determine the host compiler | ||
#if defined(__INTEL_LLVM_COMPILER) | ||
# define _CCCL_COMPILER_ICC_LLVM | ||
#elif defined(__INTEL_COMPILER) | ||
# define _CCCL_COMPILER_ICC | ||
#elif defined(__NVCOMPILER) | ||
# define _CCCL_COMPILER_NVHPC | ||
#elif defined(__clang__) | ||
# define _CCCL_COMPILER_CLANG | ||
#elif defined(__GNUC__) | ||
# define _CCCL_COMPILER_GCC | ||
#elif defined(_MSC_VER) | ||
# define _CCCL_COMPILER_MSVC | ||
#elif defined(__IBMCPP__) | ||
# define _CCCL_COMPILER_IBM | ||
#elif defined(__CUDACC_RTC__) | ||
# define _CCCL_COMPILER_NVRTC | ||
#endif | ||
|
||
// Convenient shortcut to determine which version of MSVC we are dealing with | ||
#if defined(_CCCL_COMPILER_MSVC) | ||
# if _MSC_VER < 1920 | ||
# define _CCCL_COMPILER_MSVC_2017 | ||
# elif _MSC_VER < 1930 | ||
# define _CCCL_COMPILER_MSVC_2019 | ||
# else // _MSC_VER < 1940 | ||
# define _CCCL_COMPILER_MSVC_2022 | ||
# endif // _MSC_VER < 1940 | ||
#endif // _CCCL_COMPILER_MSVC | ||
|
||
// Determine the cuda compiler | ||
#if defined(__NVCC__) | ||
# define _CCCL_CUDA_COMPILER_NVCC | ||
#elif defined(_NVHPC_CUDA) | ||
# define _CCCL_CUDA_COMPILER_NVHPC | ||
#elif defined(__CUDA__) && defined(_CCCL_COMPILER_CLANG) | ||
# define _CCCL_CUDA_COMPILER_CLANG | ||
#endif | ||
|
||
// Shorthand to check whether there is a cuda compiler available | ||
#if defined(_CCCL_CUDA_COMPILER_NVCC) || defined(_CCCL_CUDA_COMPILER_NVHPC) || defined(_CCCL_CUDA_COMPILER_CLANG) \ | ||
|| defined(_CCCL_COMPILER_NVRTC) | ||
# define _CCCL_CUDA_COMPILER | ||
#endif // cuda compiler available | ||
|
||
#endif // __CCCL_COMPILER_H |
123 changes: 123 additions & 0 deletions
123
libcudacxx/include/cuda/std/detail/libcxx/include/__cccl/diagnostic.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// Part of libcu++, the C++ Standard Library for your entire system, | ||
// under the Apache License v2.0 with LLVM Exceptions. | ||
// See https://llvm.org/LICENSE.txt for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
// SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef __CCCL_DIAGNOSTIC_H | ||
#define __CCCL_DIAGNOSTIC_H | ||
|
||
#include "../__cccl/compiler.h" | ||
#include "../__cccl/system_header.h" | ||
|
||
#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC) | ||
# pragma GCC system_header | ||
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG) | ||
# pragma clang system_header | ||
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC) | ||
# pragma system_header | ||
#endif // no system header | ||
|
||
// Enable us to selectively silence host compiler warnings | ||
#define _CCCL_TOSTRING2(_STR) #_STR | ||
#define _CCCL_TOSTRING(_STR) _CCCL_TOSTRING2(_STR) | ||
#ifdef _CCCL_COMPILER_CLANG | ||
# define _CCCL_DIAG_PUSH _Pragma("clang diagnostic push") | ||
# define _CCCL_DIAG_POP _Pragma("clang diagnostic pop") | ||
# define _CCCL_DIAG_SUPPRESS_CLANG(str) _Pragma(_CCCL_TOSTRING(clang diagnostic ignored str)) | ||
# define _CCCL_DIAG_SUPPRESS_GCC(str) | ||
# define _CCCL_DIAG_SUPPRESS_NVHPC(str) | ||
# define _CCCL_DIAG_SUPPRESS_MSVC(str) | ||
#elif defined(_CCCL_COMPILER_GCC) | ||
# define _CCCL_DIAG_PUSH _Pragma("GCC diagnostic push") | ||
# define _CCCL_DIAG_POP _Pragma("GCC diagnostic pop") | ||
# define _CCCL_DIAG_SUPPRESS_CLANG(str) | ||
# define _CCCL_DIAG_SUPPRESS_GCC(str) _Pragma(_CCCL_TOSTRING(GCC diagnostic ignored str)) | ||
# define _CCCL_DIAG_SUPPRESS_NVHPC(str) | ||
# define _CCCL_DIAG_SUPPRESS_MSVC(str) | ||
#elif defined(_CCCL_COMPILER_NVHPC) | ||
# define _CCCL_DIAG_PUSH _Pragma("diagnostic push") | ||
# define _CCCL_DIAG_POP _Pragma("diagnostic pop") | ||
# define _CCCL_DIAG_SUPPRESS_CLANG(str) | ||
# define _CCCL_DIAG_SUPPRESS_GCC(str) | ||
# define _CCCL_DIAG_SUPPRESS_NVHPC(str) _Pragma(_CCCL_TOSTRING(diag_suppress str)) | ||
# define _CCCL_DIAG_SUPPRESS_MSVC(str) | ||
#elif defined(_CCCL_COMPILER_MSVC) | ||
# define _CCCL_DIAG_PUSH __pragma(warning(push)) | ||
# define _CCCL_DIAG_POP __pragma(warning(pop)) | ||
# define _CCCL_DIAG_SUPPRESS_CLANG(str) | ||
# define _CCCL_DIAG_SUPPRESS_GCC(str) | ||
# define _CCCL_DIAG_SUPPRESS_NVHPC(str) | ||
# define _CCCL_DIAG_SUPPRESS_MSVC(str) __pragma(warning(disable : str)) | ||
#else | ||
# define _CCCL_DIAG_PUSH | ||
# define _CCCL_DIAG_POP | ||
# define _CCCL_DIAG_SUPPRESS_CLANG(str) | ||
# define _CCCL_DIAG_SUPPRESS_GCC(str) | ||
# define _CCCL_DIAG_SUPPRESS_NVHPC(str) | ||
# define _CCCL_DIAG_SUPPRESS_MSVC(str) | ||
#endif | ||
|
||
// Convenient shortcuts to silence common warnings | ||
#if defined(_CCCL_COMPILER_CLANG) | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_PUSH \ | ||
_CCCL_DIAG_PUSH \ | ||
_CCCL_DIAG_SUPPRESS_CLANG("-Wdeprecated") \ | ||
_CCCL_DIAG_SUPPRESS_CLANG("-Wdeprecated-declarations") | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_POP _CCCL_DIAG_POP | ||
#elif defined(_CCCL_COMPILER_GCC) | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_PUSH \ | ||
_CCCL_DIAG_PUSH \ | ||
_CCCL_DIAG_SUPPRESS_GCC("-Wdeprecated") \ | ||
_CCCL_DIAG_SUPPRESS_GCC("-Wdeprecated-declarations") | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_POP _CCCL_DIAG_POP | ||
#elif defined(_CCCL_COMPILER_MSVC) | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_PUSH \ | ||
_CCCL_DIAG_PUSH \ | ||
_CCCL_DIAG_SUPPRESS_MSVC(4996) | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_POP _CCCL_DIAG_POP | ||
#else // !_CCCL_COMPILER_CLANG && !_CCCL_COMPILER_GCC | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_PUSH | ||
# define _CCCL_DIAG_SUPPRESS_DEPRECATED_POP | ||
#endif // !_CCCL_COMPILER_CLANG && !_CCCL_COMPILER_GCC | ||
|
||
// Enable us to selectively silence cuda compiler warnings | ||
#if defined(_CCCL_CUDA_COMPILER) | ||
# if defined(_CCCL_CUDA_COMPILER_CLANG) | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) | ||
# elif defined(__NVCC_DIAG_PRAGMA_SUPPORT__) | ||
# if defined(_CCCL_COMPILER_MSVC) | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) __pragma(_CCCL_TOSTRING(nv_diag_suppress _WARNING)) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) __pragma(_CCCL_TOSTRING(nv_diag_default _WARNING)) | ||
# else // ^^^ _CCCL_COMPILER_MSVC ^^^ / vvv !_CCCL_COMPILER_MSVC vvv | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) \ | ||
_Pragma(_CCCL_TOSTRING(nv_diagnostic push)) _Pragma(_CCCL_TOSTRING(nv_diag_suppress _WARNING)) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) _Pragma(_CCCL_TOSTRING(nv_diagnostic pop)) | ||
# endif // !_CCCL_COMPILER_MSVC | ||
# elif defined(_CCCL_COMPILER_NVHPC) | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) \ | ||
_Pragma(_CCCL_TOSTRING(diagnostic push)) _Pragma(_CCCL_TOSTRING(diag_suppress _WARNING)) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) _Pragma(_CCCL_TOSTRING(diagnostic pop)) | ||
# else // ^^^ __NVCC_DIAG_PRAGMA_SUPPORT__ ^^^ / vvv !__NVCC_DIAG_PRAGMA_SUPPORT__ vvv | ||
# if defined(_CCCL_COMPILER_MSVC_2017) // MSVC 2017 has issues with restoring the warning | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) __pragma(_CCCL_TOSTRING(diag_suppress _WARNING)) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) | ||
# elif defined(_CCCL_COMPILER_MSVC) | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) __pragma(_CCCL_TOSTRING(diag_suppress _WARNING)) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) __pragma(_CCCL_TOSTRING(diag_default _WARNING)) | ||
# else // ^^^ _CCCL_COMPILER_MSVC ^^^ / vvv !_CCCL_COMPILER_MSVC vvv | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) _Pragma(_CCCL_TOSTRING(diag_suppress _WARNING)) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) _Pragma(_CCCL_TOSTRING(diag_default _WARNING)) | ||
# endif // !_CCCL_COMPILER_MSVC | ||
# endif // !__NVCC_DIAG_PRAGMA_SUPPORT__ | ||
#else // ^^^ _CCCL_CUDA_COMPILER ^^^ / vvv !_CCCL_CUDA_COMPILER vvv | ||
# define _CCCL_NV_DIAG_SUPPRESS(_WARNING) | ||
# define _CCCL_NV_DIAG_DEFAULT(_WARNING) | ||
#endif // other compilers | ||
|
||
#endif // __CCCL_DIAGNOSTIC_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 40 additions & 0 deletions
40
libcudacxx/include/cuda/std/detail/libcxx/include/__cccl/system_header.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// Part of libcu++, the C++ Standard Library for your entire system, | ||
// under the Apache License v2.0 with LLVM Exceptions. | ||
// See https://llvm.org/LICENSE.txt for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
// SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef __CCCL_SYSTEM_HEADER_H | ||
#define __CCCL_SYSTEM_HEADER_H | ||
|
||
#include "../__cccl/compiler.h" | ||
|
||
// Enforce that cccl headers are treated as system headers | ||
#if defined(_CCCL_COMPILER_GCC) || defined(_CCCL_COMPILER_NVHPC) || defined(_CCCL_COMPILER_ICC) \ | ||
|| defined(_CCCL_COMPILER_ICC_LLVM) | ||
# define _CCCL_FORCE_SYSTEM_HEADER_GCC | ||
#elif defined(_CCCL_COMPILER_CLANG) | ||
# define _CCCL_FORCE_SYSTEM_HEADER_CLANG | ||
#elif defined(_CCCL_COMPILER_MSVC) | ||
# define _CCCL_FORCE_SYSTEM_HEADER_MSVC | ||
#endif // other compilers | ||
|
||
// Potentially enable that cccl headers are treated as system headers | ||
#if !defined(_CCCL_NO_SYSTEM_HEADER) \ | ||
&& !(defined(_CCCL_COMPILER_MSVC) && defined(_LIBCUDACXX_DISABLE_PRAGMA_MSVC_WARNING)) \ | ||
&& !defined(_CCCL_COMPILER_NVRTC) && !defined(_LIBCUDACXX_DISABLE_PRAGMA_GCC_SYSTEM_HEADER) | ||
# if defined(_CCCL_COMPILER_GCC) || defined(_CCCL_COMPILER_NVHPC) || defined(_CCCL_COMPILER_ICC) \ | ||
|| defined(_CCCL_COMPILER_ICC_LLVM) | ||
# define _CCCL_IMPLICIT_SYSTEM_HEADER_GCC | ||
# elif defined(_CCCL_COMPILER_CLANG) | ||
# define _CCCL_IMPLICIT_SYSTEM_HEADER_CLANG | ||
# elif defined(_CCCL_COMPILER_MSVC) | ||
# define _CCCL_IMPLICIT_SYSTEM_HEADER_MSVC | ||
# endif // other compilers | ||
#endif // Use system header | ||
|
||
#endif // __CCCL_SYSTEM_HEADER_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.