.PHONY: tarball install clean kmod_install

NAME=spice-usb-share
rpmversion=4.9
rpmrelease=0
githead=$(shell git rev-parse HEAD | cut -b 1-7)
VERSION=$(rpmversion)-$(rpmrelease)

LINUXDIR=usbrdr/linux
KMODNAME=kspiceusb
LINUXUSERFILES=$(shell cd .. && ls -d $(LINUXDIR)/* | grep -v $(KMODNAME))

TARBALL=$(NAME)-$(rpmversion)-$(githead).tar.gz
TARPREFIX=$(NAME)-$(rpmversion)/
TARFILESIN=*.cpp *.h Makefile COPYING pkg/Makefile pkg/rhelinit $(LINUXUSERFILES)

KTARBALL=kmod-$(TARBALL)
KTARPREFIX=kmod-$(TARPREFIX)/
KTARFILESIN=$(LINUXDIR)/$(KMODNAME) $(LINUXDIR)/public

KTARBALL_RHEL60=$(KMODNAME)-rhel60-$(rpmversion)-$(githead).tar.gz
KTARPREFIX_RHEL60=$(KMODNAME)-rhel60-$(rpmversion)/
KTARFILESIN_RHEL60=$(KMODNAME) public
KTARDIR_RHEL60=$(LINUXDIR)

KERNELDIR=/usr/src/linux
KERNELMODULEDIR = ../$(LINUXDIR)/$(KMODNAME)/
KERNELMODULE=$(KERNELMODULEDIR)/$(KMODNAME).ko
KERNELREL=$(shell uname -r)
KERNELEXTRADIR=/lib/modules/$(KERNELREL)/extra/$(KMODNAME)
INITDIR=/etc/rc.d/init.d
USBRDRCTRLDIR=..
USBRDRCTRL=$(USBRDRCTRLDIR)/usbrdrctrl

DEBFILENAME=usbrdr.deb
INITSCRIPT=debianinit

SOURCEDIR := $(shell pwd)
BUILDDIR = $(shell pwd)
SRCRPMDIR = $(shell pwd)
RPMDIR = $(shell pwd)
SPECFILE = $(NAME).spec


LIBDIR=/usr/lib
ifeq ($(ARCH),x86_64)
 SRCLIBDIR=../usbrdr/linux/lib64
else
 SRCLIBDIR=../usbrdr/linux/lib
endif
SERVICEDIR=/etc/init.d
BINDIR=/usr/bin

$(USBRDRCTRL) :
	make -C $(USBRDRCTRLDIR) ARCH=$(ARCH)

$(KERNELMODULE):
	make -C $(KERNELMODULEDIR) KERNELDIR=$(KERNELDIR)

tarball: $(TARBALL) $(KTARBALL_RHEL60)
ktarball: $(KTARBALL_RHEL60)

$(TARBALL):
	(cd ..; git archive --format=tar --prefix=$(TARPREFIX) HEAD \
		$(TARFILESIN) \
	    | gzip -c9 > pkg/$(TARBALL))

$(KTARBALL):
	(cd ..; git archive --format=tar --prefix=$(KTARPREFIX) HEAD \
		$(KTARFILESIN) \
	    | gzip -c9 > pkg/$(KTARBALL))

$(KTARBALL_RHEL60):
	(cd ../$(KTARDIR_RHEL60); \
	git archive --format=tar --prefix=$(KTARPREFIX_RHEL60) HEAD \
		$(KTARFILESIN_RHEL60)) | gzip -c9 > $@

install:
	mkdir -p $(PREFIX)/{$(LIBDIR),$(SERVICEDIR),$(BINDIR),$(INITDIR)}
	cp -v $(SRCLIBDIR)/libspiceusbapi.so $(PREFIX)/$(LIBDIR)
	cp -v $(SRCLIBDIR)/spiceusbsrvd $(PREFIX)/$(BINDIR)
	cp -v $(USBRDRCTRL) $(PREFIX)/$(BINDIR)
	cp -v $(INITSCRIPT) $(PREFIX)/$(INITDIR)/spiceusbsrvd

install_kmod: $(KERNELDIR)
	mkdir -p $(PREFIX)/$(KERNELEXTRADIR)
	cp -v $(KERNELMODULE) $(PREFIX)/$(KERNELEXTRADIR)

deb: install
	cp -a DEBIAN $(PREFIX)
	./dpkg --build $(PREFIX) $(DEBFILENAME)

$(SPECFILE): $(SPECFILE).in
	sed 's/^%define githead.*/%define githead $(githead)/' $(SPECFILE).in > $(SPECFILE)

srpm: tarball $(SPECFILE)
	rpmbuild \
		--define "_sourcedir $(SOURCEDIR)" \
		--define "_builddir $(BUILDDIR)" \
		--define "_srcrpmdir $(SRCRPMDIR)" \
		--bs $(SPECFILE)

rpm: tarball $(SPECFILE)
	rpmbuild \
		--define "_sourcedir $(SOURCEDIR)" \
		--define "kernel $(KERNELREL)" \
		--define "_builddir $(BUILDDIR)" \
		--define "_srcrpmdir $(SRCRPMDIR)" \
		--define "_rpmdir $(RPMDIR)" \
		--ba $(SPECFILE)

clean:
	$(RM) $(TARBALL)
