| // (C) Copyright Eric Jourdanneau, Joel Falcou 2010 |
| // Use, modification and distribution are subject to the |
| // Boost Software License, Version 1.0. (See accompanying file |
| // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| |
| // See http://www.boost.org for most recent version. |
| |
| // NVIDIA CUDA C++ compiler setup |
| |
| #ifndef BOOST_COMPILER |
| # define BOOST_COMPILER "NVIDIA CUDA C++ Compiler" |
| #endif |
| |
| #if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__) |
| # define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__) |
| #else |
| // We don't really know what the CUDA version is, but it's definitely before 7.5: |
| # define BOOST_CUDA_VERSION 7000000 |
| #endif |
| |
| // NVIDIA Specific support |
| // BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device |
| #define BOOST_GPU_ENABLED __host__ __device__ |
| |
| // A bug in version 7.0 of CUDA prevents use of variadic templates in some occasions |
| // https://svn.boost.org/trac/boost/ticket/11897 |
| // This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance |
| // check is enough to detect versions < 7.5 |
| #if BOOST_CUDA_VERSION < 7050000 |
| # define BOOST_NO_CXX11_VARIADIC_TEMPLATES |
| #endif |
| // The same bug is back again in 8.0: |
| #if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000) |
| # define BOOST_NO_CXX11_VARIADIC_TEMPLATES |
| #endif |
| // CUDA (8.0) has no constexpr support in msvc mode: |
| #if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000) |
| # define BOOST_NO_CXX11_CONSTEXPR |
| #endif |
| |
| #ifdef __CUDACC__ |
| // |
| // When compiing .cu files, there's a bunch of stuff that doesn't work with msvc: |
| // |
| #if defined(_MSC_VER) |
| # define BOOST_NO_CXX14_DIGIT_SEPARATORS |
| # define BOOST_NO_CXX11_UNICODE_LITERALS |
| #endif |
| // |
| // And this one effects the NVCC front end, |
| // See https://svn.boost.org/trac/boost/ticket/13049 |
| // |
| #if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000) |
| # define BOOST_NO_CXX11_NOEXCEPT |
| #endif |
| |
| #endif |
| |