OBJS = common.o output.o mesh.o solver.o init.o \
			 moduleCollisions.o moduleInject.o \
			 moduleList.o moduleProbe.o moduleCoulomb.o \
			 moduleSpecies.o

all: $(OBJS)

common.o:
	$(MAKE) -C common all

output.o: moduleSpecies.o common.o
	$(MAKE) -C output all

mesh.o: moduleList.o moduleSpecies.o moduleCollisions.o moduleCoulomb.o output.o common.o 
	$(MAKE) -C mesh all

solver.o: moduleInject.o moduleSpecies.o moduleProbe.o common.o output.o mesh.o
	$(MAKE) -C solver all

init.o: common.o solver.o moduleInject.o
	$(MAKE) -C init all

moduleCollisions.o: moduleList.o moduleSpecies.o common.o moduleCollisions.f90
	$(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@

moduleCoulomb.o: moduleSpecies.o common.o moduleCoulomb.f90
	$(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@

moduleList.o: common.o moduleSpecies.o moduleList.f90
	$(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@

moduleProbe.o: mesh.o moduleProbe.f90
	$(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@

moduleSpecies.o: common.o moduleSpecies.f90
	$(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@

moduleInject.o: common.o moduleInject.f90
	$(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@

%.o: %.f90
	$(FC) $(FCFLAGS) -c $< -o $(OBJDIR)/$@

