Fix mdrun-only build
authorMark Abraham <mark.j.abraham@gmail.com>
Wed, 25 Nov 2020 09:04:34 +0000 (10:04 +0100)
committerPaul Bauer <paul.bauer.q@gmail.com>
Fri, 4 Dec 2020 08:03:05 +0000 (08:03 +0000)
Recent changes to include path setup didn't handle the mdrun-only
build. The name clash between the new src/gromacs/mdrun interface
library and the former src/programs/mdrun executable is fixed. When
doing a shared-library mdrun-only build, the dependencies of
libgromacs also need to be limited in the same way as the set of
modules added to libgromacs.

src/gromacs/CMakeLists.txt
src/programs/CMakeLists.txt

index 8212a66a3daa871b404df9af8138c84496bc0c9e..c61edcce0db0afb7695ac9a0c8096949ca56639e 100644 (file)
@@ -108,6 +108,8 @@ add_subdirectory(imd)
 add_subdirectory(compat)
 add_subdirectory(mimic)
 add_subdirectory(modularsimulator)
+# Note that this subset should match the subset of module
+# BUILD_INTERFACEs added to libgromacs below.
 if (NOT GMX_BUILD_MDRUN_ONLY)
     add_subdirectory(gmxana)
     add_subdirectory(gmxpreprocess)
@@ -333,21 +335,16 @@ target_link_libraries(libgromacs PUBLIC legacy_api)
 # responsibility for setting this up will move to the respective
 # modules.
 target_link_libraries(libgromacs PRIVATE
-                      $<BUILD_INTERFACE:analysisdata>
                       $<BUILD_INTERFACE:applied_forces>
                       $<BUILD_INTERFACE:commandline>
                       $<BUILD_INTERFACE:compat>
-                      $<BUILD_INTERFACE:coordinateio>
-                      $<BUILD_INTERFACE:correlationfunctions>
                       $<BUILD_INTERFACE:domdec>
 #                      $<BUILD_INTERFACE:energyanalysis>
                       $<BUILD_INTERFACE:essentialdynamics>
                       $<BUILD_INTERFACE:ewald>
                       $<BUILD_INTERFACE:fft>
                       $<BUILD_INTERFACE:fileio>
-                      $<BUILD_INTERFACE:gmxana>
                       $<BUILD_INTERFACE:gmxlib>
-                      $<BUILD_INTERFACE:gmxpreprocess>
                       $<BUILD_INTERFACE:gpu_utils>
                       $<BUILD_INTERFACE:hardware>
                       $<BUILD_INTERFACE:imd>
@@ -370,17 +367,28 @@ target_link_libraries(libgromacs PRIVATE
                       $<BUILD_INTERFACE:restraint>
                       $<BUILD_INTERFACE:selection>
                       $<BUILD_INTERFACE:simd>
-                      $<BUILD_INTERFACE:statistics>
                       $<BUILD_INTERFACE:swap>
                       $<BUILD_INTERFACE:tables>
                       $<BUILD_INTERFACE:taskassignment>
                       $<BUILD_INTERFACE:timing>
-                      $<BUILD_INTERFACE:tools>
                       $<BUILD_INTERFACE:topology>
                       $<BUILD_INTERFACE:trajectory>
-                      $<BUILD_INTERFACE:trajectoryanalysis>
                       $<BUILD_INTERFACE:utility>
                       )
+# Note that this subset should match the subset of module
+# subdirectories added above.
+if (NOT GMX_BUILD_MDRUN_ONLY)
+    target_link_libraries(libgromacs PRIVATE
+                          $<BUILD_INTERFACE:analysisdata>
+                          $<BUILD_INTERFACE:coordinateio>
+                          $<BUILD_INTERFACE:correlationfunctions>
+                          $<BUILD_INTERFACE:gmxana>
+                          $<BUILD_INTERFACE:gmxpreprocess>
+                          $<BUILD_INTERFACE:statistics>
+                          $<BUILD_INTERFACE:tools>
+                          $<BUILD_INTERFACE:trajectoryanalysis>
+                          )
+endif()
 if (GMX_OPENMP)
     target_link_libraries(libgromacs PUBLIC OpenMP::OpenMP_CXX)
 endif()
index aa8a144a22c497aec57b2d4bb5b624242f80b6f3..56a21bd394fa2b85aab7faa9a50b08c1acfebe90 100644 (file)
@@ -53,17 +53,21 @@ if(GMX_FAHCORE)
     add_library(fahcore $<TARGET_OBJECTS:mdrun_objlib>)
     target_link_libraries(fahcore PRIVATE ${GMX_COMMON_LIBRARIES} legacy_api)
 elseif(GMX_BUILD_MDRUN_ONLY)
-    add_executable(mdrun $<TARGET_OBJECTS:mdrun_objlib> mdrun_main.cpp)
-    gmx_target_compile_options(mdrun)
-    target_include_directories(mdrun SYSTEM BEFORE PRIVATE ${PROJECT_SOURCE_DIR}/src/external/thread_mpi/include)
-    target_compile_definitions(mdrun PRIVATE HAVE_CONFIG_H)
-    target_link_libraries(mdrun libgromacs
-        ${GMX_COMMON_LIBRARIES}
-        ${GMX_EXE_LINKER_FLAGS})
+    add_executable(mdrun-only $<TARGET_OBJECTS:mdrun_objlib> mdrun_main.cpp)
+    gmx_target_compile_options(mdrun-only)
+    target_include_directories(mdrun-only SYSTEM BEFORE PRIVATE ${PROJECT_SOURCE_DIR}/src/external/thread_mpi/include)
+    target_compile_definitions(mdrun-only PRIVATE HAVE_CONFIG_H)
+    target_link_libraries(mdrun-only PRIVATE
+                          common
+                          legacy_modules
+                          libgromacs
+                          ${GMX_COMMON_LIBRARIES}
+                          ${GMX_EXE_LINKER_FLAGS}
+                          )
     set(BINARY_NAME "mdrun${GMX_BINARY_SUFFIX}")
-    set_target_properties(mdrun PROPERTIES
+    set_target_properties(mdrun-only PROPERTIES
         OUTPUT_NAME "${BINARY_NAME}")
-    install(TARGETS mdrun DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT mdrun)
+    install(TARGETS mdrun-only DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT mdrun-only)
     file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gmx-completion-${BINARY_NAME}.bash
          "complete -o nospace -F _gmx_mdrun_compl ${BINARY_NAME}")
     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gmx-completion-${BINARY_NAME}.bash