include ../../config.h

CPPTRAJ_FLAGS=-I$(INCDIR) $(COPTFLAGS) $(CFLAGS) $(NETCDFINC)
# The following are needed for the ptraj_analyze routines
PTRAJ_OBJECTS=thermo.o pubfft.o
# The EXTERNAL_LIBS line is used for triggering dependencies. It contains the
# actual locations of the arpack, lapack, blas, and netcdf libraries as 
# installed by AmberTools. Since the NETCDFLIB / FLIBS_PTRAJ vars can now just
# containe -lnetcdf / -larpack etc this avoids triggering an unnecessary build 
# of these libraries each time 'make' is invoked.
# NOTE: Since -nobintraj is possible and the dependency for netcdf is not
#       set correctly by configure there is no way this can work for netcdf 
EXTERNAL_LIBS=$(LIBDIR)/libarpack.a $(LIBDIR)/liblapack.a $(LIBDIR)/libblas.a

include cpptrajfiles

all: cpptraj$(SFX)

install: cpptraj$(SFX) 
	mv cpptraj$(SFX) $(BINDIR)/ 

findDepend: FindDepend.o
	$(CXX) -Wall -o findDepend FindDepend.o

depend: findDepend
	./findDepend $(SOURCE) > cpptrajdepend

dependclean:
	-/bin/rm FindDepend.o
	-/bin/rm findDepend

cpptraj$(SFX): $(NETCDF) $(OBJECTS) $(PTRAJ_OBJECTS) $(EXTERNAL_LIBS) 
	$(CXX) $(LDFLAGS) -o cpptraj$(SFX) $(OBJECTS) $(PTRAJ_OBJECTS) \
               -L$(LIBDIR) $(NETCDFLIB) $(ZLIB) $(BZLIB) $(FLIBS_PTRAJ)

$(INCDIR)/netcdf.mod: ../../netcdf_config.log
	cd ../../netcdf/src && $(MAKE) install

$(LIBDIR)/libarpack.a:
	cd ../../arpack && $(MAKE) install

$(LIBDIR)/liblapack.a:
	cd ../../lapack && $(MAKE) $(LAPACK)

$(LIBDIR)/libblas.a:
	cd ../../blas && $(MAKE) $(BLAS)

thermo.o:  ../../ptraj/thermo.F90
	$(FC) $(FPPFLAGS) -c $(FREEFORMAT_FLAG) $(FOPTFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ ../../ptraj/thermo.F90

pubfft.o:  ../../ptraj/pubfft.F90
	$(FC) $(FPPFLAGS) -c $(FREEFORMAT_FLAG) $(FOPTFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ ../../ptraj/pubfft.F90

.c.o:
	$(CC) -c $(CPPTRAJ_FLAGS) -o $@ $<

.cpp.o:
	$(CXX) -c $(CPPTRAJ_FLAGS) -o $@ $<

clean:
	/bin/rm -f $(OBJECTS) $(PTRAJ_OBJECTS) cpptraj$(SFX)

uninstall:
	/bin/rm -f $(BINDIR)/cpptraj$(SFX)

# Header dependencies
include cpptrajdepend
