cflags   = $(CFLAGS) $(CPPFLAGS)
ldflags  = $(LDFLAGS) $(cflags)

VERSION  = DEV

cflags  += -Wall -Wmissing-prototypes -Wformat=2 -Wshadow -pipe
cflags  += -DVERSION=\"$(VERSION)\"

CLIENT   = sbrsh
DAEMON   = sbrshd
EXPORTFS = sb-exportfs

ifdef DEBUG
cflags  += -g -DDEBUG
else
cflags  += -O2 -fomit-frame-pointer -DNDEBUG
endif

ifdef TEST_ARM
CC = /scratchbox/compilers/arm-linux-gcc-3.3.1-uclibc-0.9.21/bin/arm-linux-gcc
ldflags	+= -static
endif

ifdef TEST_SBOX
lib      = /scratchbox/host_shared/lib
ldflags += -Wl,-dynamic-linker -Wl,$(lib)/ld-linux.so.2 -Wl,-rpath -Wl,$(lib)/
endif

COMMON_OBJECTS = buffer.o common.o mount.o protocol.o
COMMON_HEADERS = buffer.h common.h mount.h protocol.h types.h

.PHONY: all
all: $(CLIENT) $(DAEMON) $(EXPORTFS)

$(CLIENT): client.o config.o $(COMMON_OBJECTS)
	$(CC) -o $@ $^ $(ldflags)

$(DAEMON): daemon.o fakeroot.o $(COMMON_OBJECTS)
	$(CC) -o $@ $^ $(ldflags) -lutil

$(EXPORTFS): sb-exportfs.o common.o config.o
	$(CC) -o $@ $^ $(ldflags)

.PHONY: clean
clean:
	rm -f $(CLIENT) $(DAEMON) $(EXPORTFS) *.o

.c.o:
	$(CC) $(cflags) -c -o $*.o $*.c

client.o:   client.c   $(COMMON_HEADERS) client.h config.h
daemon.o:   daemon.c   $(COMMON_HEADERS) daemon.h fakeroot.h
common.o:   common.c   $(COMMON_HEADERS)
protocol.o: protocol.c $(COMMON_HEADERS)
buffer.o:   buffer.c   $(COMMON_HEADERS)
mount.o:    mount.c    $(COMMON_HEADERS)
config.o:   config.c   $(COMMON_HEADERS)
fakeroot.o: fakeroot.c $(COMMON_HEADERS)
sb-exportfs.o: sb-exportfs.c types.h common.h config.h

TAGS: *.[ch]
	etags -o $@ $^


CVSROOT = :ext:$(USER)@scratchbox.org:/cvsroot/scratchbox

.PHONY: source-tarball
source-tarball:
	@( if [ "$(VERSION)" = "DEV" ]; then \
		echo "Usage: $(MAKE) $@ VERSION=<version> [CVSROOT=<root>]"; \
		exit 1; \
	fi && \
	TAG=SBRSH_$$(echo $(VERSION) | sed s/\\./_/g) && \
	TMP=$$(mktemp -d tmp.XXXXXX) && \
	cd $$TMP && \
	cvs -d $(CVSROOT) export -r $$TAG sbrsh > export.log && \
	mv sbrsh/Makefile . && \
	cat Makefile | sed s/=\ DEV/=\ $(VERSION)/ > sbrsh/Makefile && \
	mv sbrsh sbrsh-$(VERSION) && \
	tar zcf ../sbrsh-$(VERSION).tar.gz sbrsh-$(VERSION) && \
	cd .. && \
	rm -rf ./$$TMP && \
	md5sum sbrsh-$(VERSION).tar.gz )


.PHONY: ipk
ipk: sbrshd
	@( if [ "$(VERSION)" = "DEV" ]; then \
		echo "Usage: $(MAKE) $@ VERSION=<version>"; \
		exit 1; \
	fi )

	rm -rf ipkg/build

	install -d ipkg/build/CONTROL
	sed s/'<VERSION>'/$(VERSION)/ ipkg/control.in > ipkg/build/CONTROL/control
	install -m 755 ipkg/postinst ipkg/build/CONTROL/
	install -m 755 ipkg/postrm ipkg/build/CONTROL/

	install -d ipkg/build/sbin
	install -m 755 sbrshd ipkg/build/sbin/

	ipkg/ipkg-build ipkg/build
	rm -rf ipkg/build

.PHONY: deb
deb: sbrshd
	dpkg-buildpackage -rfakeroot -b
