Unverified Commit 437c0e59 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1724 from lammps/lepton-cxx11-handling

Upgrade Lepton library, handle its C++11 requirement
parents 7d5bf968 2c9ae7ab
Loading
Loading
Loading
Loading
+6 −10
Original line number Diff line number Diff line
@@ -322,13 +322,14 @@ endif()
include(Packages/KSPACE)
include(Packages/PYTHON)
include(Packages/VORONOI)
include(Packages/USER-SCAFACOS)
include(Packages/USER-PLUMED)
include(Packages/USER-COLVARS)
include(Packages/USER-MOLFILE)
include(Packages/USER-NETCDF)
include(Packages/USER-SMD)
include(Packages/USER-QUIP)
include(Packages/USER-PLUMED)
include(Packages/USER-QMMM)
include(Packages/USER-QUIP)
include(Packages/USER-SCAFACOS)
include(Packages/USER-SMD)
include(Packages/USER-VTK)
include(Packages/KIM)
include(Packages/LATTE)
@@ -418,8 +419,7 @@ endforeach()
##############################################
# add lib sources of (simple) enabled packages
############################################
foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-COLVARS USER-H5MD
  USER-QMMM)
foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD USER-QMMM)
  if(PKG_${SIMPLE_LIB})
    string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}")
    string(TOLOWER "${PKG_LIB}" PKG_LIB)
@@ -433,10 +433,6 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-COLVARS USER-H5MD
      target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include)
    elseif(PKG_LIB STREQUAL h5md)
      target_include_directories(h5md PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/h5md/include ${HDF5_INCLUDE_DIRS})
    elseif(PKG_LIB STREQUAL colvars)
      target_compile_options(colvars PRIVATE -DLEPTON)
      target_include_directories(colvars PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton/include)
      target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
    else()
      target_include_directories(${PKG_LIB} PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB})
    endif()
+42 −0
Original line number Diff line number Diff line
if(PKG_USER-COLVARS)

  set(COLVARS_SOURCE_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars)

  file(GLOB COLVARS_SOURCES ${COLVARS_SOURCE_DIR}/[^.]*.cpp)

  # Build Lepton by default
  set(COLVARS_LEPTON_DEFAULT ON)
  # but not if C++11 is disabled per user request
  if(DEFINED DISABLE_CXX11_REQUIREMENT)
    if(DISABLE_CXX11_REQUIREMENT)
      set(COLVARS_LEPTON_DEFAULT OFF)
    endif()
  endif()

  option(COLVARS_LEPTON "Build and link the Lepton library" ${COLVARS_LEPTON_DEFAULT})

  # Verify that the user's choice is consistent
  if(DEFINED DISABLE_CXX11_REQUIREMENT)
    if((DISABLE_CXX11_REQUIREMENT) AND (COLVARS_LEPTON))
      message(FATAL_ERROR "Building the Lepton library requires C++11 or later.")
    endif()
  endif()

  if(COLVARS_LEPTON)
    set(LEPTON_DIR ${LAMMPS_LIB_SOURCE_DIR}/colvars/lepton)
    file(GLOB LEPTON_SOURCES ${LEPTON_DIR}/src/[^.]*.cpp)
    add_library(lepton STATIC ${LEPTON_SOURCES})
    target_include_directories(lepton PRIVATE ${LEPTON_DIR}/include)
  endif()

  add_library(colvars STATIC ${COLVARS_SOURCES})
  target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
  list(APPEND LAMMPS_LINK_LIBS colvars)

  if(COLVARS_LEPTON)
    list(APPEND LAMMPS_LINK_LIBS lepton)
    target_compile_options(colvars PRIVATE -DLEPTON)
    target_include_directories(colvars PUBLIC ${LEPTON_DIR}/include)
  endif()

endif()
+12 −8
Original line number Diff line number Diff line
@@ -52,25 +52,29 @@ LEPTON_SRCS = \
	lepton/src/ParsedExpression.cpp lepton/src/ExpressionProgram.cpp    \
	lepton/src/Operation.cpp lepton/src/Parser.cpp

LEPTON_OBJS = \
	lepton/src/CompiledExpression.o lepton/src/ExpressionTreeNode.o \
	lepton/src/ParsedExpression.o lepton/src/ExpressionProgram.o    \
	lepton/src/Operation.o lepton/src/Parser.o

COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) $(LEPTON_OBJS)
# Allow to selectively turn off Lepton
ifeq ($(ENABLE_LEPTON),no)
LEPTON_INCFLAGS = 
COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o)
else
LEPTON_INCFLAGS = -Ilepton/include -DLEPTON
COLVARS_OBJS = $(COLVARS_SRCS:.cpp=.o) $(LEPTON_SRCS:.cpp=.o)
endif


%.o: %.cpp
	$(CXX) $(CXXFLAGS) $(COLVARS_INCFLAGS) -Ilepton/include -DLEPTON -c -o $@ $<
	$(CXX) $(CXXFLAGS) $(COLVARS_INCFLAGS) $(LEPTON_INCFLAGS) -c -o $@ $<

$(COLVARS_LIB):	Makefile.deps $(COLVARS_OBJS)
	$(AR) $(ARFLAGS) $(COLVARS_LIB) $(COLVARS_OBJS) $(LEPTON_OBJS)
	$(AR) $(ARFLAGS) $(COLVARS_LIB) $(COLVARS_OBJS)


Makefile.deps: $(COLVARS_SRCS)
	@echo > $@
	@for src in $^ ; do \
	  obj=`basename $$src .cpp`.o ; \
	  $(CXX) -MM $(COLVARS_INCFLAGS)  -Ilepton/include -DLEPTON \
	  $(CXX) -MM $(COLVARS_INCFLAGS)  $(LEPTON_INCFLAGS) \
	    -MT '$$(COLVARS_OBJ_DIR)'$$obj $$src >> $@ ; \
	  done

+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ COLVARS_LIB = libcolvars.a
COLVARS_OBJ_DIR =

CXX =		g++
CXXFLAGS =	-O2 -g -Wall -fPIC -funroll-loops
CXXFLAGS =	-std=c++0x -O2 -g -Wall -fPIC -funroll-loops
AR =		ar
ARFLAGS =	-rscv
SHELL =		/bin/sh
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,9 @@ settings in Makefile.common should work.
Note: some Colvars functions use the Lepton mathematical expression parser,
which is here included (no additional steps required).  For more details, see:
  https://simtk.org/projects/lepton
Starting from 2019-06-02, Lepton requires C++11.  Please see:
  https://colvars.github.io/README-c++11.html
  https://lammps.sandia.gov/doc/Build_settings.html#cxx11


## Documentation
Loading