OBJS = accuracy fma print debug memcheck initcheck

# fma is compiled only (-c), it produces no executable
RUNOBJS = $(filter-out fma,$(OBJS))

all: build run verify

build: $(OBJS)

run: build
	@for x in $(RUNOBJS); do \
	  echo "----------------- $$x --------------------"; \
	  $(RUN) ./$$x || exit 1; \
	done

verify:

# section 2.1.1

accuracy: accuracy.cuf
	nvfortran -o $@ $<

# section 2.1.2

fma: fma.cuf
	nvfortran -c -gpu=keep $<

# section 2.2.1

print: print.cuf
	nvfortran -o $@ $<

# section 2.2.2

debug: debug.cuf
	nvfortran -o $@ -g -gpu=nordc $<

# section 2.2.3

memcheck: memcheck.cuf
	nvfortran -o $@ $<

initcheck: initcheck.cuf
	nvfortran -o $@ $<

clean:
	rm -rf $(OBJS) *.o *.mod *~ *.ptx *.gpu *.bin *.fat
