#!/usr/bin/make -f

export DH_COMPAT=3

# Lowest version with fully ABI compatible libraries
SHLIB_VERSION=0.2

OSVER=$(shell lsb_release -s -i)
ifeq (Debian,$(OSVER))
	ROOT=emul/ia32-linux
	SUFFIX=
else
	ROOT=
	SUFFIX=32
endif

build:
#	./fetch-and-build

clean:
	dh_testdir
	dh_testroot
	rm -rf DEBIAN
	rm -f debian/create-diversions debian/remove-diversions
	rm -f debian/ia32-libs-dev.preinst debian/ia32-libs-dev.postrm
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

# Extract all debs
	for i in `cd pkgs ; /bin/ls *.deb` ; do \
		if [ "$$(echo $$i | sed 's,_.*,,')" = "libgcc1" ]; then \
			continue;\
		fi; \
		dpkg-deb -x pkgs/$$i debian/ia32-libs/ ; done

	if [ "$$(uname -m)" = "ia64" ]; then \
		dpkg-deb -x pkgs/libgcc1_*deb debian/lib32gcc1 ; \
		mkdir -p debian/lib32gcc1/$(ROOT)/lib$(SUFFIX) ; \
		mv debian/lib32gcc1/lib debian/lib32gcc1/$(ROOT)/lib$(SUFFIX) ; \
		mv debian/lib32gcc1/usr/share/doc/libgcc1 debian/lib32gcc1/usr/share/doc/lib32gcc1 ; \
	fi

	mkdir -p debian/ia32-libs/$(ROOT)
	mkdir -p debian/ia32-libs/$(ROOT)/usr
	mkdir -p debian/ia32-libs/$(ROOT)/usr/X11R6

	mv debian/ia32-libs/lib debian/ia32-libs/$(ROOT)/lib$(SUFFIX)
	mv debian/ia32-libs/usr/lib debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)
	mv debian/ia32-libs/usr/X11R6/lib debian/ia32-libs/$(ROOT)/usr/X11R6/lib$(SUFFIX)

ifeq (Debian,$(OSVER))
	mkdir -p  debian/ia32-libs/$(ROOT)/bin
	mv debian/ia32-libs/bin/uname debian/ia32-libs/$(ROOT)/bin
	ln -s /$(ROOT)/usr/lib$(SUFFIX) debian/ia32-libs/usr/lib32
endif


	rm -r debian/ia32-libs/usr/include
	rm -r debian/ia32-libs/usr/X11R6
	rm -r debian/ia32-libs/usr/share
	rm -r debian/ia32-libs/usr/sbin
	rm -r debian/ia32-libs/sys
	rm -r debian/ia32-libs/bin
	rm -r debian/ia32-libs/sbin
	rm -r debian/ia32-libs/etc
	rm -r debian/ia32-libs/var
	rm debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)/pt_chown

# Make ldd work for 32-bit and 64-bit binaries.
	[ -x debian/ia32-libs/usr/bin/ldd ]
	case $$(uname -m) in \
		x86_64) \
			RTLDLIST="/lib/ld-linux-x86-64.so.2 /lib/ld-linux.so.2" \
		;; \
		ia64) \
			RTLDLIST="/lib/ld-linux-ia64.so.2 /lib/ld-linux.so.2" \
		;; \
		*) \
			echo "Unsupported architecture"; exit 1 \
		;; \
	esac ; \
	sed < debian/ia32-libs/usr/bin/ldd "s%RTLDLIST=.*%RTLDLIST=\" $$RTLDLIST\"%" | sed 's%verify_out=`$${rtld} --verify "$$file"`%verify_out=`$${rtld} --verify "$$file" 2>\&1`%' > debian/ia32-libs/ldd 

	mv debian/ia32-libs/usr/bin/lddlibc4 debian/ia32-libs/
	rm -rf debian/ia32-libs/usr/bin
	mkdir -p debian/ia32-libs/usr/bin
	mv debian/ia32-libs/ldd debian/ia32-libs/usr/bin/
	mv debian/ia32-libs/lddlibc4 debian/ia32-libs/usr/bin/
	chmod u=rwx,go=rx debian/ia32-libs/usr/bin/ldd

	mkdir -p debian/ia32-libs/lib/
	ln -s /$(ROOT)/lib$(SUFFIX)/ld-2.3.2.so debian/ia32-libs/lib/ld-linux.so.2 

