Project

General

Profile

Task #1013

Library division for tools and generic Gromacs code

Added by Teemu Murtola over 6 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
build system
Target version:
Difficulty:
uncategorized
Close

Description

Currently, http://www.gromacs.org/Developer_Zone/Programming_Guide/Library_Structure states that there will be only one library, libgromacs. In the source code, there are still two built: libgromacs and libgmxana. Do we want to merge also all the analysis tool code into libgromacs? I think that some concerns have been raised regarding the size of the library for platforms where memory is limited (e.g., BlueGene). If we merge the libraries and the size is a problem, we could possibly just add some build system features that allow building only parts of Gromacs, so that users could build a stripped-down version that runs only mdrun, for use on such platforms. In particular if we have a modular system for building the different old binaries into a single binary with #685, it shouldn't be too difficult to skip building some parts.

Even if we want to keep a separate analysis library, the division needs some work, as currently tools using the new analysis framework are built as part of libgromacs and not libgmxana. It also needs to considered where do other parts of the framework belong (the generic runner code, the selection library, other utility functions). With the new framework, most code in the tools is part of the framework, and not in the tool-specific code.

The division has an effect on #988 and #701, in particular in placing constraints what symbols we must export from the shared libraries.


Related issues

Related to GROMACS - Task #988: Definition of "public API"New
Related to GROMACS - Task #701: Add symbol visibility macrosNew

Associated revisions

Revision 8421fa36 (diff)
Added by Teemu Murtola about 6 years ago

Merge libgmxana into libgromacs.

- Move contents of src/tools/ into src/gromacs/gmxana/, except for
g_tune_pme.c and g_pme_error.c.
- Delete unused src/tools/g_membed.c.
- Adjust the build system accordingly, removing references to gmxana.
- Merge contents of libgmxana.pc into libgromacs.pc and remove the
former.
- Move src/gromacs/legacyheaders/gmx_ana.h into src/gromacs/gmxana/ and
adjust files that include it accordingly. Removed a few unnecessary
inclusions of this header. Don't install it, as it doesn't do much
good.
- Merge src/contrib/g_sdf.c into src/contrib/gmx_sdf.c to make it
independent of gmx_ana.h. Remove gmx_sdf() from gmx_ana.h.

Closes #1013.

Change-Id: I34ba52fc938823833103123c8ada06d169abf7de

Revision 9734c9fa (diff)
Added by Teemu Murtola almost 6 years ago

Merge libgmxana into libgromacs.

- Move contents of src/tools/ into src/gromacs/gmxana/, except for
g_tune_pme.c and g_pme_error.c.
- Delete unused src/tools/g_membed.c.
- Adjust the build system accordingly, removing references to gmxana.
- Merge contents of libgmxana.pc into libgromacs.pc and remove the
former.
- Move src/gromacs/legacyheaders/gmx_ana.h into src/gromacs/gmxana/ and
adjust files that include it accordingly. Removed a few unnecessary
inclusions of this header. Don't install it, as it doesn't do much
good.
- Merge src/contrib/g_sdf.c into src/contrib/gmx_sdf.c to make it
independent of gmx_ana.h. Remove gmx_sdf() from gmx_ana.h.

Closes #1013.

Change-Id: I34ba52fc938823833103123c8ada06d169abf7de

History

#1 Updated by Teemu Murtola about 6 years ago

  • Assignee set to Teemu Murtola

I assume from a few e-mails in different mailing lists that the decision is to go at least initially with a single monolithic library, i.e., merging libgmxana to libgromacs. I can volunteer to do the initial merge, after all the 4.6 merges into master are merged in and uncrustify and copyright changes have been applied.

I think this issue can be closed after libgmxana no longer exists; any additional implementation or additional build system features as suggested in the description can be implemented as separate tasks.

#2 Updated by Teemu Murtola about 6 years ago

  • Description updated (diff)
  • Status changed from New to Closed

#3 Updated by Teemu Murtola about 5 years ago

  • Project changed from Source code reorganization to GROMACS
  • Description updated (diff)
  • Category set to build system

Also available in: Atom PDF