#!/usr/bin/make -f
#export DH_VERBOSE=1

include debian/vmware.mk

DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)

ifeq ($(PRODUCT), server-console)
ifeq ($(DEB_HOST_ARCH), amd64)
	lib_shlibdirs := $$(debian/shlibdirs.sh debian)
endif
endif

ifneq ($(PRODUCT), server-mui)
	lib_shlibexclude := -X$(lib_dir)/lib -Xusr/lib/perl5
endif

DELETE := \
	Thumbs.db \
	vmware-config.pl \
	vmware-install.pl \
	vmware-uninstall.pl \
	vmware-config-mui.pl \
	vmware-uninstall-mui.pl

CLEAN := \
	build-stamp \
	debian/vmware-common.init \
	debian/vmware-server.init \
	vix-perl \
	vmware-vix-distrib

build: build-stamp
build-stamp:
	dh_testdir
	tar zxf $(DISTRIB_TARBALL) --exclude=lib/modules/binary
	ln -sf $(DISTRIB) vmware-distrib

	-find $(DISTRIB)/lib/help -type f -exec chmod 0644 '{}' \;
	for file in $(DELETE); do \
		find $(DISTRIB) -name $$file -delete; \
	done

ifeq ($(PRODUCT), workstation)
	tar -zxf $(DISTRIB)/vmware-vix/vmware-vix.tar.gz
	tar -zxf $(DISTRIB)/vmware-vix/api/vix-perl.tar.gz

	cd vix-perl && perl Makefile.PL INSTALLDIRS=vendor \
		&& $(MAKE) OPTIMIZE="-O2 -g -Wall"
endif

	touch build-stamp

clean:
	dh_testdir
	dh_clean
	rm -rf $(DISTRIB) $(CLEAN)