# Add doc dir and lintian overrides
	mkdir -p debian/ia32-libs/usr/share/doc/ia32-libs
	mkdir -p debian/ia32-libs/usr/share/lintian/overrides
	cp debian/ia32-libs.overrides debian/ia32-libs/usr/share/lintian/overrides/ia32-libs
	mkdir -p debian/ia32-libs-dev/usr/share/lintian/overrides
	cp debian/ia32-libs-dev.overrides debian/ia32-libs-dev/usr/share/lintian/overrides/ia32-libs-dev

# Extract shlibs info from libc6
	mkdir debian/ia32-libs/DEBIAN
	dpkg -e pkgs/libc6_*deb
	sed "s/libc6 (.*)/ia32-libs (>= $(SHLIB_VERSION))/" < DEBIAN/shlibs >debian/ia32-libs/DEBIAN/shlibs
	dpkg -e pkgs/libncurses5_*deb
	sed "s/libncurses5 (.*)/ia32-libs (>= $(SHLIB_VERSION))/" < DEBIAN/shlibs >>debian/ia32-libs/DEBIAN/shlibs

	# Fix symlinks.
	for link in $$(find debian/ia32-libs/$(ROOT) -type l); do		\
	  dest=$$(readlink $$link);					\
	  rm -f $$link;							\
	  ln -s $$(echo $$dest | sed -e 's,^/,$(ROOT)/,' -e 's,/lib/,/lib$(SUFFIX)/,') $$link;	\
	done

	# Fix up GROUP commands in linker scripts
	for lib in libc.so libpthread.so; do				\
	  cat debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)/$$lib				\
	    | sed -e '/^GROUP/ { s, /, /$(ROOT)/,g ; s,/lib/,/lib$(SUFFIX)/,g }' > $$lib; \
	  mv -f $$lib debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)/$$lib;		\
	done

	echo -e "# packages used in the creation of ia32-libs\n" > \
		debian/ia32-libs/usr/share/doc/ia32-libs/Manifest
	(cd pkgs; /bin/ls *.deb) >> debian/ia32-libs/usr/share/doc/ia32-libs/Manifest

	# Separate out development files.
	mkdir -p debian/ia32-libs-dev/usr/share/doc
	ln -s ia32-libs debian/ia32-libs-dev/usr/share/doc/ia32-libs-dev

#	mv debian/ia32-libs/usr/include debian/ia32-libs-dev/usr/include
	mkdir -p debian/ia32-libs-dev/$(ROOT)/usr/lib$(SUFFIX)
	mv debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)/*.so debian/ia32-libs-dev/$(ROOT)/usr/lib$(SUFFIX)
	mv debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)/*.a debian/ia32-libs-dev/$(ROOT)/usr/lib$(SUFFIX)
	mv debian/ia32-libs/$(ROOT)/usr/lib$(SUFFIX)/*.o debian/ia32-libs-dev/$(ROOT)/usr/lib$(SUFFIX)

binary-indep:

# Build architecture-dependent files here.



binary-arch: build install
	dh_testdir -s
	dh_testroot -s 
	dh_installdocs -s
	dh_installexamples -s
	dh_installchangelogs -s
#	dh_link
#	dh_strip
	dh_compress -s
	dh_fixperms --exclude "*/ld-*" -s
#	dh_makeshlibs
	dh_installdeb -s
#	dh_shlibdeps
	dh_gencontrol -pia32-libs -pia32-libs-dev
	if [ "$$(uname -m)" = "ia64" ]; then \
		dh_gencontrol -plib32gcc1 -- -v`dpkg -I pkgs/libgcc1_*deb | awk '/Version/ {print $$2; exit}'`+ia32.libs.`dpkg-parsechangelog  | grep ^Version | awk '{print $$2}'` ; \
	fi
	dh_md5sums -s
	dh_builddeb -s

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
