Move mdrun into the wrapper binary.
authorTeemu Murtola <teemu.murtola@gmail.com>
Sat, 24 Aug 2013 18:59:05 +0000 (21:59 +0300)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Fri, 13 Sep 2013 19:16:06 +0000 (21:16 +0200)
Part of #685.

Change-Id: I92d9ad5705356b2ab1e132383a5fee79ade0f4d0

CMakeLists.txt
src/programs/CMakeLists.txt
src/programs/CreateLinks.cmake.cmakein [moved from src/programs/gmx/CreateLinks.cmake.cmakein with 99% similarity]
src/programs/gmx/CMakeLists.txt [deleted file]
src/programs/gmx/legacymodules.cpp
src/programs/mdrun/CMakeLists.txt [deleted file]
src/programs/mdrun/mdrun.cpp
src/programs/mdrun/mdrun_main.h [new file with mode: 0644]

index 2e57adef754b198b515b2ff5dd52b79448e66fc4..4d88211e9a32575d910c01fa1b112dc766ba6c56 100644 (file)
@@ -1230,7 +1230,7 @@ ADD_CUSTOM_TARGET(uninstall
 include(CTest)
 mark_as_advanced(BUILD_TESTING)
 #gmxtests target builds all binaries required for running gmxtest
-add_custom_target(gmxtests DEPENDS mdrun gmx links)
+add_custom_target(gmxtests DEPENDS gmx links)
 IF(BUILD_TESTING)
     enable_testing()
     add_subdirectory(tests)
index 35ba506d47ebd4c6a9dcdec9e07eb69b7cc7ce09..4ddf1b5f36c4152989f9c7d3c0432d3e08f30016 100644 (file)
 # To help us fund GROMACS development, we humbly ask that you cite
 # the research papers on the package. Check out http://www.gromacs.org.
 
-add_subdirectory(mdrun)
-if (NOT GMX_FAHCORE)
-    add_subdirectory(gmx)
-endif (NOT GMX_FAHCORE)
+include_directories(${CMAKE_SOURCE_DIR}/src/gromacs/gmxpreprocess)
+
+file(GLOB MDRUN_SOURCES mdrun/*.c mdrun/*.cpp)
+
+if(GMX_FAHCORE)
+    add_library(fahcore ${MDRUN_SOURCES})
+else()
+    file(GLOB GMX_EXECUTABLE_SOURCES gmx/*.c gmx/*.cpp)
+    add_executable(gmx ${GMX_EXECUTABLE_SOURCES} ${MDRUN_SOURCES})
+    target_link_libraries(gmx
+        ${GMX_EXTRA_LIBRARIES} libgromacs ${GMX_EXE_LINKER_FLAGS})
+    set_target_properties(gmx PROPERTIES
+        OUTPUT_NAME "gmx${GMX_BINARY_SUFFIX}"
+        COMPILE_FLAGS "${OpenMP_C_FLAGS}")
+
+    configure_file(CreateLinks.cmake.cmakein CreateLinks.cmake @ONLY)
+    set(CREATE_LINKS_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/CreateLinks.cmake)
+    # TODO: Currently this rule is always run and recreates the symlinks;
+    # it would be best to just adapt the rest of the build such that this is
+    # never needed (for now, this makes the binary directory seem like it was
+    # earlier).
+    add_custom_target(links ALL
+        ${CMAKE_COMMAND}
+            -DBINARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+            -DQUIETLY=TRUE
+            -P ${CREATE_LINKS_SCRIPT}
+        DEPENDS gmx
+        COMMENT "Creating symlinks for alternative binary names"
+        VERBATIM)
+
+    # TODO: Create man pages (currently not working since the old mechanism
+    # requires a target for each binary to which one can add a post-build role, and
+    # the symlinks do not have such targets).
+
+    install(TARGETS gmx
+            RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+    if (GMX_SYMLINK_OLD_BINARY_NAMES)
+        install(SCRIPT ${CREATE_LINKS_SCRIPT} COMPONENT links)
+    endif ()
+endif()
similarity index 99%
rename from src/programs/gmx/CreateLinks.cmake.cmakein
rename to src/programs/CreateLinks.cmake.cmakein
index 67324d97f396e2e97007f71b748b9225e97e71ca..12dc162275348bf4938c13b0fff11df033d613df 100644 (file)
@@ -36,6 +36,7 @@
 # but this has some complications.  As the same list is also needed for
 # man page generation, this can wait for now.
 set(SYMLINK_NAMES
+    mdrun
     gmxcheck
     gmxdump
     grompp
diff --git a/src/programs/gmx/CMakeLists.txt b/src/programs/gmx/CMakeLists.txt
deleted file mode 100644 (file)
index 0240afa..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-# This file is part of the GROMACS molecular simulation package.
-#
-# Copyright (c) 2010,2012,2013, by the GROMACS development team, led by
-# David van der Spoel, Berk Hess, Erik Lindahl, and including many
-# others, as listed in the AUTHORS file in the top-level source
-# directory and at http://www.gromacs.org.
-#
-# GROMACS is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# as published by the Free Software Foundation; either version 2.1
-# of the License, or (at your option) any later version.
-#
-# GROMACS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with GROMACS; if not, see
-# http://www.gnu.org/licenses, or write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
-#
-# If you want to redistribute modifications to GROMACS, please
-# consider that scientific software is very special. Version
-# control is crucial - bugs must be traceable. We will be happy to
-# consider code for inclusion in the official distribution, but
-# derived work must not be called official GROMACS. Details are found
-# in the README & COPYING files - if they are missing, get the
-# official version at http://www.gromacs.org.
-#
-# To help us fund GROMACS development, we humbly ask that you cite
-# the research papers on the package. Check out http://www.gromacs.org.
-include_directories(${CMAKE_SOURCE_DIR}/src/gromacs/gmxpreprocess)
-
-file(GLOB GMX_EXECUTABLE_SOURCES *.c *.cpp)
-
-add_executable(gmx ${GMX_EXECUTABLE_SOURCES})
-target_link_libraries(gmx libgromacs ${GMX_EXE_LINKER_FLAGS})
-set_target_properties(gmx PROPERTIES OUTPUT_NAME "gmx${GMX_BINARY_SUFFIX}")
-
-configure_file(CreateLinks.cmake.cmakein CreateLinks.cmake @ONLY)
-set(CREATE_LINKS_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/CreateLinks.cmake)
-# TODO: Currently this rule is always run and recreates the symlinks;
-# it would be best to just adapt the rest of the build such that this is
-# never needed (for now, this makes the binary directory seem like it was
-# earlier).
-add_custom_target(links ALL
-    ${CMAKE_COMMAND}
-        -DBINARY_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
-        -DQUIETLY=TRUE
-        -P ${CREATE_LINKS_SCRIPT}
-    DEPENDS gmx
-    COMMENT "Creating symlinks for alternative binary names"
-    VERBATIM)
-
-# TODO: Create man pages (currently not working since the old mechanism
-# requires a target for each binary to which one can add a post-build role, and
-# the symlinks do not have such targets).
-# May be worth to wait until #685 and #969 are resolved; after these, it should
-# be possible to handle everything uniformly instead of having several
-# different CMake-side mechanisms.
-
-install(TARGETS gmx
-        RUNTIME DESTINATION ${BIN_INSTALL_DIR})
-if (GMX_SYMLINK_OLD_BINARY_NAMES)
-    install(SCRIPT ${CREATE_LINKS_SCRIPT} COMPONENT links)
-endif ()
index 0b85c26e0700b2d4fc3c1984cdc6743e1df9a3cc..d1c81499f8e882022001014d64927cfb5679c41e 100644 (file)
@@ -46,6 +46,8 @@
 
 #include "gromacs/gmxana/gmx_ana.h"
 
+#include "../mdrun/mdrun_main.h"
+
 extern "C"
 {
 
@@ -98,6 +100,9 @@ void registerLegacyModules(gmx::CommandLineModuleManager *manager)
     registerModule(manager, &gmx_x2top, "x2top",
                    "Generate a primitive topology from coordinates");
 
+    registerModule(manager, &gmx_mdrun, "mdrun",
+                   "Perform a simulation, do a normal mode analysis or an energy minimization");
+
     // Modules from gmx_ana.h.
     registerModule(manager, &gmx_do_dssp, "do_dssp",
                    "Assign secondary structure and calculate solvent accessible surface area");
@@ -273,7 +278,6 @@ void registerLegacyModules(gmx::CommandLineModuleManager *manager)
     // TODO: Also include binaries from other directories than src/tools/:
     //        "g_xrama|Show animated Ramachandran plots");
     //        "mdrun|finds a potential energy minimum and calculates the Hessian");
-    //        "mdrun|performs a simulation, do a normal mode analysis or an energy minimization");
     //        "mdrun|with -rerun (re)calculates energies for trajectory frames");
     //        "ngmx|Display a trajectory");
 }
diff --git a/src/programs/mdrun/CMakeLists.txt b/src/programs/mdrun/CMakeLists.txt
deleted file mode 100644 (file)
index ec64f9a..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-include_directories(${CMAKE_SOURCE_DIR}/src/gromacs/gmxpreprocess)
-
-set(MDRUN_SOURCES
-    do_gct.c      gctio.c       genalg.c    ionize.c
-    md.c          mdrun.cpp     membed.c
-    pme_loadbal.c repl_ex.c     runner.c    xutils.c)
-
-if(GMX_FAHCORE)
-    add_library(fahcore ${MDRUN_SOURCES})
-else(GMX_FAHCORE)
-    add_executable(mdrun ${MDRUN_SOURCES})
-    gmx_add_man_page(mdrun)
-    target_link_libraries(mdrun ${GMX_EXTRA_LIBRARIES} libgromacs
-        ${GMX_EXE_LINKER_FLAGS})
-    set_target_properties(mdrun PROPERTIES OUTPUT_NAME "mdrun${GMX_BINARY_SUFFIX}"
-        COMPILE_FLAGS "${OpenMP_C_FLAGS}")
-    install(TARGETS mdrun DESTINATION ${BIN_INSTALL_DIR} COMPONENT mdrun)
-
-    # Create the custom install-mdrun target
-    if (BUILD_SHARED_LIBS)
-        # If shared libraries are used, we need to install the libraries in
-        # addition to the mdrun binary.
-        add_custom_target(install-mdrun
-            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=libraries
-                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
-            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=mdrun
-                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
-            COMMENT "Installing mdrun")
-    else (BUILD_SHARED_LIBS)
-        add_custom_target(install-mdrun
-            COMMAND ${CMAKE_COMMAND} -DCOMPONENT=mdrun
-                    -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
-            COMMENT "Installing mdrun")
-    endif (BUILD_SHARED_LIBS)
-    add_dependencies(install-mdrun mdrun)
-endif(GMX_FAHCORE)
index fee73e0031802c832a6dfe9792033dfe7d109421..26bf85c812a394c2b52297b1b7a6edcedcb644de 100644 (file)
@@ -33,6 +33,8 @@
  * And Hey:
  * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
  */
+#include "mdrun_main.h"
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -51,8 +53,6 @@
 #include "gromacs/legacyheaders/statutil.h"
 #include "gromacs/legacyheaders/typedefs.h"
 
-#include "gromacs/commandline/cmdlinemodulemanager.h"
-
 int gmx_mdrun(int argc, char *argv[])
 {
     const char   *desc[] = {
@@ -739,8 +739,3 @@ int gmx_mdrun(int argc, char *argv[])
 
     return rc;
 }
-
-int main(int argc, char *argv[])
-{
-    return gmx::CommandLineModuleManager::runAsMainCMain(argc, argv, &gmx_mdrun);
-}
diff --git a/src/programs/mdrun/mdrun_main.h b/src/programs/mdrun/mdrun_main.h
new file mode 100644 (file)
index 0000000..8b19e6f
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2013, by the GROMACS development team, led by
+ * David van der Spoel, Berk Hess, Erik Lindahl, and including many
+ * others, as listed in the AUTHORS file in the top-level source
+ * directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+#ifndef GMX_PROGRAMS_MDRUN_MDRUN_H
+#define GMX_PROGRAMS_MDRUN_MDRUN_H
+
+int gmx_mdrun(int argc, char *argv[]);
+
+#endif