Merge branch release-2021 into master
[alexxy/gromacs.git] / api / nblib / CMakeLists.txt
index 51211c3d7074a56dad339d9af60cd934a650ec8e..be3cfb6e18fdadc6ab76a9dc8013a3fc305485d7 100644 (file)
 # \author Sebastian Keller <keller@cscs.ch>
 #
 
-# The following are copied directly from src/CMakeLists.txt
-set(IGNORED_CLANG_ALL_WARNINGS
-        "-Wno-c++98-compat -Wno-c++98-compat-pedantic" #No intention of C++98 compability
-        "-Wno-source-uses-openmp" #Don't warn for no-omp build
-        "-Wno-c++17-extensions"   #Allowed in attributes (compilers are required to ignore unknown attributes)
-        "-Wno-documentation-unknown-command" #Custom commands are used
-        "-Wno-covered-switch-default" #GCC gives maybe-uninitialized without default label and checks for illegal enum values.
-        "-Wno-switch-enum" # default statement for enum is OK
-
-        # These are all needed, mostly for testing code
-        "-Wno-conversion"
-        "-Wno-documentation"
-        "-Wno-double-promotion"
-        "-Wno-exit-time-destructors"
-        "-Wno-float-equal"
-        "-Wno-global-constructors"
-        "-Wno-padded"
-        "-Wno-reserved-id-macro"
-        "-Wno-shadow"
-        "-Wno-unused-macros"
-        "-Wno-weak-vtables"
-        )
-
-string(REPLACE " " ";" IGNORED_CLANG_ALL_WARNINGS "${IGNORED_CLANG_ALL_WARNINGS}")
-
 set(TESTUTILS_DIR ${PROJECT_SOURCE_DIR}/src/testutils)
 if (BUILD_TESTING)
     if(NOT GMX_DEVELOPER_BUILD)
@@ -101,6 +76,16 @@ set_target_properties(nblib PROPERTIES
         LINKER_LANGUAGE CXX
         OUTPUT_NAME "nblib")
 
+if (GMX_GPU_CUDA)
+    if(${CMAKE_VERSION} VERSION_LESS "3.17.0")
+        find_package(CUDA)
+        target_include_directories(nblib PRIVATE "${CUDA_INCLUDE_DIRS}")
+    else()
+        find_package(CUDAToolkit)
+        target_link_libraries(nblib PRIVATE CUDA::cudart)
+    endif()
+endif()
+
 target_sources(nblib
         PRIVATE
         box.cpp
@@ -110,18 +95,29 @@ target_sources(nblib
         integrator.cpp
         interactions.cpp
         molecules.cpp
+        nbnxmsetuphelpers.cpp
         particlesequencer.cpp
         particletype.cpp
         simulationstate.cpp
         topologyhelpers.cpp
         topology.cpp
+        virials.cpp
         )
 
 gmx_target_compile_options(nblib)
 
 target_link_libraries(nblib PRIVATE libgromacs)
+target_include_directories(nblib SYSTEM BEFORE PRIVATE ${PROJECT_SOURCE_DIR}/src/external/thread_mpi/include)
 target_include_directories(nblib PRIVATE ${PROJECT_SOURCE_DIR}/api)
 include_directories(BEFORE ${CMAKE_SOURCE_DIR}/api)
+target_link_libraries(nblib PRIVATE common)
+# There are transitive dependencies on the legacy GROMACS headers.
+target_link_libraries(nblib PUBLIC legacy_api)
+# TODO: Explicitly link specific modules.
+target_link_libraries(nblib PRIVATE legacy_modules)
+if (GMX_OPENMP)
+    target_link_libraries(nblib PUBLIC OpenMP::OpenMP_CXX)
+endif()
 
 install(TARGETS nblib
         EXPORT nblib