# $Id: Makefile 97 2004-12-15 10:52:25Z olau $
PROJ = blocksort
BINDIR = /usr/local/bin
MANDIR = /usr/man
INSTALLPERMS = 0755
#OPTIMIZE = -O3 -march=pentium4
OPTIMIZE =
DEBUGFLAGS = -ggdb
CFLAGS = $(OPTIMIZE) -Wall -DUNIX -s
CXXFLAGS = $(CFLAGS)

# Possible definitions to change program behaviour. 
#   See source (i.e. bwt.c) for details.
# CFLAGS += -DSTATISTICS
# CFLAGS += -DNO_PROGRESS_DOTS
# CFLAGS += -D_WAIT_FOR_KEYPRESS
# CFLAGS += -DFILEWRITE_INDEX

SORT_O := 


####################################################################

linux:
	$(MAKE) all CC="gcc" CXX="g++" O=".o" X="" \
		CFLAGS="$(CFLAGS)" \
		CXXFLAGS="$(CXXFLAGS)" \
        LFLAGS="" \
        LIBS="" \
        OUT=-o

unix:
	$(MAKE) all CC="gcc" CXX="g++" O=".o" X="" \
		CFLAGS="-ggdb -DDEBUG -s" \
		CXXFLAGS="$(CXXFLAGS)" \
		LFLAGS="" \
		LIBS="" \
		OUT=-o

darwin:
	$(MAKE) all CC="gcc" CXX="g++" O=".o" X="" \
		CFLAGS="-ggdb $(OPTIMIZE) -Wall -DDARWIN -DDEBUG" \
		LFLAGS="" \
		LIBS="" \
		OUT=-o

win32:
	$(MAKE) all CC="gcc" CXX="g++" O=".o" X=".exe" \
		CFLAGS="-s -Wall $(OPTIMIZE)" \
		LFLAGS="" \
		LIBS="" \
		OUT=-o

INC = -I.

all: $(PROJ)$X

clean:
	$(RM) -f -r *.o *.s *.bak
	$(RM) -f $(PROJ) log*.gp

win32-clean:
	-del *.o
	-del *.bak
	-del *.s
	-del $(PROJ).exe

install:
	install -d -v -m $(INSTALLPERMS) $(BINDIR)
	install -s -o root -g root -m $(INSTALLPERMS) $(PROJ) $(BINDIR)

.SUFFIXES: .cpp .c .h $O
.c$O:
	$(CC) $(CFLAGS) $(INC) -c $*.c

.cpp$O:
	$(CC) $(CXXFLAGS) $(INC) -c $*.cpp

deep_shallow$O: ../deep_shallow.cpp ../ds.h Makefile

timer$O: ../timer.cpp ../timer.h Makefile

###########################################
#
# demos
# 
t:
	ln -s ../Testdaten/Benchmark t

t/T2rep16:
	make -C t all

demo1: blocksort t t/T2rep16
	./blocksort t/T2rep16 1

# complex time measurement demo finding out params for deep-shallow sort
log.gp: blocksort t t/T2
	@echo "set dgrid3d 17,10" > log.gp
	@echo "set data style lines" >> log.gp
	@echo 'splot "-" using 1:2:3' >> log.gp
	python ./run_deep_shallow_param_test.py >> log.gp

demo_blocksorts: log.gp
	gnuplot -persist < log.gp

###########################################
#
# build ./blocksort
#
DEEPSHALLOW_O := $(foreach i,globals ds shallow helped deep2 blind2, ../deep_shallow/$i.o)
BLOCKSORT_O := $(foreach i, blocksort ../timer mkqsort radixsort dumbqsort qsort stl_sort ../deep_shallow, $i.o) $(SORT_O)

%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(PROJ): $(BLOCKSORT_O) $(DEEPSHALLOW_O)
	$(CXX) $(CXXFLAGS) -o $@ $(BLOCKSORT_O) $(DEEPSHALLOW_O)

