mirror of
https://github.com/boostorg/predef.git
synced 2025-07-30 03:47:14 +02:00
Add support for detecting CUDA (#71)
* add support for detecting CUDA * add test for new make macro
This commit is contained in:
committed by
Rene Rivera
parent
9e31c6455c
commit
e8681a9b37
@ -13,5 +13,6 @@ http://www.boost.org/LICENSE_1_0.txt)
|
|||||||
#include <boost/predef/language/stdc.h>
|
#include <boost/predef/language/stdc.h>
|
||||||
#include <boost/predef/language/stdcpp.h>
|
#include <boost/predef/language/stdcpp.h>
|
||||||
#include <boost/predef/language/objc.h>
|
#include <boost/predef/language/objc.h>
|
||||||
|
#include <boost/predef/language/cuda.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
52
include/boost/predef/language/cuda.h
Normal file
52
include/boost/predef/language/cuda.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
Copyright Benjamin Worpitz 2018
|
||||||
|
Distributed under 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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_LANGUAGE_CUDA_H
|
||||||
|
#define BOOST_PREDEF_LANGUAGE_CUDA_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
#include <boost/predef/make.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_LANG_CUDA`]
|
||||||
|
|
||||||
|
[@https://en.wikipedia.org/wiki/CUDA CUDA C/C++] language.
|
||||||
|
If available, the version is detected as VV.RR.P.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__CUDACC__`] [__predef_detection__]]
|
||||||
|
[[`__CUDA__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`CUDA_VERSION`] [VV.RR.P]]
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
|
||||||
|
#if defined(__CUDACC__) || defined(__CUDA__)
|
||||||
|
# undef BOOST_LANG_CUDA
|
||||||
|
# include <cuda.h>
|
||||||
|
# if defined(CUDA_VERSION)
|
||||||
|
# define BOOST_LANG_CUDA BOOST_PREDEF_MAKE_10_VVRRP(CUDA_VERSION)
|
||||||
|
# else
|
||||||
|
# define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_AVAILABLE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BOOST_LANG_CUDA
|
||||||
|
# define BOOST_LANG_CUDA_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_LANG_CUDA_NAME "CUDA C/C++"
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/detail/test.h>
|
||||||
|
BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_CUDA,BOOST_LANG_CUDA_NAME)
|
@ -64,6 +64,8 @@ Macros are:
|
|||||||
#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
|
#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
|
||||||
/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */
|
/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */
|
||||||
#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
|
#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
|
||||||
|
/*` `BOOST_PREDEF_MAKE_10_VVRRP(V)` */
|
||||||
|
#define BOOST_PREDEF_MAKE_10_VVRRP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,((V)/10)%100,(V)%10)
|
||||||
/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */
|
/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */
|
||||||
#define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
|
#define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
|
||||||
/*` `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` */
|
/*` `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` */
|
||||||
|
@ -42,6 +42,7 @@ void test_BOOST_VERSION_NUMBER()
|
|||||||
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VPPP(9999) == BOOST_VERSION_NUMBER(9,0,999));
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VPPP(9999) == BOOST_VERSION_NUMBER(9,0,999));
|
||||||
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRRPP(999999) == BOOST_VERSION_NUMBER(99,99,99));
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRRPP(999999) == BOOST_VERSION_NUMBER(99,99,99));
|
||||||
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR(9999) == BOOST_VERSION_NUMBER(99,99,0));
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRR(9999) == BOOST_VERSION_NUMBER(99,99,0));
|
||||||
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRRP(98765) == BOOST_VERSION_NUMBER(98,76,5));
|
||||||
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPP(9999) == BOOST_VERSION_NUMBER(9,9,99));
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPP(9999) == BOOST_VERSION_NUMBER(9,9,99));
|
||||||
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRRPP(99999) == BOOST_VERSION_NUMBER(9,99,99));
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRRPP(99999) == BOOST_VERSION_NUMBER(9,99,99));
|
||||||
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPPPP(460002) == BOOST_VERSION_NUMBER(4,6,2));
|
PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRPPPP(460002) == BOOST_VERSION_NUMBER(4,6,2));
|
||||||
|
Reference in New Issue
Block a user