#====================================================================================================================
# $@ target, $< first dependency, $^ all dependencies, 
# $* "stem" of target filename e.g. %.f: %.F will five foo for foo.f
# @command executes command without echoing it; make -s (silent make); make --no-print-directory (no echoing of dirs)
#====================================================================================================================
.PHONY: all clean mods new debug
#======================================================================
SYSTEM:=$(shell uname)
SHELL  =  /bin/bash
#======================================================================
OBJS   = 
MODS   =  $(subst .o,.mod,$(OBJS))
FC     =  gfortran
FFLAGS = -Ofast -march=native -mtune=native -ffast-math -funroll-loops
DFLAGS = -g -ffpe-trap=zero,invalid,overflow,underflow,denormal  -fdump-core -fbacktrace
CAFLIB = /usr/lib/x86_64-linux-gnu/open-coarrays/openmpi/lib
#======================================================================

#all:  Ising01.exe IsingVanilla.exe IsingEmbarrassing.exe

all: Ising01.exe Ising02.exe Ising03.exe IsingEmbarrassing.exe IsingVanilla.exe

is: Ising03.f90
	caf $(FFLAGS)  $^  -o $@

Ising01.exe: Ising01.f90
	caf $(FFLAGS)  $^  -o $@

Ising02.exe: Ising02.f90
	caf $(FFLAGS)  $^  -o $@

Ising03.exe: Ising03.f90
	caf $(FFLAGS)  $^  -o $@

IsingEmbarrassing.exe: IsingEmbarrassing.f90
	caf $(FFLAGS)  $^  -o $@

IsingVanilla.exe: IsingVanilla.f90
	$(FC)    $(FFLAGS) $^  -o $@

test:   $(OBJS) test.o  
	$(FC)   $(FFLAGS) $^  -o $@	

new:
	@make -s                   clean
	@make --no-print-directory

debug:
	@make -s                   clean
	@make --no-print-directory FFLAGS="$(DFLAGS)"

intel:
	. $(INTEL); make --no-print-directory FC=$(IFC) FFLAGS="$(IFFLAGS) $(ILIBS)"
mods:
	@make --no-print-directory mods $(MODS)

%.mod:  %.f90
	$(FC) -c $(FFLAGS) $<

%.o:    %.f90
	$(FC) -c $(FFLAGS) $<  -o $@

clean:
	$(RM) *.o *.mod *.exe is

