From 79bebc0f71ebf9df875051f75342ece374cf6812 Mon Sep 17 00:00:00 2001
From: Rafael Ravedutti <rafaelravedutti@gmail.com>
Date: Wed, 14 Feb 2024 01:34:39 +0100
Subject: [PATCH] Fix CUDA compilation in CMakeLists.txt

Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com>
---
 CMakeLists.txt | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a0da6cc..31fa623 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,12 @@ if(NOT TESTCASE)
     set(TESTCASE md CACHE STRING "Select the testcase from the following: md, dem" FORCE)
 endif()
 
+set(CUDA_ARCH ${CUDA_ARCH} CACHE STRING "CUDA_ARCH environment variable must be set.")
+
+if(NOT CUDA_ARCH)
+    set(CUDA_ARCH sm_80)
+endif()
+
 string(TOLOWER "${TESTCASE}" TESTCASE)
 message(STATUS "Selected testcase: ${TESTCASE}")
 
@@ -63,6 +69,7 @@ add_dependencies(${CPU_BIN} gen_cpu)
 
 if(COMPILE_CUDA)
     find_package(CUDA REQUIRED)
+    enable_language(CUDA)
 
     if(USE_WALBERLA)
         waLBerla_add_executable(
@@ -81,6 +88,14 @@ if(COMPILE_CUDA)
     target_compile_features(runtime_gpu PUBLIC cxx_std_11)
     set_target_properties(runtime_gpu PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
 
+    target_compile_options(${GPU_BIN} PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-arch=${CUDA_ARCH}>)
+    target_include_directories(${GPU_BIN} PRIVATE ${CUDA_INCLUDE_DIRS})
+    set_target_properties(${GPU_BIN} PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCH})
+
+    target_compile_options(runtime_gpu PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-arch=${CUDA_ARCH}>)
+    target_include_directories(runtime_gpu PRIVATE ${CUDA_INCLUDE_DIRS})
+    set_target_properties(runtime_gpu PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCH})
+
     #set_property(TARGET ${GPU_BIN} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
     #target_link_libraries(${GPU_BIN} runtime_gpu)
 
-- 
GitLab