# Makefile for tivodecode, (c) 2006, Jeremy Drake
# See COPYING file for license terms
CC=gcc
CFLAGS=-Wall -O3
DEFINES=-D_FILE_OFFSET_BITS=64
override CFLAGS+=$(DEFINES)
LDFLAGS=

OBJDIR=objects.dir
OBJS=hexlib.o TuringFast.o sha1.o tivo-parse.o happyfile.o turing_stream.o tivodecode.o getopt.o getopt_long.o

REALOBJS=$(patsubst %.o,$(OBJDIR)/%.o,$(OBJS))

all: tivodecode

.PHONY: clean
clean:
	rm -rf $(OBJDIR)

.PHONY: prep
prep:
	mkdir -p $(OBJDIR)

.PHONY: tivodecode
tivodecode: prep $(OBJDIR)/tivodecode

$(OBJDIR)/tivodecode: $(REALOBJS)
	$(CC) $(LDFLAGS) -o $@ $^

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

$(OBJDIR):
	mkdir $(OBJDIR)


#############################################################################
# Do not use targets below here.  They are for releasing new versions.
# Users should not use these.  These are not the targets you are looking for...

CREL=$(if $(REL),$(strip $(subst .,_, $(REL))),YOU_NEED_A_RELEASE)
CVSROOT=:ext:jeremyd2019@tivodecode.cvs.sourceforge.net:/cvsroot/tivodecode
RELDIR=tivodecode-$(strip $(REL))

.PHONY: tag
tag:
	@echo TAG = REL_$(CREL)
	$(if $(filter YOU_NEED_A_RELEASE, $(CREL)), false SET A RELEASE, )
	sed -i -e 's/^\(Version \)\([0-9.]\+\)$$/\1$(strip $(REL))/' README
	sed -i -e 's/^\(static const char \* VERSION_STR = "\)\([0-9.]\+\)\(";\)$$/\1$(strip $(REL))\3/' tivodecode.c
	cvs commit -m"Flag release $(strip $(REL))" README tivodecode.c
	cvs tag REL_$(CREL)

.PHONY: release
release:
	@echo TAG = REL_$(CREL)
	@echo VER = $(strip $(REL))
	$(if $(filter YOU_NEED_A_RELEASE, $(CREL)), false SET A RELEASE, )
	cvs -d$(CVSROOT) export -rREL_$(CREL) -d$(RELDIR) tivodecode
	tar -zcvf $(RELDIR).tar.gz $(RELDIR)/
	rm -rf $(RELDIR)/
