#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

define N


endef

DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH 2>/dev/null)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE 2>/dev/null)

glibc_host = $(DEB_HOST_GNU_TYPE)
uclibc_host = $(shell ./translate-triplet $(glibc_host))
host_compiler = $(shell gcc -print-search-dirs | sed -ne 's/install: //p')

MKDIR = mkdir -p

testdir:
	[ -x debian/rules ]

testroot:
	[ "$(shell id -nu)" = "root" ]

.PHONY: testdir testroot

build: build-arch build-indep
build-arch:
build-indep:

clean: testdir testroot
	$(RM) -r debian/uclibc-toolchain
	$(RM) -r debian/uclibc-toolchain-*-cross
	$(RM) debian/uclibc-toolchain-*-cross.control
	$(RM) debian/uclibc-toolchain-*-cross.substvars
	$(RM) debian/files

binary: binary-arch binary-indep

TARGET ?= $(DEB_HOST_ARCH)

glibc_target = $(shell dpkg-architecture -a$(TARGET) -qDEB_HOST_GNU_TYPE 2>/dev/null)
uclibc_target = $(shell ./translate-triplet $(glibc_target))
target_compiler = $(shell $(glibc_target)-gcc -print-search-dirs | sed -ne 's/install: //p')

cross_package = uclibc-toolchain-$(TARGET)-cross

binary-cross: testdir testroot
	[ -n "$(TARGET)" ]
	[ -n "$(glibc_target)" ]
	[ -n "$(uclibc_target)" ]
	[ -d "$(target_compiler)" ]
	$(RM) -r debian/$(cross_package)
	$(RM) debian/$(cross_package).control
	$(RM) debian/$(cross_package).substvars
	$(MKDIR) debian/$(cross_package)
	$(MKDIR) debian/$(cross_package)/usr/share/doc/$(cross_package)
	cp debian/changelog debian/$(cross_package)/usr/share/doc/$(cross_package)
	cp debian/copyright debian/$(cross_package)/usr/share/doc/$(cross_package)
	$(MKDIR) debian/$(cross_package)/usr/bin
	dpkg -L binutils-$(glibc_target) | \
	  sed -ne 's/^\(\/usr\/bin\/\)\($(glibc_target)-\(.*\)\)/ln -s \2 debian\/$(cross_package)\1$(uclibc_target)-\3/p' | \
	  sh
	echo  >debian/$(cross_package)/usr/bin/$(uclibc_target)-gcc '#! /bin/sh'
	echo >>debian/$(cross_package)/usr/bin/$(uclibc_target)-gcc '$(glibc_target)-gcc -uclibc "$$@"'
	chmod 775 debian/$(cross_package)/usr/bin/$(uclibc_target)-gcc
	$(MKDIR) debian/$(cross_package)$(target_compiler)
	$(glibc_target)-gcc -dumpspecs | ./munge-specs >debian/$(cross_package)$(target_compiler)/specs
	$(MKDIR) debian/$(cross_package)/DEBIAN
	echo  >debian/$(cross_package)/DEBIAN/preinst '#! /bin/sh'
	echo >>debian/$(cross_package)/DEBIAN/preinst 'dpkg-divert --divert $(target_compiler)specs.gcc --rename --package $(cross_package) --add $(target_compiler)specs'
	chmod 775 debian/$(cross_package)/DEBIAN/preinst
	echo  >debian/$(cross_package)/DEBIAN/postrm '#! /bin/sh'
	echo >>debian/$(cross_package)/DEBIAN/postrm 'dpkg-divert --rename --package $(cross_package) --remove $(target_compiler)specs'
	chmod 775 debian/$(cross_package)/DEBIAN/postrm
	echo  >debian/$(cross_package).substvars 'target:Architecture=$(TARGET)'
	echo >>debian/$(cross_package).substvars 'target:GNUArchitecture=$(glibc_target)'
	echo >>debian/$(cross_package).substvars 'target:GCCVersion=$(shell dpkg -s gcc-4.1-$(glibc_target) | sed -ne "s/Version: //p")'
	sed -e 's/@@TARGET@@/$(TARGET)/g' \
	  <debian/control.cross.in \
	  >debian/$(cross_package).control
	dpkg-gencontrol -p$(cross_package) \
	  -Pdebian/$(cross_package) \
	  -cdebian/$(cross_package).control \
	  -Tdebian/$(cross_package).substvars
	cd debian/$(cross_package) && \
	  find . -type f  ! -regex '.*/DEBIAN/.*' -printf '%P\0' | \
	    xargs -r0 md5sum \
	    > DEBIAN/md5sums
	dpkg-deb --build debian/$(cross_package) ..

binary-indep: build-indep
	[ -n "$(TARGET)" ]
	[ -n "$(glibc_target)" ]
	[ -n "$(uclibc_target)" ]
	[ -d "$(target_compiler)" ]
	$(RM) -r debian/uclibc-toolchain
	$(RM) debian/substvars
	$(MKDIR) debian/uclibc-toolchain
	$(MKDIR) debian/uclibc-toolchain/usr/share/doc/uclibc-toolchain
	cp debian/changelog debian/uclibc-toolchain/usr/share/doc/uclibc-toolchain/
	cp debian/copyright debian/uclibc-toolchain/usr/share/doc/uclibc-toolchain/
	$(MKDIR) debian/uclibc-toolchain/usr/bin
	dpkg -L binutils | \
	  sed -ne 's/^\(\/usr\/bin\/\)\(.*\)/ln -s \2 debian\/uclibc-toolchain\1$(uclibc_target)-\2/p' | \
	  sh
	echo  >debian/uclibc-toolchain/usr/bin/$(uclibc_target)-gcc '#! /bin/sh'
	echo >>debian/uclibc-toolchain/usr/bin/$(uclibc_target)-gcc '$(glibc_target)-gcc -uclibc "$$@"'
	chmod 775 debian/uclibc-toolchain/usr/bin/$(uclibc_target)-gcc
	$(MKDIR) debian/uclibc-toolchain$(target_compiler)
	$(glibc_target)-gcc -dumpspecs | ./munge-specs >debian/uclibc-toolchain$(target_compiler)/specs
	$(MKDIR) debian/uclibc-toolchain/DEBIAN
	echo  >debian/uclibc-toolchain/DEBIAN/preinst '#! /bin/sh'
	echo >>debian/uclibc-toolchain/DEBIAN/preinst 'dpkg-divert --divert $(target_compiler)specs.gcc --rename --package uclibc-toolchain --add $(target_compiler)specs'
	chmod 775 debian/uclibc-toolchain/DEBIAN/preinst
	echo  >debian/uclibc-toolchain/DEBIAN/postrm '#! /bin/sh'
	echo >>debian/uclibc-toolchain/DEBIAN/postrm 'dpkg-divert --rename --package uclibc-toolchain --remove $(target_compiler)specs'
	chmod 775 debian/uclibc-toolchain/DEBIAN/postrm
	echo >debian/substvars 'target:GCCVersion=$(shell dpkg -s gcc-4.1 | sed -ne "s/Version: //p")'
	dpkg-gencontrol -puclibc-toolchain \
	  -Pdebian/uclibc-toolchain
	cd debian/uclibc-toolchain && \
	  find . -type f  ! -regex '.*/DEBIAN/.*' -printf '%P\0' | \
	    xargs -r0 md5sum \
	    > DEBIAN/md5sums
	dpkg-deb --build debian/uclibc-toolchain ..

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