--- mocassin.orig/src/mocassin.2.02.70/makefile	2010-11-10 16:17:39.000000000 +0100
+++ mocassin/src/mocassin.2.02.70/makefile	2012-01-13 11:31:42.186514656 +0100
@@ -1,51 +1,55 @@
-source1  = source/infnan.f90 source/constants_mod.f90 source/vector_mod.f90 source/common_mod.f90 source/interpolation_mod.f90 \
-	source/set_input_mod.f90 source/hydro_mod.f90 source/ph_mod.f90 source/composition_mod.f90 \
-	source/continuum_mod.f90 source/ionization_mod.f90 source/pathIntegration_mod.f90 \
-	source/grid_mod.f90 source/dust_mod.f90 source/emission_mod.f90 source/photon_mod.f90  \
-	source/update_mod.f90 \
-	source/output_mod.f90 source/iteration_mod.f90 source/mocassin.f90 
+MPIF90 ?= mpif90
+FC      = $(MPIF90)
 
-source2  = source/infnan.f90 source/constants_mod.f90 source/vector_mod.f90 source/common_mod.f90 source/interpolation_mod.f90 \
-	source/set_input_mod.f90 source/hydro_mod.f90 source/ph_mod.f90 source/composition_mod.f90 \
+sources  = \
+	source/infnan.f90 source/constants_mod.f90 source/vector_mod.f90 \
+	source/common_mod.f90 source/interpolation_mod.f90 source/set_input_mod.f90 \
+	source/hydro_mod.f90 source/ph_mod.f90 source/composition_mod.f90 \
 	source/continuum_mod.f90 source/ionization_mod.f90 source/pathIntegration_mod.f90 \
 	source/grid_mod.f90 source/dust_mod.f90 source/emission_mod.f90 source/photon_mod.f90  \
-	source/update_mod.f90 \
-	source/output_mod.f90 source/iteration_mod.f90 source/mocassinWarm.f90 
+	source/update_mod.f90 source/output_mod.f90 source/iteration_mod.f90
 
-source3  = source/infnan.f90 source/constants_mod.f90 source/vector_mod.f90 source/common_mod.f90 source/interpolation_mod.f90 \
-	source/set_input_mod.f90 source/hydro_mod.f90 source/ph_mod.f90 source/composition_mod.f90 \
-	source/continuum_mod.f90 source/ionization_mod.f90 source/pathIntegration_mod.f90 \
-	source/grid_mod.f90 source/dust_mod.f90 source/emission_mod.f90 source/photon_mod.f90  \
-	source/update_mod.f90 \
-	source/output_mod.f90 source/iteration_mod.f90 source/mocassinOutput.f90 
+objects = $(sources:.f90=.o)
+modules = $(sources:.f90=.mod)
 
-source4  = source/infnan.f90 source/constants_mod.f90 source/vector_mod.f90 source/common_mod.f90 source/interpolation_mod.f90 \
-	source/set_input_mod.f90 source/hydro_mod.f90 source/ph_mod.f90 source/composition_mod.f90 \
-	source/continuum_mod.f90 source/ionization_mod.f90 source/pathIntegration_mod.f90 \
-	source/grid_mod.f90 source/dust_mod.f90 source/emission_mod.f90 source/photon_mod.f90  \
-	source/update_mod.f90 \
-	source/output_mod.f90 source/iteration_mod.f90 source/mocassinPlot.f90 
- 
-F90  = mpif90
-LIBS =	-lm
-OPT1 =
-OPT2 = -g
-
-mocassin:
-	$(F90) $(OPT1) -o mocassin $(source1) $(LIBS)
+LDFLAGS += -lm -g
+#FFLAGS  += -fno-range-check
 
-mocassinWarm:
-	$(F90) $(OPT1) -o mocassinWarm $(source2) $(LIBS) 
+# gfortran flags
+$(info  $(shell echo $(notdir $(FORTRAN)) |cut -f1 -d- ))
+$(info  $(findstring gfortran, $(shell echo $(notdir $(FORTRAN)) |cut -f1 -d- )))
+ifneq (,$(findstring gfortran, $(notdir $(FORTRAN))))
+FFLAGS += -fno-range-check -Jsource
+endif
 
-mocassinOutput:
-	$(F90) $(OPT2) -o mocassinOutput $(source3) $(LIBS) 
+ifeq ($(findstring ifort, $(notdir $(FORTRAN))), ifort)
+# ifort flags
+FFLAGS+= -module source
+#GLLIB = $(GLLIB) -lguide 
+endif
 
-mocassinPlot:
-	$(F90) $(OPT2) -o mocassinPlot $(source4) $(LIBS) 
+
+
+CODELIB = libmocassin.a
+
+AR = ar ruv
+RANLIB = ranlib
+RM = rm
+
+all: $(CODELIB) 
 
 clean:
-	/bin/rm *.o *~ *.mod mocassin mocassinWarm mocassinOutput mocassinPlot
+	$(RM) -f *.o *.a *.mod $(CODELIB)
+	$(RM) -f source/*.o source/*.mod
+
+$(CODELIB): $(objects)
+	$(RM) -f $@
+	$(AR) $@ $(objects)
+	$(RANLIB) $@
+
 
+%.o: %.f90
+	$(FC) $(FFLAGS) -c $< -o $@
 
  
 
