include config.mk

BIN = dup-check dup-gc dup-init dup-keygen dup-pack dup-rm dup-unpack
MAN = dup-check.1 dup-gc.1 dup-init.1 dup-keygen.1 dup-pack.1 dup-rm.1 dup-unpack.1

HDR = \
        arg.h \
        block.h \
        chunker.h \
        compat.h \
        config.h \
        key.h \
        lock.h \
        misc.h \
        queue.h \
        snap.h \
        state.h \
        tree.h \

COMMOBJ = \
        bcompress.o \
        bencrypt.o \
        block.o \
        bstorage.o \
        chunker.o \
        compat.o \
        key.o \
        lock.o \
        misc.o \
        pack.o \
        snap.o \
        state.o \
        unpack.o \

DCHECKOBJ = $(COMMOBJ) dup-check.o
DGCOBJ = $(COMMOBJ) dup-gc.o
DINITOBJ = $(COMMOBJ) dup-init.o
DKEYGENOBJ = $(COMMOBJ) dup-keygen.o
DPACKOBJ = $(COMMOBJ) dup-pack.o
DRMOBJ = $(COMMOBJ) dup-rm.o
DUNPACKOBJ = $(COMMOBJ) dup-unpack.o

LDLIBS = -lsnappy -llz4 -lsodium

all: $(BIN)

$(DCHECKOBJ) $(DGCOBJ) $(DINITOBJ) $(DKEYGENOBJ) $(DPACKOBJ) $(DRMOBJ) $(DUNPACKOBJ): $(HDR)

clean:
	rm -f $(DCHECKOBJ) $(DGCOBJ) $(DINITOBJ) $(DKEYGENOBJ) $(DPACKOBJ) $(DRMOBJ) $(DUNPACKOBJ) $(BIN)
	rm -rf dedup-$(VERSION) dedup-$(VERSION).tar.gz

install: all
	mkdir -p $(DESTDIR)$(PREFIX)/bin
	cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin
	mkdir -p $(DESTDIR)$(MANPREFIX)/man1
	cp -f $(MAN) $(DESTDIR)$(MANPREFIX)/man1

uninstall:
	cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN)
	cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN)

dist: clean
	mkdir -p dedup-$(VERSION)
	cp `find . -maxdepth 1 -type f` dedup-$(VERSION)
	tar -c dedup-$(VERSION) | gzip > dedup-$(VERSION).tar.gz

test: all
	sh runtests

.SUFFIXES: .c .o

.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $<

dup-check: $(DCHECKOBJ)
	$(CC) -o $@ $(DCHECKOBJ) $(LDFLAGS) $(LDLIBS)

dup-gc: $(DGCOBJ)
	$(CC) -o $@ $(DGCOBJ) $(LDFLAGS) $(LDLIBS)

dup-init: $(DINITOBJ)
	$(CC) -o $@ $(DINITOBJ) $(LDFLAGS) $(LDLIBS)

dup-keygen: $(DKEYGENOBJ)
	$(CC) -o $@ $(DKEYGENOBJ) $(LDFLAGS) $(LDLIBS)

dup-pack: $(DPACKOBJ)
	$(CC) -o $@ $(DPACKOBJ) $(LDFLAGS) $(LDLIBS)

dup-rm: $(DRMOBJ)
	$(CC) -o $@ $(DRMOBJ) $(LDFLAGS) $(LDLIBS)

dup-unpack: $(DUNPACKOBJ)
	$(CC) -o $@ $(DUNPACKOBJ) $(LDFLAGS) $(LDLIBS)