install-module-source:
ifdef mod
	mkdir -p $(mod_dir)/debian

	-tar -C $(mod_dir) -xf $(DISTRIB)/lib/modules/source/vmblock.tar
	tar -C $(mod_dir) -xf $(DISTRIB)/lib/modules/source/vmmon.tar
	tar -C $(mod_dir) -xf $(DISTRIB)/lib/modules/source/vmnet.tar

	cp -a modules/* debian/changelog debian/vmware.mk \
		$(mod_dir)/debian
	cp debian/copyright $(mod_dir)/debian/copyright
	sed -i -e 's/@mod@/$(mod)/g' \
		$(mod_dir)/debian/control \
		$(mod_dir)/debian/control.modules.in
	cd debian/$(mod)-source/usr/src && tar c modules \
		| bzip2 -9 > $(mod)-source.tar.bz2 \
		&& rm -rf modules
endif

install: build install-module-source
	dh_testdir
	dh_testroot
	dh_install -ai
	dh_installmime -ai
	dh_desktop -ai

	# fix broken gtk/pango config files
	debian/fix_gtk.sh $(lib_dir) \
		`find debian -name gdk-pixbuf.loaders` \
		`find debian -name pangox.aliases`

	# delete this as there is no libtiff3 in debian
	find debian -name libpixbufloader-tiff.so -delete

ifdef VMWARE_COMMON
	# install files common to workstation and player
	install -m 0755 $(DISTRIB)/installer/services.sh debian/vmware-common.init
	debian/break_init.py debian/vmware-common.init
	chmod 0755 debian/vmware-common/usr/lib/vmware/net-services.sh
	debian/break_init.py debian/vmware-common/usr/lib/vmware/net-services.sh
	dh_installinit -pvmware-common -- start 90 2 3 4 5 . stop 08 0 1 6 .
	install $(DISTRIB)/doc/EULA debian/vmware-common/usr/lib/vmware/share/EULA.txt

	# delete these, they are only used in vmware-workstation
	rm -rf debian/vmware-lib/$(lib_dir)/lib/libglade*
	rm -rf debian/vmware-lib/$(lib_dir)/lib/libgnomecanvas*

	# copy application-x-* to gnome-mime-application-x-*
	find debian/vmware-common/usr/share/icons -name "application-x-*" \
		-exec debian/gnome_icon.sh '{}' \;
endif

ifeq ($(PRODUCT), workstation)
	# install the VIX API
	cd vix-perl && $(MAKE) install PREFIX=$(CURDIR)/debian/vmware-vix/usr
	find debian/vmware-vix -name 'libxml2.*' -delete
endif

ifeq ($(PRODUCT), server)
	# find and install the init script
	install -m 0755 $(DISTRIB)/installer/services.sh debian/vmware-server.init
	debian/break_init.py debian/vmware-server.init
	chmod 0755 debian/vmware-server/usr/lib/vmware-server/net-services.sh
	debian/break_init.py debian/vmware-server/usr/lib/vmware-server/net-services.sh
	dh_installinit -pvmware-server -- start 90 2 3 4 5 . stop 08 0 1 6 .

	# create the log directory
	mkdir -p debian/vmware-server/var/log/vmware

	# remove the copy of the server console installed as 'vmware';
	# this conflicts with vmware-workstation
	rm -f \
		debian/vmware-server/usr/bin/vmware \
		debian/vmware-server/usr/lib/vmware-server/bin/vmware

	# init.pl %libdir%
	mkdir -p debian/vmware-server/usr/lib/vmware-server/serverd
	sed -e 's,%libdir%,/$(lib_dir),g' \
		$(DISTRIB)/lib/serverd/init.pl.default > \
		debian/vmware-server/usr/lib/vmware-server/serverd/init.pl
	
	# install vmware-authd pam config
	install -m 0644 debian/vmware-authd.pam.$(DEB_HOST_ARCH) debian/vmware-server/etc/pam.d/vmware-authd
endif

ifeq ($(PRODUCT), server-console)
	# no idea why this is here
	mkdir -p debian/vmware-server-console/usr/share/icons/hicolor/48x48/apps
	mv debian/vmware-server-console/usr/share/doc/vmware-server-console/icon48x48.png \
		debian/vmware-server-console/usr/share/icons/hicolor/48x48/apps/vmware-server-console.png
endif

ifeq ($(PRODUCT), server-mui)
	# find the init script
	install -m 0755 $(DISTRIB)/mui/lib/httpd.vmware debian/vmware-server-mui.init
	debian/break_init.py debian/vmware-server-mui.init

	# fix the init script
	sed -i \
		-e 's,@@INITDIR@@,/etc/init.d/,g' \
		-e 's,@@PREFIX@@,/$(lib_dir),g' \
		-e 's,@@PORT_OPTION@@,-DGSX,g' \
		debian/vmware-server-mui.init \
		debian/vmware-server-mui/$(lib_dir)/apache/bin/apachectl \
		debian/vmware-server-mui/$(lib_dir)/apache/conf/* \
		debian/vmware-server-mui/$(lib_dir)/lib/perl5/site_perl/5.005/VMware/HConfig/Constant.pm
	sed -i \
		-e 's/^ServerName/#ServerName/g' \
		-e 's/^Group nobody/Group nogroup/g' \
		debian/vmware-server-mui/$(lib_dir)/apache/conf/httpd.conf

	# install the init script
	dh_installinit -pvmware-server-mui -- start 91 2 3 4 5 . stop 07 0 1 6 .

	# create the log directory
	mkdir -p debian/vmware-server-mui/var/log/vmware-mui

	# remove unnecessary files
	rm -rf \
		debian/vmware-server-mui/$(lib_dir)/bin/openssl \
		debian/vmware-server-mui/$(lib_dir)/apache/cgi-bin/* \
		debian/vmware-server-mui/$(lib_dir)/apache/include \
		debian/vmware-server-mui/$(lib_dir)/apache/man \
		debian/vmware-server-mui/$(lib_dir)/lib/httpd.vmware \
		debian/vmware-server-mui/$(lib_dir)/lib/pkgconfig \
		debian/vmware-server-mui/$(lib_dir)/lib/perl5/site_perl/5.005/i386-linux/auto/Apache/include
	# stupid stupid stupid stupid stupid
	ln -sf libcrypto.so.4 debian/vmware-server-mui/$(lib_dir)/lib/libcrypto.so.0.9.7
endif

	dh_fixperms -ai

	# make a few binaries suid
	find debian -type f -perm /u+x -name vmware-authd -exec chmod u+s '{}' \;
	find debian -type f -perm /u+x -name vmware-ping -exec chmod u+s '{}' \;
	find debian -type f -perm /u+x -name vmware-vmx -exec chmod u+s '{}' \;

	# disable executable stack
	find debian -type f -name "*.so*" -exec /usr/sbin/execstack -c '{}' \;

binary: binary-arch
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs
	dh_makeshlibs -a
	dh_installdeb -ai
	dh_strip -ai
	dh_compress -ai -XEULA
	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(lib_shlibdirs) dh_shlibdeps -v -a $(lib_shlibexclude) || true
	dh_gencontrol -ai
	dh_md5sums -ai
	dh_builddeb -ai

.PHONY: binary binary-arch build clean install-module-source install
