OBJECTS = $(OBJDIR)/moduleMesh.o $(OBJDIR)/moduleMeshCommon.o $(OBJDIR)/moduleCompTime.o \
					$(OBJDIR)/moduleMesh@elements.o $(OBJDIR)/moduleMesh@boundaryEM.o $(OBJDIR)/moduleMesh@boundaryParticle.o $(OBJDIR)/moduleMesh@surfaces.o \
			  	$(OBJDIR)/moduleSpecies.o $(OBJDIR)/moduleInject.o $(OBJDIR)/moduleInput.o \
			  	$(OBJDIR)/moduleErrors.o $(OBJDIR)/moduleList.o $(OBJDIR)/moduleOutput.o \
			  	$(OBJDIR)/moduleCaseParam.o $(OBJDIR)/moduleRefParam.o \
			  	$(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o \
			  	$(OBJDIR)/moduleEM.o $(OBJDIR)/moduleRandom.o $(OBJDIR)/moduleMath.o \
					$(OBJDIR)/moduleProbe.o $(OBJDIR)/moduleAverage.o $(OBJDIR)/moduleCoulomb.o \
			  	$(OBJDIR)/moduleMeshInputVTU.o $(OBJDIR)/moduleMeshOutputVTU.o \
			  	$(OBJDIR)/moduleMeshInputGmsh2.o $(OBJDIR)/moduleMeshOutputGmsh2.o \
			  	$(OBJDIR)/moduleMeshInput0D.o $(OBJDIR)/moduleMeshOutput0D.o \
					$(OBJDIR)/moduleMeshInputText.o $(OBJDIR)/moduleMeshOutputText.o \
			  	$(OBJDIR)/moduleMesh3DCart.o \
			  	$(OBJDIR)/moduleMesh2DCyl.o  \
			  	$(OBJDIR)/moduleMesh2DCart.o \
          $(OBJDIR)/moduleMesh1DRad.o  \
          $(OBJDIR)/moduleMesh1DCart.o \
          $(OBJDIR)/moduleMesh0D.o     \
          $(OBJDIR)/moduleSolver.o     \
					$(OBJDIR)/modulePusher.o     \
					$(OBJDIR)/velocityDistribution.o


all: $(OUTPUT)

$(OUTPUT): modules.o $(OUTPUT).f90
	$(FC) $(FCFLAGS) -o $(OBJDIR)/$(OUTPUT).o -c $(OUTPUT).f90
	$(FC) $(FCFLAGS) -o $(TOPDIR)/$(OUTPUT) $(OBJECTS) $(OBJDIR)/$(OUTPUT).o $(JSONLIB) -L/usr/local/lib -lopenblas

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