
# You can change these.

# F90 compilers: gfortran: GNU; ifort: Intel; pgf90: Portland Group Inc (PGI)
F90    = ifort
# -O means optimize for performance;
# -g -pg means save information about percentage
#   of runtime spent in each routine.
FFLAGS = -O2 -g -pg
# -UDEBUG: don't show debugging output
# -DDEBUG: do    show debugging output
DEBUG  = -UDEBUG

# You shouldn't change the rest of this file unless you know what you're doing.

NBODY_UTILITY_F90        = nbody_utility.f90
NBODY_PARTICLE_DATA_F90  = nbody_particle_data.f90
NBODY_FORCE_F90          = nbody_force.f90
NBODY_PARTICLE_F90       = nbody_particle.f90
NBODY_F90                = nbody.f90
NBODY_UTILITY_MOD        = nbody_utility.mod
NBODY_UTILITY_MODS       =
NBODY_PARTICLE_DATA_MOD  = nbody_particle_data.mod
NBODY_PARTICLE_DATA_MODS = ${NBODY_UTILITY_MOD} ${NBODY_UTILITY_MODS}
NBODY_FORCE_MOD          = nbody_force.mod
NBODY_FORCE_MODS         = ${NBODY_PARTICLE_DATA_MOD} \
                           ${NBODY_PARTICLE_DATA_MODS}
NBODY_PARTICLE_MOD       = nbody_particle.mod
NBODY_PARTICLE_MODS      = ${NBODY_FORCE_MOD} ${NBODY_FORCE_MODS}
NBODY_UTILITY_O          = nbody_utility.o
NBODY_PARTICLE_DATA_O    = nbody_particle_data.o
NBODY_FORCE_O            = nbody_force.o
NBODY_PARTICLE_O         = nbody_particle.o
NBODY_O                  = nbody.o
NBODY_MODS               = ${NBODY_UTILITY_MOD} ${NBODY_PARTICLE_DATA_MOD} \
                           ${NBODY_FORCE_MOD}   ${NBODY_PARTICLE_MOD}
NBODY_OS                 = ${NBODY_UTILITY_O}   ${NBODY_PARTICLE_DATA_O} \
                           ${NBODY_FORCE_O}     ${NBODY_PARTICLE_O}
NBODY_EXE                = nbody

LIBS        = -lm

EXECUTABLE  = ${NBODY_EXE}
EXECUTABLES = ${EXECUTABLE}

all:	${EXECUTABLES}

clean:	
	rm -f *.[aodD] *.[mM][oO][dD] ${EXECUTABLES}

${NBODY_EXE}:		${NBODY_OS} ${NBODY_O}
	${F90} ${FFLAGS} ${DEBUG} -o ${NBODY_EXE} \
	  ${NBODY_O} ${NBODY_OS} ${LIBS}

${NBODY_O}:		${NBODY_F90} ${NBODY_MODS}
	${F90} ${FFLAGS} ${DEBUG} -c ${NBODY_F90}

${NBODY_PARTICLE_O}:	${NBODY_PARTICLE_F90} ${NBODY_PARTICLE_MODS}
	${F90} ${FFLAGS} ${DEBUG} -c ${NBODY_PARTICLE_F90}

${NBODY_FORCE_O}:	${NBODY_FORCE_F90} ${NBODY_FORCE_MODS}
	${F90} ${FFLAGS} ${DEBUG} -c ${NBODY_FORCE_F90}

${NBODY_PARTICLE_DATA_O}:	${NBODY_PARTICLE_DATA_F90} ${NBODY_PARTICLE_DATA_MODS}
	${F90} ${FFLAGS} ${DEBUG} -c ${NBODY_PARTICLE_DATA_F90}

${NBODY_UTILITY_O}:	${NBODY_UTILITY_F90} ${NBODY_UTILITY_MODS}
	${F90} ${FFLAGS} ${DEBUG} -c ${NBODY_UTILITY_F90}

