From c6f4d9d181483cf5241683ec936b8a3b5a135851 Mon Sep 17 00:00:00 2001 From: pca006132 Date: Mon, 30 May 2022 21:23:45 +0800 Subject: [PATCH] cmake fix --- CMakeLists.txt | 5 ++++- utilities/CMakeLists.txt | 24 ++++++++++++++++-------- utilities/include/vec_dh.h | 2 ++ utilities/src/detect_cuda.cpp | 5 ++++- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 135dc2861..6416b7d83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,11 +44,13 @@ if (THRUST_BACKEND STREQUAL "CUDA") # we cannot set THRUST_INC_DIR when building with CUDA, otherwise the # compiler will not use the system CUDA headers which causes incompatibility enable_language(CUDA) + find_package(CUDA REQUIRED) # clear THRUST_INC_DIR, we use the one from nvcc set(THRUST_INC_DIR "") # OpenMP also required find_package(OpenMP REQUIRED) set(MANIFOLD_INCLUDE OpenMP::OpenMP_CXX) + set(MANIFOLD_FLAGS ${MANIFOLD_FLAGS} -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA) set(MANIFOLD_NVCC_FLAGS ${MANIFOLD_NVCC_FLAGS} -fopenmp) elseif (THRUST_BACKEND STREQUAL "OMP") find_package(OpenMP REQUIRED) @@ -56,8 +58,9 @@ elseif (THRUST_BACKEND STREQUAL "OMP") set(MANIFOLD_FLAGS ${MANIFOLD_FLAGS} -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP -fopenmp) elseif (THRUST_BACKEND STREQUAL "CPP") set(MANIFOLD_FLAGS ${MANIFOLD_FLAGS} -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CPP) +else () message(FATAL_ERROR "Invalid value for THRUST_BACKEND: ${THRUST_BACKEND}. " - "Should be one of \"CUDA\", \"OMP\", \"CPP\" or \"TBB\"") + "Should be one of \"CUDA\", \"OMP\", \"CPP\"") endif() add_subdirectory(utilities) diff --git a/utilities/CMakeLists.txt b/utilities/CMakeLists.txt index c437b1528..63420fa98 100644 --- a/utilities/CMakeLists.txt +++ b/utilities/CMakeLists.txt @@ -2,11 +2,19 @@ project (utilities) add_library(${PROJECT_NAME} src/detect_cuda.cpp) -target_include_directories(${PROJECT_NAME} INTERFACE ${THRUST_INC_DIR} ${GLM_INC_DIR}) -target_include_directories(${PROJECT_NAME} - INTERFACE - ${PROJECT_SOURCE_DIR}/include -) -target_compile_options(${PROJECT_NAME} - PRIVATE ${MANIFOLD_FLAGS} -) +target_include_directories(${PROJECT_NAME} PUBLIC ${THRUST_INC_DIR} ${GLM_INC_DIR}) +if(THRUST_BACKEND STREQUAL "CUDA") + set_source_files_properties(src/detect_cuda.cpp PROPERTIES LANGUAGE CUDA) + set_property(TARGET ${PROJECT_NAME} PROPERTY CUDA_ARCHITECTURES 61) + target_compile_options(${PROJECT_NAME} + PRIVATE ${MANIFOLD_NVCC_FLAGS} + ) + target_compile_options(${PROJECT_NAME} + PRIVATE "$<$:${MANIFOLD_NVCC_RELEASE_FLAGS}>" "$<$:${MANIFOLD_NVCC_DEBUG_FLAGS}>" + ) +else() + target_compile_options(${PROJECT_NAME} + PRIVATE ${MANIFOLD_FLAGS} + ) +endif() +target_include_directories(${PROJECT_NAME} INTERFACE ${PROJECT_SOURCE_DIR}/include) diff --git a/utilities/include/vec_dh.h b/utilities/include/vec_dh.h index 23a6c0940..b3087cbc0 100644 --- a/utilities/include/vec_dh.h +++ b/utilities/include/vec_dh.h @@ -14,7 +14,9 @@ #pragma once #include +#if THRUST_DEVICE_SYSTEM == THRUST_DEVICE_SYSTEM_CUDA #include +#endif #include #include #include diff --git a/utilities/src/detect_cuda.cpp b/utilities/src/detect_cuda.cpp index 6f4157597..314b99529 100644 --- a/utilities/src/detect_cuda.cpp +++ b/utilities/src/detect_cuda.cpp @@ -1,3 +1,4 @@ +#include "thrust/execution_policy.h" #if THRUST_DEVICE_SYSTEM == THRUST_DEVICE_SYSTEM_CUDA #include @@ -10,5 +11,7 @@ void check_cuda_available() { } } #else -void manifold::check_cuda_available() {} +namespace manifold { +void check_cuda_available() {} +} #endif