@@ -3,6 +3,7 @@ include(CheckIncludeFile)
33project (run_colvars_test_cuda LANGUAGES CXX )
44
55option (BUILD_TESTS "Build tests" ON )
6+ option (COLVARS_LEPTON "Build Colvars with Lepton" ON )
67
78if (NOT EXISTS ${COLVARS_SOURCE_DIR } )
89 set (COLVARS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR } /../.." CACHE STRING "Colvars source code directory" )
@@ -33,7 +34,37 @@ set(COLVARS_CUDA_SOURCE ${COLVARS_CUDA_DIR}/colvaratoms_kernel.cu
3334
3435file (GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR } /src/[^.]*.cpp )
3536
37+ # Build Lepton
38+ if (COLVARS_LEPTON)
39+ if (NOT DEFINED LEPTON_DIR)
40+ set (LEPTON_DIR "${COLVARS_SOURCE_DIR } /openmm-source/libraries/lepton" )
41+ if (NOT EXISTS ${LEPTON_DIR} )
42+ # Try the parent folder
43+ get_filename_component (LEPTON_DIR ${COLVARS_SOURCE_DIR } DIRECTORY )
44+ set (LEPTON_DIR "${LEPTON_DIR} /openmm-source/libraries/lepton" )
45+ endif ()
46+ if (NOT EXISTS ${LEPTON_DIR} )
47+ # Giving up, cloning OpenMM into a sub-folder
48+ execute_process (COMMAND git clone --depth=1 https://github.com/openmm/openmm.git "${COLVARS_SOURCE_DIR } /openmm-source" )
49+ set (LEPTON_DIR "${COLVARS_SOURCE_DIR } /openmm-source/libraries/lepton" )
50+ endif ()
51+ message (STATUS "Using Lepton library from: ${LEPTON_DIR} " )
52+ endif ()
53+ file (GLOB LEPTON_SOURCES ${LEPTON_DIR} /src/[^.]*.cpp )
54+ add_library (lepton OBJECT ${LEPTON_SOURCES} )
55+ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
56+ target_compile_options (lepton PRIVATE /DLEPTON_BUILDING_STATIC_LIBRARY /wd4267 )
57+ endif ()
58+ set_property (TARGET lepton PROPERTY POSITION_INDEPENDENT_CODE 1)
59+ target_include_directories (lepton PRIVATE ${LEPTON_DIR} /include )
60+ # Silence warnings for Lepton
61+ target_compile_options (lepton PRIVATE $<$<CXX_COMPILER_ID :Clang >:-Wno -tautological -undefined -compare -Wno -unknown -warning -option >)
62+ endif ()
63+
3664add_definitions (-DCOLVARS_CUDA )
65+ if (COLVARS_LEPTON)
66+ add_definitions (-DLEPTON )
67+ endif ()
3768
3869add_executable (
3970 run_colvars_test_cuda
@@ -45,13 +76,19 @@ add_executable(
4576target_include_directories (run_colvars_test_cuda
4677 PUBLIC "${COLVARS_SOURCE_DIR } /src"
4778 PUBLIC "${COLVARS_CUDA_DIR} "
48- PUBLIC "${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} " )
79+ PUBLIC "${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} "
80+ PUBLIC $<$<BOOL :${COLVARS_LEPTON} >:${LEPTON_DIR} /include >)
4981
5082if (CUDAToolkit_VERSION_MAJOR GREATER_EQUAL 10)
51- target_link_libraries (run_colvars_test_cuda CUDA::cudart CUDA::nvtx3 )
83+ target_link_libraries (run_colvars_test_cuda PUBLIC CUDA::cudart PUBLIC CUDA::nvtx3 )
5284else ()
53- target_link_libraries (run_colvars_test_cuda CUDA::cudart CUDA::nvToolsExt )
85+ target_link_libraries (run_colvars_test_cuda PUBLIC CUDA::cudart PUBLIC CUDA::nvToolsExt )
5486endif ()
87+
88+ if (COLVARS_LEPTON)
89+ target_link_libraries (run_colvars_test_cuda PUBLIC lepton )
90+ endif ()
91+
5592set_property (TARGET run_colvars_test_cuda PROPERTY LANGUAGE CUDA)
5693# set_property(TARGET run_colvars_test_cuda PROPERTY CUDA_ARCHITECTURES OFF)
5794
0 commit comments