VERSION=0.4
OPTFLAGS?=-g -O2
CXXFLAGS=-Wall $(OPTFLAGS) -DVERSION=\"$(VERSION)\"

STATICFLAGS=-lstdc++

ifeq ($(STATIC),semi)
	STATICFLAGS=-Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic -static-libgcc -lm -lc
endif
ifeq ($(STATIC),full)
	STATICFLAGS=-lstdc++ -lm -static
endif

PREFIX?=/usr/local/
BINDIR?=$(DESTDIR)/$(PREFIX)/bin/
MANDIR?=$(DESTDIR)/usr/share/man/

export VERSION MANDIR

all: splitpipe joinpipe docs

# output of g++ -MM *.cc
display.o: display.cc display.hh ddr.hh
joinpipe.o: joinpipe.cc misc.hh md5.hh
main.o: main.cc misc.hh
md5.o: md5.cc md5.hh
misc.o: misc.cc misc.hh
splitpipe.o: splitpipe.cc misc.hh ringbuffer.hh md5.hh display.hh ddr.hh

docs: 
	cd doc; $(MAKE)

clean:
	rm -rf *~ *.o splitpipe 
	cd tests; $(MAKE) clean
	cd doc; $(MAKE) clean

common_OBJECTS=misc.o md5.o
splitpipe_OBJECTS=splitpipe.o joinpipe.o main.o display.o $(common_OBJECTS)

splitpipe: $(splitpipe_OBJECTS)
	gcc $(splitpipe_OBJECTS) -o $@ -lncurses $(STATICFLAGS)

joinpipe: splitpipe
	ln -sf splitpipe joinpipe

check: all
	cd tests; $(MAKE)

OUTPUTDIR=splitpipe-$(VERSION)
dist:
	rm -rf $(OUTPUTDIR)
	mkdir -p $(OUTPUTDIR)/tests/{,wrong-order,wrong-volume-in-session}
	cp Makefile PLAN *.cc *.hh CHANGELOG COPYING TODO README HACKING THANKS cdrecord-script $(OUTPUTDIR)
	cp tests/{*.cc,Makefile,*Run} $(OUTPUTDIR)/tests
	cp tests/wrong-order/test* $(OUTPUTDIR)/tests/wrong-order
	cp tests/wrong-volume-in-session/test* $(OUTPUTDIR)/tests/wrong-volume-in-session
	cd doc; $(MAKE) dist
	tar cvzf $(OUTPUTDIR).tar.gz $(OUTPUTDIR)/
	rm -rf $(OUTPUTDIR)

install: all 
	@mkdir -p $(BINDIR)
	install -s splitpipe $(BINDIR)
	ln -sf splitpipe $(BINDIR)/joinpipe
	cd doc; $(MAKE) install

ddr: ddr.o
	g++ ddr.o -o ddr

