PACKAGE_REV=0.18
MANDIR=/usr/share/man
PROGS=chbind chcontext reducecap rebootmgr vreboot readlink vunify vbuild \
	vserver-stat showattr vdu showperm capchroot vfiles ifspec
GCCOPTS=-funsigned-char -Wall -g -O3
all: $(PROGS)

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

chcontext: chcontext.cc syscall.o
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" chcontext.cc syscall.o -o chcontext \
		-lstdc++

chbind: chbind.cc syscall.o
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" chbind.cc syscall.o -o chbind \
		-lstdc++

reducecap: reducecap.cc syscall.o
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" reducecap.cc syscall.o -o reducecap \
		-lstdc++

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

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

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

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

vdu: vdu.cc
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vdu.cc -o vdu \
		-lstdc++


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

vfiles: vfiles.cc vutil.o
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vfiles.cc vutil.o -o vfiles \
		-lstdc++

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

showperm: showperm.cc
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" showperm.cc -o showperm \
		-lstdc++

capchroot: capchroot.cc syscall.o
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" capchroot.cc syscall.o -o capchroot \
		-lstdc++

ifspec: ifspec.cc 
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" ifspec.cc -o ifspec \
		-lstdc++

vserver-stat: vserver-stat.c syscall.o
	gcc $(GCCOPTS) -DVERSION=\"$(PACKAGE_REV)\" vserver-stat.c syscall.o -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/init.d
	mkdir -p $(RPM_BUILD_ROOT)/$(MANDIR)/man8
	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 vkill $(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 vfiles $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 readlink $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 showattr $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 showperm $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 capchroot $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 ifspec $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 vdu $(RPM_BUILD_ROOT)/usr/sbin
	install -m 755 vservers.sysv $(RPM_BUILD_ROOT)/etc/init.d/vservers
	install -m 755 v_sshd.sysv $(RPM_BUILD_ROOT)/etc/init.d/v_sshd
	install -m 755 v_named.sysv $(RPM_BUILD_ROOT)/etc/init.d/v_named
	install -m 755 v_xinetd.sysv $(RPM_BUILD_ROOT)/etc/init.d/v_xinetd
	install -m 755 v_httpd.sysv $(RPM_BUILD_ROOT)/etc/init.d/v_httpd
	install -m 755 v_smb.sysv $(RPM_BUILD_ROOT)/etc/init.d/v_smb
	install -m 755 v_sendmail.sysv $(RPM_BUILD_ROOT)/etc/init.d/v_sendmail
	install -m 755 rebootmgr.sysv $(RPM_BUILD_ROOT)/etc/init.d/rebootmgr
	install -m 644 man/*.8 $(RPM_BUILD_ROOT)/$(MANDIR)/man8
	install -m 644 distrib/sample.conf $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 644 distrib/sample.sh $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 distrib/install-rh7.2 $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 distrib/install-rh7.3 $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 644 distrib/rh7.3-minimum $(RPM_BUILD_ROOT)/usr/lib/vserver
	install -m 755 distrib/install-post.sh $(RPM_BUILD_ROOT)/usr/lib/vserver



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

