Skip to content

Commit

Permalink
Add Colvars module version 2023-10-23
Browse files Browse the repository at this point in the history
  • Loading branch information
giacomofiorin committed Nov 7, 2023
1 parent 37a4324 commit 57a15a0
Show file tree
Hide file tree
Showing 121 changed files with 51,822 additions and 9 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build_cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
matrix:
config:
- {
name: "Windows 2019 MSVC", artifact: "Windows-MSVC.7z",
name: "Windows Latest MSVC", artifact: "Windows-MSVC.7z",
os: windows-2019,
cc: "cl", cxx: "cl",
environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat",
Expand All @@ -30,8 +30,8 @@ jobs:
gpu_var: "Off"
}
- {
name: "macOS Latest gcc with OpenCL", artifact: "macOS-gcc-OpenCL.7z",
os: macos-latest,
name: "macOS 11 gcc with OpenCL", artifact: "macOS-gcc-OpenCL.7z",
os: macos-11, # Don't upgrade to macOS 12, see Issue #4646
cc: "gcc-10", cxx: "g++-10",
gpu_var: "OpenCL"

Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,9 @@ include(gmxManageTNG)

include(gmxManageLmfit)

include(gmxManageColvars)
include(gmxManageLepton)

# The earliest version of the CUDA toolkit that supports c++14 is 9.0
set(REQUIRED_CUDA_VERSION 9.0)
set(REQUIRED_CUDA_COMPUTE_CAPABILITY 3.0)
Expand Down
57 changes: 57 additions & 0 deletions cmake/gmxManageColvars.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#
# This file is part of the GROMACS molecular simulation package.
#
# Copyright 2023- The GROMACS Authors
# and the project initiators Erik Lindahl, Berk Hess and David van der Spoel.
# Consult the AUTHORS/COPYING files and https://www.gromacs.org for details.
#
# 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
# https://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 https://www.gromacs.org.
#
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out https://www.gromacs.org.

# Build Colvars library as bundled in a GROMACS worktree; not supporting external linkage yet
gmx_option_multichoice(GMX_USE_COLVARS
"Build the collective variables (Colvars) library interfaced with GROMACS"
INTERNAL
INTERNAL NONE)
mark_as_advanced(GMX_USE_COLVARS)

function(gmx_manage_colvars)
if(GMX_USE_COLVARS STREQUAL "INTERNAL")
file(GLOB COLVARS_SOURCES ${PROJECT_SOURCE_DIR}/src/external/colvars/*.cpp)
add_library(colvars OBJECT ${COLVARS_SOURCES})
# Set correctly the value of __cplusplus, which MSVC doesn't do by default
target_compile_options(colvars PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/Zc:__cplusplus>)
set(HAVE_COLVARS 1 CACHE INTERNAL "Is Colvars available?")
else()
set(HAVE_COLVARS 0 CACHE INTERNAL "Is Colvars available?")
endif()
endfunction()

function(gmx_include_colvars_headers)
if(GMX_USE_COLVARS STREQUAL "INTERNAL")
target_include_directories(libgromacs PRIVATE ${PROJECT_SOURCE_DIR}/src/external/colvars)
endif()
endfunction()
22 changes: 22 additions & 0 deletions cmake/gmxManageLepton.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# This file is part of the Collective Variables module (Colvars).
# The original version of Colvars and its updates are located at:
# https://github.com/Colvars/colvars
# Please update all Colvars source files before making any changes.
# If you wish to distribute your changes, please submit them to the
# Colvars repository at GitHub.

function(gmx_manage_lepton)

# Add Lepton library, which is developed and distributed as part of OpenMM:
# https://github.com/openmm/openmm

file(GLOB LEPTON_SOURCES ${PROJECT_SOURCE_DIR}/src/external/lepton/src/*.cpp)
add_library(lepton OBJECT ${LEPTON_SOURCES})

target_include_directories(lepton PRIVATE ${PROJECT_SOURCE_DIR}/src/external/lepton/include)
target_compile_options(lepton PRIVATE -DLEPTON_BUILDING_STATIC_LIBRARY)

# Set flags so that Colvars can leverage Lepton functionality
target_include_directories(colvars PRIVATE ${PROJECT_SOURCE_DIR}/src/external/lepton/include)
target_compile_options(colvars PRIVATE -DLEPTON -DLEPTON_USE_STATIC_LIBRARIES)
endfunction()
2 changes: 1 addition & 1 deletion cmake/gmxVersionInfo.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ set(REGRESSIONTEST_MD5SUM "ff0a01050c3c8fd77806b7c70b423fc3" CACHE INTERNAL "MD5
# If you are distributing a patch to GROMACS, then this change would
# be great as part of your patch. Otherwise for personal use, you can
# also just set a CMake cache variable.
set(GMX_VERSION_STRING_OF_FORK "" CACHE INTERNAL
set(GMX_VERSION_STRING_OF_FORK "Colvars-2023-10-23" CACHE INTERNAL
"Version string for forks of GROMACS to set to describe themselves")
mark_as_advanced(GMX_VERSION_STRING_OF_FORK)
if (GMX_VERSION_STRING_OF_FORK)
Expand Down
Loading

0 comments on commit 57a15a0

Please sign in to comment.