#
#   Makefile for MARBLE
#
include ../Makefile.machine
include ../Makefile.version
#
PROGRAM		= marble.$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBMINOR_VERSION)$(PATCH_LEVEL)$(PARCH)
#
PROGRAMNV	= marble
#
CC		= $(PCC)
INSTALL		= cp -f
#

DEFS   =	-DTIME_FORCE -DMPI -DMPI_SDMD -DOVERLAP
INCS   =	-I$(FFTW_INCLUDE)
CFLAGS = 	$(PCOPTFLAG) $(PCOMPFLAG) $(PCFLAG) $(DEFS) $(INCS)
PLDFLAGS =	$(PLDFLAG) $(PCOPTFLAG) $(PCOMPFLAG)
PLIBFLAGS =	$(PLIBFLAG) 
#
LIBS  =		$(FFTW_LIB)
##
OBJS  = 	angle.o \
		atom.o \
		bond.o \
		boundary.o \
		crd_file.o \
		ctrl.o \
		dihedral.o \
		extra_pot.o \
		fft3d.o \
		fit.o \
		linked_cell.o \
		main.o \
		md_system.o \
		mdat_file.o \
		min.o \
		misc.o \
		mpi_setup.o \
		nmr.o \
		nonbond.o \
		parallel.o \
		pdb.o \
		pt_ctrl.o \
		rattle.o \
		rigid_mol.o \
                sdmd.o \
                sdmd_setup.o \
                sdmd_ewald.o \
		ewald.o 
##
SRCS	      = $(OBJS:.o=.c)
##
#
##
all:		$(PROGRAM)

$(PROGRAM):     $(OBJS) 
		$(PLD) $(PLDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM) $(PLIBFLAGS)
#
clean:;		rm -f $(OBJS) core
#
all_clean:;	rm -f $(OBJS) core $(PROGRAM) *~
#
install:	$(PROGRAM)
		mkdir -p $(BINDIR)
		rm -f $(BINDIR)/$(PROGRAM)
		$(INSTALL) $(PROGRAM) $(BINDIR)
#
current:
		rm -f $(BINDIR)/$(PROGRAMNV)
		cd $(BINDIR) ; ln -s $(PROGRAM) $(PROGRAMNV)
#
depend:		
		makedepend -Y -I. $(DEFS) $(SRCS)
##
main.o:		main.c
		$(CC) $(CFLAGS) $(VER_FLAG) -c main.c
##
.f.o:
	$(PFC) $(FLAGS) -c $*.f
.c.o:
	$(PCC) $(CFLAGS) -c $*.c


# DO NOT DELETE

angle.o: misc.h mpi_global.h atom.h angle.h
atom.o: misc.h mpi_global.h atom.h pdb.h
bond.o: misc.h mpi_global.h atom.h bond.h
boundary.o: misc.h mpi_global.h atom.h boundary.h
crd_file.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
crd_file.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
crd_file.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h
ctrl.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
ctrl.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
ctrl.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h min.h sdmd.h ctrl.h
dihedral.o: misc.h mpi_global.h atom.h boundary.h linked_cell.h nonbond.h
dihedral.o: dihedral.h
extra_pot.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
extra_pot.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
extra_pot.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h parallel.h
extra_pot.o: sdmd.h
fft3d.o: misc.h mpi_global.h fft3d.h
fit.o: misc.h mpi_global.h fit.h
linked_cell.o: misc.h mpi_global.h atom.h boundary.h linked_cell.h nonbond.h
main.o: mpi_global.h md_system.h misc.h atom.h bond.h angle.h boundary.h
main.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
main.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h ctrl.h
md_system.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
md_system.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
md_system.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h parallel.h
md_system.o: sdmd.h
mdat_file.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
mdat_file.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
mdat_file.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h
min.o: misc.h mpi_global.h md_system.h atom.h bond.h angle.h boundary.h
min.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
min.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h min.h parallel.h
min.o: sdmd.h
misc.o: misc.h mpi_global.h
mpi_setup.o: misc.h mpi_global.h
nmr.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
nmr.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
nmr.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h parallel.h sdmd.h
nonbond.o: misc.h mpi_global.h atom.h boundary.h linked_cell.h nonbond.h
nonbond.o: nonbond_direct.h
parallel.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
parallel.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
parallel.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h parallel.h
pdb.o: misc.h mpi_global.h pdb.h atom.h
pt_ctrl.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
pt_ctrl.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
pt_ctrl.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h
rattle.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
rattle.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
rattle.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h
rigid_mol.o: misc.h mpi_global.h atom.h bond.h angle.h boundary.h
rigid_mol.o: linked_cell.h rigid_mol.h
sdmd.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h boundary.h
sdmd.o: linked_cell.h nonbond.h dihedral.h rigid_mol.h ewald.h fit.h
sdmd.o: extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h parallel.h sdmd.h
sdmd_setup.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h
sdmd_setup.o: boundary.h linked_cell.h nonbond.h dihedral.h rigid_mol.h
sdmd_setup.o: ewald.h fit.h extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h
sdmd_setup.o: parallel.h sdmd.h
sdmd_ewald.o: md_system.h misc.h mpi_global.h atom.h bond.h angle.h
sdmd_ewald.o: boundary.h linked_cell.h nonbond.h dihedral.h rigid_mol.h
sdmd_ewald.o: ewald.h fit.h extra_pot.h rattle.h pt_ctrl.h extra_pot_func.h
sdmd_ewald.o: parallel.h sdmd.h nonbond_direct.h
ewald.o: misc.h mpi_global.h atom.h boundary.h linked_cell.h nonbond.h
ewald.o: ewald.h nonbond_direct.h
