# $Id: Makefile 1262 2006-11-01 17:08:13Z olau $

# MPIROOT=/opt/intel/mpi/3.0
MPIROOT=/opt/mpich2
MPIEXEC=$(MPIROOT)/bin/mpiexec
MPICC=$(MPIROOT)/bin/mpicc

CC=gcc
CXX=g++
DEBUGFLAGS=-DDEBUG -ggdb
CFLAGS=-Wall -std=c99 $(DEBUGFLAGS)
CXXFLAGS=-Wall $(DEBUGFLAGS)
LFLAGS=
INC=
OUT=-o
O=.o

PROJ=pi

release:
	$(MAKE) all O="$(O)" \
		CFLAGS="$(CFLAGS)" \
		CXXFLAGS="$(CXXFLAGS)" \
		LFLAGS="$(LFLAGS)" \
		OUT="$(OUT)"

debug:
	$(MAKE) all O="$(O)" \
		CFLAGS="$(CFLAGS) $(DEBUGFLAGS)" \
		CXXFLAGS="$(CXXFLAGS)" \
		LFLAGS="$(LFLAGS)" \
		OUT="$(OUT)"

all: $(PROJ)

clean:
	$(RM) *$(O)
	$(RM) $(PROJ)

$(PROJ): timer pi.c ../../globaldefs.h Makefile
	$(MPICC) $(CFLAGS) $(OUT) $(PROJ) pi.c $(LFLAGS) -L../../timer -ltimer  

timer: 
	make -C ../../timer

test: $(PROJ)
	@echo "ACHTUNG: make dist nicht vergessen!"
	$(MPIEXEC) -n  1 pi
	$(MPIEXEC) -n  2 pi
	$(MPIEXEC) -n  4 pi
	$(MPIEXEC) -n  8 pi
	$(MPIEXEC) -n 16 pi

testlocal: $(PROJ)
	$(MPIEXEC) -n  1 ./pi
	$(MPIEXEC) -n  2 ./pi
	$(MPIEXEC) -n  4 ./pi
	$(MPIEXEC) -n  8 ./pi
	$(MPIEXEC) -n 16 ./pi

dist:
	for i in `mpdtrace`; do \
		scp $(PROJ) $$i:~/bin/$(PROJ); \
	done
