# library build -*- makefile -*- for colvars module

# which file will be copied to Makefile.lammps

EXTRAMAKE = Makefile.lammps.empty

# ------ SETTINGS ------

CXX =		g++
CXXFLAGS =	-O2 -g -fPIC -funroll-loops # -DCOLVARS_DEBUG
ARCHIVE =	ar
ARCHFLAG =	-rscv
SHELL =		/bin/sh

# ------ DEFINITIONS ------

SRC = colvaratoms.cpp colvarbias_abf.cpp colvarbias_alb.cpp colvarbias.cpp  \
 colvarbias_histogram.cpp colvarbias_meta.cpp colvarbias_restraint.cpp      \
 colvarcomp_angles.cpp colvarcomp_coordnums.cpp colvarcomp.cpp              \
 colvarcomp_distances.cpp colvarcomp_protein.cpp colvarcomp_rotations.cpp   \
 colvar.cpp colvargrid.cpp colvarmodule.cpp colvarparse.cpp                 \
 colvarscript.cpp colvartypes.cpp colvarvalue.cpp

LIB = libcolvars.a
OBJ = $(SRC:.cpp=.o)
EXE = #colvars_standalone

# ------ MAKE PROCEDURE ------

default: $(LIB) $(EXE) Makefile.lammps

Makefile.lammps:
	@cp $(EXTRAMAKE) Makefile.lammps

$(LIB):	$(OBJ)
	$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)

colvars_standalone: colvars_main.o colvarproxy_standalone.o $(LIB)
	$(CXX) -o $@ $(CXXFLAGS) $^

# ------ MAKE FLAGS ------

.SUFFIXES:
.SUFFIXES: .cpp .o

.PHONY: default clean

# ------ COMPILE RULES ------

.cpp.o:
	$(CXX) $(CXXFLAGS) -c $<

# ------ DEPENDENCIES ------
#
colvaratoms.o: colvaratoms.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvarparse.h colvaratoms.h
colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h colvartypes.h \
 colvarproxy.h colvarvalue.h colvar.h colvarparse.h colvarbias_abf.h \
 colvarbias.h colvargrid.h
colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h colvartypes.h \
 colvarproxy.h colvarvalue.h colvarbias_alb.h colvar.h colvarparse.h \
 colvarbias_restraint.h colvarbias.h
colvarbias.o: colvarbias.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvarbias.h colvar.h colvarparse.h
colvarbias_histogram.o: colvarbias_histogram.cpp colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \
 colvarbias_histogram.h colvarbias.h colvargrid.h
colvarbias_meta.o: colvarbias_meta.cpp colvar.h colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h \
 colvarbias_meta.h colvarbias.h colvargrid.h
colvarbias_restraint.o: colvarbias_restraint.cpp colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvarbias_restraint.h \
 colvarbias.h colvar.h colvarparse.h
colvarcomp_angles.o: colvarcomp_angles.cpp colvarmodule.h colvartypes.h \
 colvarproxy.h colvarvalue.h colvar.h colvarparse.h colvarcomp.h \
 colvaratoms.h
colvarcomp_coordnums.o: colvarcomp_coordnums.cpp colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvaratoms.h \
 colvar.h colvarcomp.h
colvarcomp.o: colvarcomp.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvar.h colvarparse.h colvarcomp.h colvaratoms.h
colvarcomp_distances.o: colvarcomp_distances.cpp colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvar.h \
 colvarcomp.h colvaratoms.h
colvarcomp_protein.o: colvarcomp_protein.cpp colvarmodule.h colvartypes.h \
 colvarproxy.h colvarvalue.h colvarparse.h colvar.h colvarcomp.h \
 colvaratoms.h
colvarcomp_rotations.o: colvarcomp_rotations.cpp colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvar.h \
 colvarcomp.h colvaratoms.h
colvar.o: colvar.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvarparse.h colvar.h colvarcomp.h colvaratoms.h \
 colvarscript.h colvarbias.h
colvargrid.o: colvargrid.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvarparse.h colvar.h colvarcomp.h colvaratoms.h \
 colvargrid.h
colvarmodule.o: colvarmodule.cpp colvarmodule.h colvartypes.h \
 colvarproxy.h colvarvalue.h colvarparse.h colvar.h colvarbias.h \
 colvarbias_abf.h colvargrid.h colvarbias_alb.h colvarbias_restraint.h \
 colvarbias_histogram.h colvarbias_meta.h colvarscript.h
colvarparse.o: colvarparse.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvarparse.h
colvarscript.o: colvarscript.cpp colvarscript.h colvarmodule.h \
 colvartypes.h colvarproxy.h colvarvalue.h colvarbias.h colvar.h \
 colvarparse.h
colvartypes.o: colvartypes.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h colvarparse.h
colvarvalue.o: colvarvalue.cpp colvarmodule.h colvartypes.h colvarproxy.h \
 colvarvalue.h

# ------ CLEAN ------

clean:
	-rm *.o *~ $(LIB)