diff --git a/CMakeLists.txt b/CMakeLists.txt index 3aba679803be9835fb140c834d17274536629b66..8904dc51bd97a0732600cdbbbf969e487ee7e8c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,12 +8,6 @@ endif() # option(USE_CUDA "Use CUDA" ON) set(USE_CUDA ON) -if(USE_CUDA) - project(arbd VERSION 1.2 LANGUAGES CXX CUDA) -else(USE_CUDA) - project(arbd VERSION 1.2 LANGUAGES CXX) -endif() - ## specify the C++ standard set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED True) @@ -31,7 +25,6 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") ## Some CMake versions use -O2 for release; replace with -O3 if(CMAKE_CXX_FLAGS_RELEASE) @@ -44,14 +37,14 @@ endif() ## OPTIONS +option(DEBUG "Build with debug flags" False) option(USE_NCCL "Use NCCL for single node GPU peer communication" False) option(USE_NVTX "Build with NVTX profiling ranges" False) -option(DEBUG "Build with debug flags" False) # (not yet optional) message(STATUS "USE_CUDA: ${USE_CUDA}") +message(STATUS "DEBUG: ${DEBUG}") message(STATUS "USE_NCCL: ${USE_NCCL}") message(STATUS "USE_NVTX: ${USE_NVTX}") -message(STATUS "DEBUG: ${DEBUG}") ## Set flags before adding executable @@ -66,18 +59,31 @@ if(USE_CUDA) include_directories(${CUDA_INCLUDE_DIRS}) endif() +if(DEBUG) + set(CMAKE_BUILD_TYPE Debug) + set(PROJECT_NAME arbd_dbg) +else(DEBUG) + set(PROJECT_NAME arbd) +endif() if(USE_NVTX) add_definitions(-DUSE_NVTX) endif() if(USE_NCCL) add_definitions(-DUSE_NCCL) - target_link_libraries(arbd PRIVATE nccl) + target_link_libraries("${PROJECT_NAME}" PRIVATE nccl) endif() ## Two lines below needed? set(CMAKE_CUDA_SEPARABLE_COMPILATION ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) +if(USE_CUDA) + project("${PROJECT_NAME}" VERSION 1.2 LANGUAGES CXX CUDA) +else(USE_CUDA) + project("${PROJECT_NAME}" VERSION 1.2 LANGUAGES CXX) +endif() + + ## Print all variables by uncommenting block below # get_cmake_property(_variableNames VARIABLES) # list (SORT _variableNames) @@ -90,7 +96,7 @@ set(CMAKE_MACOSX_RPATH 1) # Unsure if this works for CMAKE_BUIlD_RPATH, or just set(CMAKE_BUILD_RPATH "${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}") # set(CMAKE_VERBOSE_MAKEFILE True) -add_executable(arbd src/arbd.cpp +add_executable("${PROJECT_NAME}" src/arbd.cpp src/Configuration.cpp src/FlowForce.cpp src/GPUManager.cpp @@ -130,13 +136,13 @@ add_executable(arbd src/arbd.cpp ## Add optional libraries if(USE_CUDA) - target_link_libraries(arbd PRIVATE curand) + target_link_libraries("${PROJECT_NAME}" PRIVATE curand) endif() if(USE_NCCL) - target_link_libraries(arbd PRIVATE nccl) + target_link_libraries("${PROJECT_NAME}" PRIVATE nccl) endif() if(USE_NVTX) - target_link_libraries(arbd PRIVATE nvToolsExt) + target_link_libraries("${PROJECT_NAME}" PRIVATE nvToolsExt) endif() -install(TARGETS arbd) +install(TARGETS "${PROJECT_NAME}")