# Link make.inc with the targeted architecture in Arch directory
# For example : ln -s make_sp6 make.inc
#--------------------------------------
include ../../../Arch/make.inc

PGM=hydro_mpi
SRC=cmpflx.c conservar.c equation_of_state.c hydro_godunov.c main.c parametres.c riemann.c trace.c vtkfile.c compute_deltat.c constoprim.c hydro_funcs.c make_boundary.c qleftright.c slope.c utils.c
SRCMPI=cmpflx.c conservar.c equation_of_state.c hydro_godunov.c main.c parametres.c riemann.c trace.c vtkfile.c compute_deltat.c constoprim.c hydro_funcs.c make_boundary.c qleftright.c slope.c utils.c mpi_funcs.c

OBJ = $(patsubst %.c, %.o, ${SRC})
OBJMPI = $(patsubst %.c, %.o, ${SRCMPI})

default: mpi

mono: CCOMP = $(CC)
mono: CCOMPFLAGS = $(FFLAGS)
mono: LINKFLAGS = $(LDFLAGS)
mono: $(OBJ)
	$(CCOMP) $(LINKFLAGS) $(OBJ) -o hydro_mono -lm

mpi: CCOMP = $(MPICC)
mpi: CCOMPFLAGS = $(FFLAGS) $(FFLAGS_MPI)
mpi: LINKFLAGS = $(LDFLAGS) $(LDFLAGS_MPI)
mpi: $(OBJMPI)
	$(CCOMP) $(LINKFLAGS) $(OBJMPI) -o hydro_mpi -lm

omp: CCOMP = $(CC)
omp: CCOMPFLAGS = $(FFLAGS) $(FFLAGS_OMP)
omp: LINKFLAGS = $(LDFLAGS) $(LDFLAGS_OMP)
omp: $(OBJ)
	$(CCOMP) $(LINKFLAGS) $(OBJ) -o hydro_omp -lm

mpiomp: CCOMP = $(MPICC)
mpiomp: CCOMPFLAGS = $(FFLAGS) $(FFLAGS_MPI) $(FFLAGS_OMP)
mpiomp: LINKFLAGS = $(LDFLAGS) $(LDFLAGS_MPI) $(LDFLAGS_OMP)
mpiomp: $(OBJMPI)
	$(CCOMP) $(LINKFLAGS) $(OBJMPI) -o hydro_mpiomp -lm



#$(PGM): $(OBJ)
#	$(MPICC) -o $(PGM) $(LDFLAGS) ${CFLAGS_MPI} $(OBJ) -lm

clean   :
	rm -f *.o $(PGM)

cleanall   : clean
	rm -f *~ *.vts *.out

.SUFFIXES:  .o .c

.c.o    :
	${CCOMP} ${CCOMPFLAGS} ${CFLAGS_MPI} -c $<

# Dependencies
#--------------

main.h: cmpflx.h conservar.h equation_of_state.h hydro_funcs.h mpi_funcs.h qleftright.h slope.h utils.h compute_deltat.h constoprim.h hydro_godunov.h  make_boundary.h parametres.h riemann.h trace.h vtkfile.h
cmpflx.o: main.h parametres.h utils.h cmpflx.h
compute_deltat.o: main.h parametres.h compute_deltat.h utils.h equation_of_state.h mpi_funcs.h
conservar.o: main.h parametres.h utils.h conservar.h
constoprim.o: main.h parametres.h constoprim.h utils.h
equation_of_state.o: main.h equation_of_state.h utils.h parametres.h
hydro_funcs.o: main.h utils.h parametres.h hydro_funcs.h mpi_funcs.h
hydro_godunov.o: main.h parametres.h hydro_godunov.h
hydro_godunov.o: hydro_funcs.h utils.h make_boundary.h cmpflx.h conservar.h
hydro_godunov.o: equation_of_state.h qleftright.h constoprim.h riemann.h
hydro_godunov.o: trace.h slope.h
main.o: main.h mpi_funcs.h
main.o: parametres.h hydro_funcs.h vtkfile.h
main.o: compute_deltat.h hydro_godunov.h utils.h
make_boundary.o: main.h mpi_funcs.h
make_boundary.o: parametres.h make_boundary.h
make_boundary.o: utils.h
mpi_funcs.o: main.h mpi_funcs.h
parametres.o: main.h parametres.h
qleftright.o: main.h
qleftright.o: parametres.h utils.h qleftright.h
riemann.o: main.h
riemann.o: parametres.h utils.h riemann.h
slope.o: main.h
slope.o: parametres.h utils.h slope.h
trace.o: main.h
trace.o: parametres.h utils.h trace.h
utils.o: main.h
utils.o: utils.h parametres.h
vtkfile.o: main.h mpi_funcs.h
vtkfile.o: parametres.h utils.h
vtkfile.o: vtkfile.h
