#!/usr/bin/make -f

#export DH_VERBOSE=1
export DH_COMPAT=4

###### make changes here for porting to other toolchains
# package name
PACKAGE = cygwin-toolchain

# build, host, target platform for the toolchain
DEB_BUILD_GNU_TYPE      := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE       := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_TARGET_GNU_TYPE     := i386-cygwin

SOURCE_DIR = /usr/local/src
SOURCE_ARCHIVES += \
	binutils-2.14.90.0.5 \
	gcc-core-3.3.1 gcc-g++-3.3.1 \
 	cygwin-1.3.22-1 w32api-2.3-1

PREFIX = /usr

PATCHLIST = 20cygwin-dep-fix 20cygwin-errno.cc-fix 20cygwin-no-manpages 30cygwin-install-fix
###### downwards from here things {sh,c}ould be automagic

include /usr/share/dpatch/dpatch.make
	
unpack: unpack-stamp
unpack-stamp:
	for f in $(SOURCE_ARCHIVES); do debian/scripts/unpack $(SOURCE_DIR)/$$f; done
	
	# merge sources into src
	mkdir -p src
	mv binutils-*/* src
	mv gcc-*/{gcc,libstdc*} src
ifneq (,$(findstring cygwin,$(DEB_TARGET_GNU_TYPE)))
	mv cygwin-*/{newlib,winsup} src
	mv w32api-* src/winsup/w32api
else
	mv newlib-*/newlib src
endif

	# remove original directories
	rm -rf {binutils,gcc,newlib,cygwin,w32api}-*
	touch unpack-stamp

configure: unpack patch-stamp configure-stamp
configure-stamp:
	dh_testdir

	# configure in build
	mkdir -p build
	cd build && \
	../src/configure --prefix=$(PREFIX) \
	       --includedir=$$\{prefix\}/$(DEB_TARGET_GNU_TYPE)/include \
	       --with-gxx-include-dir=$$\{prefix\}/$(DEB_TARGET_GNU_TYPE)/include/c++/$$\{gcc_version\} \
	       --infodir=$$\{prefix\}/share/info \
	       --mandir=$$\{prefix\}/share/man \
	       --build=$(DEB_BUILD_GNU_TYPE) \
	       --host=$(DEB_HOST_GNU_TYPE) \
	       --target=$(DEB_TARGET_GNU_TYPE) \
	       --enable-languages=c,c++ \
	       --with-newlib \
	       --with-gnu-as \
	       --with-gnu-ld \
	       --enable-nls \
	       --without-included-gettext
	touch configure-stamp

build: configure build-stamp
build-stamp: 
	dh_testdir
	cd build && $(MAKE)
	touch build-stamp

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	cd build && $(MAKE) install \
            prefix=$(CURDIR)/debian/$(PACKAGE)/$(PREFIX) \
	    
   
	# set up manpages
	mv debian/$(PACKAGE)/$(PREFIX)/share/man/man1/cpp.1 \
        	debian/$(PACKAGE)/$(PREFIX)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-cpp.1
	mv debian/$(PACKAGE)/$(PREFIX)/share/man/man1/gcov.1 \
        	debian/$(PACKAGE)/$(PREFIX)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gcov.1

	ln -sf $(DEB_TARGET_GNU_TYPE)-gcc.1.gz \
		debian/$(PACKAGE)/$(PREFIX)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++.1.gz
	ln -sf $(DEB_TARGET_GNU_TYPE)-g++.1.gz \
		debian/$(PACKAGE)/$(PREFIX)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-c++.1.gz

	rm -rf debian/$(PACKAGE)/$(PREFIX)/share/man/man7

	
	# remove hardlinks
	ln -sf $(DEB_TARGET_GNU_TYPE)-g++ \
		debian/$(PACKAGE)/$(PREFIX)/bin/$(DEB_TARGET_GNU_TYPE)-c++
	for f in ar as dlltool ld nm ranlib strip; do \
		if test -f debian/$(PACKAGE)/$(PREFIX)/$(DEB_TARGET_GNU_TYPE)/bin/$$f; then \
	 	  ln -sf ../../bin/$(DEB_TARGET_GNU_TYPE)-$$f \
		    debian/$(PACKAGE)/$(PREFIX)/$(DEB_TARGET_GNU_TYPE)/bin/$$f; \
		fi \
	done
	find debian/$(PACKAGE)/$(PREFIX)/$(DEB_TARGET_GNU_TYPE)/lib -name libg.a \
		-exec ln -sf libc.a {} \;
	rm -f debian/$(PACKAGE)/$(PREFIX)/bin/$(DEB_TARGET_GNU_TYPE)-gcc-?.*

	# don't need these
	rm -f debian/$(PACKAGE)/$(PREFIX)/bin/$(DEB_TARGET_GNU_TYPE)-gccbug
	rm -f debian/$(PACKAGE)/$(PREFIX)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++.1
	rm -f debian/$(PACKAGE)/$(PREFIX)/lib/libiberty.a

ifneq (,$(findstring linux,$(DEB_HOST_GNU_TYPE)))
	# remove strange cygwin files
	rm -f debian/$(PACKAGE)/$(PREFIX)/bin/{*.exe,*.dll}
endif

	# don't want info pages and LC_MESSAGES; you can use the ones from the host's toolchain
	rm -rf debian/$(PACKAGE)/$(PREFIX)/share/{info,locale}

clean: unpatch
	dh_testdir
	dh_testroot
	rm -rf src build
	rm -f build-stamp configure-stamp unpack-stamp

	dh_clean


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
#	dh_installdebconf
	dh_installdocs
#	dh_installexamples
#	dh_installmenu
#	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_installinit
#	dh_installcron
	dh_installman
#	dh_installinfo
	dh_installchangelogs
	dh_link
	dh_strip --exclude=.o --exclude=.a
	find debian/$(PACKAGE) -regex '.*\.[ao]' -exec \
	debian/$(PACKAGE)/$(PREFIX)/$(DEB_TARGET_GNU_TYPE)/bin/strip -g {} \;
	dh_compress
	dh_fixperms
#	dh_makeshlibs
	dh_installdeb
#	dh_perl
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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