CC      = gcc
MPICC   = mpicc
NVCC    = nvcc
CFLAGS  = -O0 -Wall
LDFLAGS = -lm

TARGETS = pi-serial pi-pthreads-bug pi-pthreads pi-mpi pi-cuda

all: $(TARGETS)

pi-serial: pi-serial.c
	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)

pi-pthreads-bug: pi-pthreads-bug.c
	$(CC) $(CFLAGS) -pthread -o $@ $< $(LDFLAGS)

pi-pthreads: pi-pthreads.c
	$(CC) $(CFLAGS) -pthread -o $@ $< $(LDFLAGS)

pi-mpi: pi-mpi.c
	$(MPICC) $(CFLAGS) -o $@ $< $(LDFLAGS)

pi-cuda: pi-cuda.cu
	$(NVCC) -O0 -o $@ $< --gpu-architecture=sm_86

clean:
	rm -f $(TARGETS)

.PHONY: all clean
