Brian Silverman | 9d8fa39 | 2018-08-04 17:09:24 -0700 | [diff] [blame^] | 1 | // (C) Copyright Eric Jourdanneau, Joel Falcou 2010 |
| 2 | // Use, modification and distribution are subject to the |
| 3 | // Boost Software License, Version 1.0. (See accompanying file |
| 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| 5 | |
| 6 | // See http://www.boost.org for most recent version. |
| 7 | |
| 8 | // NVIDIA CUDA C++ compiler setup |
| 9 | |
| 10 | #ifndef BOOST_COMPILER |
| 11 | # define BOOST_COMPILER "NVIDIA CUDA C++ Compiler" |
| 12 | #endif |
| 13 | |
| 14 | #if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__) |
| 15 | # define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__) |
| 16 | #else |
| 17 | // We don't really know what the CUDA version is, but it's definitely before 7.5: |
| 18 | # define BOOST_CUDA_VERSION 7000000 |
| 19 | #endif |
| 20 | |
| 21 | // NVIDIA Specific support |
| 22 | // BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device |
| 23 | #define BOOST_GPU_ENABLED __host__ __device__ |
| 24 | |
| 25 | // A bug in version 7.0 of CUDA prevents use of variadic templates in some occasions |
| 26 | // https://svn.boost.org/trac/boost/ticket/11897 |
| 27 | // This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance |
| 28 | // check is enough to detect versions < 7.5 |
| 29 | #if BOOST_CUDA_VERSION < 7050000 |
| 30 | # define BOOST_NO_CXX11_VARIADIC_TEMPLATES |
| 31 | #endif |
| 32 | // The same bug is back again in 8.0: |
| 33 | #if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000) |
| 34 | # define BOOST_NO_CXX11_VARIADIC_TEMPLATES |
| 35 | #endif |
| 36 | // CUDA (8.0) has no constexpr support in msvc mode: |
| 37 | #if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000) |
| 38 | # define BOOST_NO_CXX11_CONSTEXPR |
| 39 | #endif |
| 40 | |
| 41 | #ifdef __CUDACC__ |
| 42 | // |
| 43 | // When compiing .cu files, there's a bunch of stuff that doesn't work with msvc: |
| 44 | // |
| 45 | #if defined(_MSC_VER) |
| 46 | # define BOOST_NO_CXX14_DIGIT_SEPARATORS |
| 47 | # define BOOST_NO_CXX11_UNICODE_LITERALS |
| 48 | #endif |
| 49 | // |
| 50 | // And this one effects the NVCC front end, |
| 51 | // See https://svn.boost.org/trac/boost/ticket/13049 |
| 52 | // |
| 53 | #if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000) |
| 54 | # define BOOST_NO_CXX11_NOEXCEPT |
| 55 | #endif |
| 56 | |
| 57 | #endif |
| 58 | |