# compilation rules

.SUFFIXES : .o .c .f .f90

.f90.o:
	$(F90) $(F90FLAGS) -c $<

.f.o:
	$(F77) $(FFLAGS) -c $<

.c.o:
	$(CC) $(CFLAGS) -c $<

####
## Use Intel Compiler Suite
####
#CC       = icc
#CFLAGS   = -O3 
#F90      = ifort
#F90FLAGS = $(FFLAGS) 
#F77      = ifort
### debugging options for ifort
#FFLAGS   = -O2 -g -check all -traceback
### (aggressive) optimization with ifort
##FFLAGS   = -m64 -fast 
##FFLAGS   = -align -O3 -assume byterecl -xP 
#LD       = ifort
#LDFLAGS  = -lsvml 

###
# Use GNU Compilers
###
CC       = gcc
CFLAGS   = -O3 
F90      = gfortran
F90FLAGS = $(FFLAGS) -ftree-vectorize
## gfortran debug options
#FFLAGS   = -g -fbounds-check -Wuninitialized -O -ftrapv -fimplicit-none -fno-automatic
## gfortran optimizations
FFLAGS   = -O3 
#F77      = g77
F77      = $(F90)
LD       = $(F90)
LDFLAGS  = 


MKBIN    = test -d ~/bin || mkdir -v ~/bin;

MKLNS    = ln -si `pwd`/$@ ~/bin/$@;

MODS     = mdmod.o

OBJS     = ran0.o ran1.o ran2.o ran3.o 

all: test_ran.x test_corr.x ran_gauss.x ran_walk.x

test_ran.x: $(OBJS) test_ran.o
	$(LD) $(LDFLAGS) $^ -o $@
	$(MKBIN) $(MKLNS)

test_corr.x: $(OBJS) test_corr.o
	$(LD) $(LDFLAGS) $^ -o $@
	$(MKBIN) $(MKLNS)

ran_gauss.x: ran2.o ran_gauss.o
	$(LD) $(LDFLAGS) $^ -o $@
	$(MKBIN) $(MKLNS)

ran_walk.x: ran2.o ran_walk.o
	$(LD) $(LDFLAGS) $^ -o $@
	$(MKBIN) $(MKLNS)

clean:
	- rm -f *.o *.mod *.x *~

