PACKAGE_REV=0.9
PROGS=chbind chcontext reducecap rebootmgr vreboot readlink vunify vbuild \
	vserver-stat showattr
GCCOPTS=-funsigned-char -Wall
all: $(PROGS)

proto:
	proto -ceo -fvutil.p vutil.cc

chcontext: chcontext.c
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" chcontext.c -o chcontext

chbind: chbind.c
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" chbind.c -o chbind

reducecap: reducecap.c
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" reducecap.c -o reducecap

rebootmgr: rebootmgr.cc
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" rebootmgr.cc -o rebootmgr

vreboot: vreboot.cc
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vreboot.cc -o vreboot

readlink: readlink.cc
	gcc -funsigned-char $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" readlink.cc -o readlink

vunify: vunify.cc vutil.o
	g++ $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vunify.cc vutil.o -o vunify


vbuild: vbuild.cc vutil.o
	g++ $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vbuild.cc vutil.o -o vbuild

showattr: showattr.cc
	g++ $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" showattr.cc -o showattr

vserver-stat: vserver-stat.c
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vserver-stat.c -o vserver-stat

clean:
	rm -f $(PROGS) *.bak *~ *.o
	make -C tests clean


install:
	mkdir -p $(RPM_BUILD_ROOT)/usr/sbin
	mkdir -p $(RPM_BUILD_ROOT)/usr/lib/vserver
	mkdir -p $(RPM_BUILD_ROOT)/etc/rc.d/init.d
	install -m 755 chbind $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 chcontext $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 reducecap $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 rebootmgr $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vserver $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 newvserver $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vpstree $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vtop $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vps $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vserver-stat $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vrpm $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 save_s_context $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 vserverkillall $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 vreboot $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 vunify $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 vbuild $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 readlink $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 showattr $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 vservers.sysv $(RPM_BUILD_ROOT)/etc/rc.d/init.d/vservers
	install -m 755 v_sshd.sysv $(RPM_BUILD_ROOT)/etc/rc.d/init.d/v_sshd
	install -m 755 v_xinetd.sysv $(RPM_BUILD_ROOT)/etc/rc.d/init.d/v_xinetd
	install -m 755 v_httpd.sysv $(RPM_BUILD_ROOT)/etc/rc.d/init.d/v_httpd
	install -m 755 rebootmgr.sysv $(RPM_BUILD_ROOT)/etc/rc.d/init.d/rebootmgr



buildrpm: buildspec

RPMTOPDIR=/usr/src/redhat
RPM=rpm

buildrpm: buildspec buildsrc
	(unset LD_PRELOAD ; cd $(RPMTOPDIR)/SPECS && \
		$(RPM) -vv -ba vserver.spec)

buildmyrpm:
	$(MAKE) RPM=myrpm RPMTOPDIR=/tmp/myrpm buildrpm

buildmyspec:
	$(MAKE) RPM=myrpm RPMTOPDIR=/tmp/myrpm buildspec buildsrc

buildspec:
	sed s/PACKAGE_REV/$(PACKAGE_REV)/ <vserver.spec > $(RPMTOPDIR)/SPECS/vserver.spec

PKGDIR=$(RPMTOPDIR)/SOURCES/vserver-$(PACKAGE_REV)
buildsrc: 
	rm -fr $(PKGDIR)
	mkdir $(PKGDIR)
	cp -a . $(PKGDIR)/.
	(cd $(PKGDIR) && make clean && \
		cd .. && \
		tar zcf $(PKGDIR).src.tar.gz vserver-$(PACKAGE_REV))
	rm -fr $(PKGDIR)

# Prepare the spec file and source tar and copy it in the redhat-6.2 env
buildspec6.2: buildmyspec
	mv /tmp/myrpm/SPECS/vserver.spec /rh6.2/tmp
	mv /tmp/myrpm/SOURCES/vserver-$(PACKAGE_REV).src.tar.gz /rh6.2/usr/src/redhat/SOURCES

