#!/usr/bin/make -f

packagename		:= $(shell dpkg-parsechangelog | sed -nr '/^Source:/s/Source: (.*)/\1/p')
upstream_version	:= $(shell dpkg-parsechangelog | sed -nr '/^Version:/s/Version: (.*:)?(.*)-(.*)/\2/p')

DEB_HOST_ARCH		?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_MULTIARCH	?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

ifeq ($(DEB_HOST_ARCH),amd64)
arch=x86_64
xpic=xpic_64a
lib=lib64
cap=AMDXvBAx64.cap
else
arch=x86
xpic=xpic
lib=lib
cap=AMDXvBAx86.cap
endif

#MULTIARCH	?= yes
libdir		 = usr/lib$(if $(MULTIARCH),/$(DEB_HOST_MULTIARCH))

generated=$(shell ls debian/*.in | sed s/\.in$$//g)
generated	+= fglrx.ids
generated	+= debian/switchlibglx

%: %.in
	sed -r -e 's%_VERSION_%$(upstream_version)%g' \
	       -e 's%_ARCH_%$(arch)%g' \
	       -e 's%_XPIC_%$(xpic)%g' \
	       -e 's%_LIB_%$(lib)%g' \
	       -e 's%_LIBDIR_%$(libdir)%g' \
	       < $< > $@

%:
	dh $@ --with dkms

override_dh_auto_clean:
	test ! -f debian/man/Makefile || $(MAKE) -C debian/man maintainer-clean
	rm -f LICENSE.txt
	rm -f $(generated)
	rm -f arch/x86/usr/X11R6/lib/AMDXvBAx86.cap
	rm -f arch/x86_64/usr/X11R6/lib64/AMDXvBAx64.cap

# Reformat the LICENSE to the format needed for debian/copyright.
LICENSE.txt: LICENSE.TXT
	sed -e 's/ *$$//; s/^$$/./; s/^/ /;' $< > $@

# Compare the license in debian/copyright with the LICENSE shipped in the archive.
compare-copyright-license: LICENSE.txt
	sed -e '1,/^License: other-AMD-FGLRX$$/d; /^$$/,$$d; /^ .$$/d' debian/copyright \
	    > copyright.tmp
	sed -e '/^ .$$/d' LICENSE.txt > LICENSE.tmp
	diff -w copyright.tmp LICENSE.tmp
	rm -f copyright.tmp LICENSE.tmp

fglrx.ids: common/lib/modules/fglrx/build_mod/fglrxko_pci_ids.h
	cat $< | sed -n -r -e '/FGL_ASIC_ID/ s/.*\(0x(.{4})\).*/1002\1/p' \
		| tr a-z A-Z | sort -u > $@

debian/switchlibglx: debian/switchlibGL
	ln $< $@

override_dh_auto_configure: $(generated) compare-copyright-license
	cd debian/man && ./autogen.sh --copy
	cd debian/man && ./configure --prefix=/usr --mandir=/usr/share/man \
	    --with-xserver=Xorg

override_dh_auto_build:
	ln arch/x86/usr/X11R6/lib/libAMDXvBA.cap arch/x86/usr/X11R6/lib/AMDXvBAx86.cap
	ln arch/x86_64/usr/X11R6/lib64/libAMDXvBA.cap arch/x86_64/usr/X11R6/lib64/AMDXvBAx64.cap
	$(MAKE) -C debian/man

# On amd64, AMD hardcoded some paths to /usr/lib64/fglrx/switchlibgl*, and
# prevents working around this with symlinks because they check the files
# with lstat() and thereafter complain about world writability.
badlib64files	 = ./debian/fglrx-driver/usr/lib/fglrx/fglrx_drv.so
badlib64files	+= ./debian/fglrx-atieventsd/usr/sbin/atieventsd
badlib64files	+= ./debian/fglrx-control/usr/bin/amdcccle
badlib64files	+= ./debian/fglrx-driver/usr/bin/aticonfig

override_dh_install:
	dh_install
	chrpath -d -k debian/fglrx-control/usr/bin/amdcccle
	test ! -d debian/libgl1-fglrx-glx || \
		rpl -e	'/usr/X11R6/lib/modules/dri\0' \
			'$${ORIGIN}/dri\0!!!!!!!!!!!!\0' \
			debian/libgl1-fglrx-glx/$(libdir)/fglrx/fglrx-libGL.so.1.2
	test ! -d debian/fglrx-glx-ia32 || \
		rpl -e	'/usr/X11R6/lib/modules/dri\0' \
			'$${ORIGIN}/dri\0!!!!!!!!!!!!\0' \
			debian/fglrx-glx-ia32/usr/lib32/fglrx-libGL.so.1.2
	rpl -e	'/usr/lib64/fglrx' \
		'/usr/lib///fglrx' \
		$(badlib64files)
	rpl -e 'libAMDXvBA.cap' '$(cap)' debian/libxvbaw1/$(libdir)/libAMDXvBA.so.1.0
	chmod a+x debian/fglrx-source/usr/src/modules/fglrx/debian/rules
	tar cfj debian/fglrx-source/usr/src/fglrx.tar.bz2 \
		--owner=root --group=src --remove-files \
		--directory debian/fglrx-source/usr/src/ modules

override_dh_dkms:
	dh_dkms -V $(upstream_version)

# Install reportbug files in all binary packages
override_dh_bugfiles:
	dh_bugfiles -A

# Redirect shlibs for libGL.so.1 to libgl1-mesa-glx | libgl1.
override_dh_makeshlibs:
	dh_makeshlibs
	test ! -d debian/libgl1-fglrx-glx || \
	    sed -i '/^libGL 1 /s/.*/libGL 1 libgl1-mesa-glx | libgl1/' \
	    debian/libgl1-fglrx-glx/DEBIAN/shlibs
	test ! -d debian/fglrx-glx-ia32 || \
	    sed -i '/^libGL 1 /s/.*/libGL 1 ia32-libs (>= 20090804)/' \
	    debian/fglrx-glx-ia32/DEBIAN/shlibs

override_dh_gencontrol:
	dh_gencontrol -- -V'fglrx:version=$(upstream_version)'

############################################################################

prepare-squeeze-backport:
	echo 8 > debian/compat
	sed -i -e '/^MULTIARCH/ s/^/#/' debian/rules
	sed -i -e 's/debhelper (>= 9.*)/debhelper (>= 8.1.0~)/' \
	       -e '/^Multi-Arch:/ d' debian/control
	sed -i -e '/fglrx_dri.so/ s/^/#/' debian/fglrx-driver.links.in
	debchange --bpo "Disable multiarch build."
	debchange "Reduce Build-Depends: debhelper and compat level to 8."

############################################################################

ifneq (,$(filter VER=%,$(DEB_BUILD_OPTIONS)))
NEW_UPSTREAM_VERSION=$(patsubst VER=%,%,$(filter VER=%,$(DEB_BUILD_OPTIONS)))
INSTALLER=amd-driver-installer-$(NEW_UPSTREAM_VERSION)-x86.x86_64.run
URL_PATH=www2.ati.com/drivers/linux
CACHEDIR=/tmp
endif

get-orig-source-checks:
	# This target needs DEB_BUILD_OPTIONS to contain the version specification
	# in the following form: VER=some.version.number
	test -z "$(NEW_UPSTREAM_VERSION)" && echo "Version not defined" && exit 1 || true
	test ! -e debian/rules && echo "Run this command from the root of the package" && exit 1 || true

$(INSTALLER):
	# Make sure the .run package is in the proper place,
	# but first try to look in the "cache".
	# For some reason wget refuses to clobber and restarts everytime.
	# wget $(URL_PATH)/$(INSTALLER) -c -O $(CACHEDIR)/$(INSTALLER)
	[ -s $(CACHEDIR)/$(INSTALLER) ] || \
	    wget $(URL_PATH)/$(INSTALLER) -c -O $(CACHEDIR)/$(INSTALLER)
	[ -s $(CACHEDIR)/$(INSTALLER) ]
	cp $(CACHEDIR)/$(INSTALLER) .

../$(packagename)_$(NEW_UPSTREAM_VERSION).orig.tar.bz2: get-orig-source-checks $(INSTALLER)
	mkdir $(packagename)-$(NEW_UPSTREAM_VERSION).orig
	@set -x ; \
	    cd $(packagename)-$(NEW_UPSTREAM_VERSION).orig \
	    && /bin/sh ../$(INSTALLER) --extract . \
	    && rm -f README.distro *.sh *.exp cimle-xdgsu installer_creation_policy \
	    && rm -rf packages setup.data \
	    && rm -rf x4* x6* \
	    && rm -f arch/*/lib/modules/fglrx/fglrx.*.o \
	    && chmod -R a-sx,u=rwX,go=rX . \
	    && find . -type f \( -path '*/bin/*' -o -path '*/sbin/*' -o -name '*.sh' \) -exec chmod a+x {} +
	# Create the tarball.
	tar -cjf $(packagename)_$(NEW_UPSTREAM_VERSION).orig.tar.bz2 \
	    --owner=root --group=src \
	    $(packagename)-$(NEW_UPSTREAM_VERSION).orig
	mv $(packagename)_$(NEW_UPSTREAM_VERSION).orig.tar.bz2 ../
	# Cleanup.
	rm -fr $(packagename)-$(NEW_UPSTREAM_VERSION).orig
	rm -f $(INSTALLER)

.PHONY: get-orig-source
get-orig-source: ../$(packagename)_$(NEW_UPSTREAM_VERSION).orig.tar.bz2
