forked from lijiext/lammps
83 lines
2.6 KiB
Makefile
83 lines
2.6 KiB
Makefile
# -*- Makefile -*- for coupling LAMMPS to PWscf for QM/MM molecular dynamics
|
|
# adapted for the case of compiling LAMMPS with CMake. This assumes that
|
|
# LAMMPS was configured to build a shared library and installed with "make install"
|
|
# as it used the PKG config configuration file. You may need to extend
|
|
# the PKG_CONFIG_PATH environment variable to have pkgconf find the liblammps.pc file.
|
|
# This is set up for using GNU Fortran and OpenMPI to compile both LAMMPS and QE
|
|
|
|
# this file will be copied to Makefile.lammps
|
|
EXTRAMAKE = Makefile.lammps.empty
|
|
|
|
# top level directory of Quantum ESPRESSO 6.3 or later (tested up to QE 6.5)
|
|
QETOPDIR=$(HOME)/compile/espresso
|
|
|
|
# import compiler settings from Quantum ESPRESSO
|
|
sinclude $(QETOPDIR)/make.inc
|
|
|
|
# FLAGS for compiling and linking the pwqmmm.x executable
|
|
MPICXX=mpicxx
|
|
MPICXXFLAGS=-DOMPI_SKIP_MPICXX=1 -O2 -Wall -g -fPIC\
|
|
-I../../src -I$(QETOPDIR)/COUPLE/include
|
|
|
|
# location of required libraries
|
|
# part 1: hi-level libraries for building pw.x
|
|
PWOBJS = \
|
|
$(QETOPDIR)/COUPLE/src/libqecouple.a \
|
|
$(QETOPDIR)/PW/src/libpw.a \
|
|
$(QETOPDIR)/Modules/libqemod.a
|
|
# part 2: lo-level libraries for all of Q-E
|
|
LIBOBJS = \
|
|
$(QETOPDIR)/FFTXlib/libqefft.a \
|
|
$(QETOPDIR)/dft-d3/libdftd3qe.a \
|
|
$(QETOPDIR)/KS_Solvers/PPCG/libppcg.a \
|
|
$(QETOPDIR)/KS_Solvers/CG/libcg.a \
|
|
$(QETOPDIR)/KS_Solvers/Davidson/libdavid.a \
|
|
$(QETOPDIR)/UtilXlib/libutil.a \
|
|
$(QETOPDIR)/LAXlib/libqela.a \
|
|
$(QETOPDIR)/clib/clib.a \
|
|
$(QETOPDIR)/iotk/src/libiotk.a
|
|
|
|
# add support for fortran runtimes for compiler and MPI library
|
|
# those are automatically included when linking QE executables,
|
|
# since they use mpifort/mpif90 to link, but we are using the
|
|
# C++ MPI compiler wrapper instead, so those need to be added
|
|
# as a dependency for QE objects and libraries
|
|
QELIBS += -lgfortran -lmpi_mpifh
|
|
|
|
# part 3: add-on libraries and main library for LAMMPS
|
|
sinclude ../../src/Makefile.package
|
|
LAMMPSFLAGS = $(shell pkgconf liblammps --cflags)
|
|
LAMMPSLIB = $(shell pkgconf liblammps --libs)
|
|
|
|
# part 4: local QM/MM library and progams
|
|
SRC=pwqmmm.c libqmmm.c
|
|
OBJ=$(SRC:%.c=%.o)
|
|
|
|
|
|
default: libqmmm.a
|
|
|
|
all : tldeps libqmmm.a pwqmmm.x
|
|
|
|
pwqmmm.x : pwqmmm.o $(PWOBJS) $(LIBOBJS)
|
|
$(MPICXX) $(LDFLAGS) -o $@ $^ $(LAMMPSLIB) $(QELIBS) $(LIBS)
|
|
|
|
libqmmm.a: libqmmm.o
|
|
$(AR) $(ARFLAGS) $@ $^
|
|
@cp $(EXTRAMAKE) Makefile.lammps
|
|
|
|
%.o: %.c
|
|
$(MPICXX) -c $(LAMMPSFLAGS) $(MPICXXFLAGS) $< -o $@
|
|
|
|
tldeps:
|
|
( cd $(QETOPDIR) ; $(MAKE) $(MFLAGS) couple || exit 1)
|
|
$(MAKE) -C ../../src $(MFLAGS) $(LAMMPSCFG)
|
|
$(MAKE) -C ../../src $(MFLAGS) mode=lib $(LAMMPSCFG)
|
|
|
|
clean :
|
|
-rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L
|
|
|
|
# explicit dependencies
|
|
|
|
pwqmmm.o: pwqmmm.c libqmmm.h
|
|
libqmmm.o: libqmmm.c libqmmm.h
|