summaryrefslogtreecommitdiff
path: root/Modules/CMakeCUDACompilerId.cu.in
diff options
context:
space:
mode:
authorRobert Maynard <robert.maynard@kitware.com>2016-08-26 16:59:36 -0400
committerRobert Maynard <robert.maynard@kitware.com>2016-11-14 11:36:42 -0500
commitf8aac21947f43a0e886a3cc3655514abb95bb260 (patch)
treea257ad0211362ab635e3b09922ec143eba1827a3 /Modules/CMakeCUDACompilerId.cu.in
parent4a4be0301bd9c6062738e87892cbe5bd8d900a49 (diff)
downloadcmake-f8aac21947f43a0e886a3cc3655514abb95bb260.tar.gz
CUDA: Add basic CUDA language support for *NIX systems.
Diffstat (limited to 'Modules/CMakeCUDACompilerId.cu.in')
-rw-r--r--Modules/CMakeCUDACompilerId.cu.in40
1 files changed, 40 insertions, 0 deletions
diff --git a/Modules/CMakeCUDACompilerId.cu.in b/Modules/CMakeCUDACompilerId.cu.in
new file mode 100644
index 0000000000..ddbc8b4275
--- /dev/null
+++ b/Modules/CMakeCUDACompilerId.cu.in
@@ -0,0 +1,40 @@
+
+#ifndef __cplusplus
+# error "A C compiler has been selected for CUDA/C++."
+#endif
+
+@CMAKE_CUDA_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+@CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_CUDA_COMPILER_ID_ERROR_FOR_TEST@
+
+const char* info_language_dialect_default = "INFO" ":" "dialect_default["
+#if __cplusplus >= 201402L
+ "14"
+#elif __cplusplus >= 201103L
+ "11"
+#else
+ "98"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+ int require = 0;
+ require += info_compiler[argc];
+ require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+ require += info_version[argc];
+#endif
+ require += info_language_dialect_default[argc];
+ (void)argv;
+ return require;
+}