# $Id: Makefile 1220 2006-10-25 11:11:55Z olau $

MPIROOT=/opt/mpich2
MPIEXEC=$(MPIROOT)/bin/mpiexec

CC=gcc
DEBUGFLAGS=-DDEBUG -ggdb
OPTIMIZE=-O3 -msse2
# CFLAGS=$(OPTIMIZE) -Wall -DDEADLOCK
CFLAGS=$(OPTIMIZE) -Wall
LFLAGS=
OUT=-o
O=.o

PROJ=ring

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): $(PROJ).c ../../globaldefs.h Makefile
	$(CC) $(CFLAGS) $(OUT) $(PROJ) $(PROJ).c $(LFLAGS) -lmpich -lpthread -L. -L$(MPIROOT)/lib -I$(MPIROOT)/include

test: $(PROJ)
	$(MPIEXEC) -n  2 ./$(PROJ)
	$(MPIEXEC) -n  3 ./$(PROJ)
	$(MPIEXEC) -n  4 ./$(PROJ)
	$(MPIEXEC) -n  5 ./$(PROJ)
	$(MPIEXEC) -n  6 ./$(PROJ)
	$(MPIEXEC) -n  7 ./$(PROJ)
	$(MPIEXEC) -n  8 ./$(PROJ)
	$(MPIEXEC) -n 16 ./$(PROJ)

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