#!/usr/bin/make -f
SHELL = bash

src_package		:= $(shell dpkg-parsechangelog | sed -ne "s/^Source: \(.*\)/\1/p")
deb_version		:= $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p")
upstream_version	:= $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//")
major 			:= $(shell echo $(upstream_version) | sed -e "s/\([0-9]\+\.[0-9]\+\)[\.-].*/\1/g")

# single-binary package
package := $(src_package)

DEB_TARBALL = gcc-$(upstream_version)-dfsg.tar.lzma
DEB_TAR_SRCDIR := gcc-$(upstream_version)

include /usr/share/cdbs/1/rules/tarball.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk

ifeq ($(bootstrap), yes)
BOOTSTRAP_SUFFIX := -gcc
endif

DEB_CONFIGURE_USER_FLAGS := \
	--build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --includedir="\$${prefix}/include" \
	--mandir="\$${prefix}/share/man" --infodir="\$${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var \
	--libexecdir="\$${prefix}/lib/$(package)" \
	\
	--disable-multilib \
	--enable-threads \
	--enable-sjlj-exceptions \
	--enable-version-specific-runtime-libs \
	--disable-shared \
	$(NULL)


# native strip messes up the archive indexes
DEB_STRIP_EXCLUDE = /usr/lib/gcc/i586-mingw32msvc /usr/lib/gcc/amd64-mingw32msvc /usr/i586-mingw32msvc/lib /usr/amd64-mingw32msvc/lib

build-tree/gcc-mingw32/Makefile: apply-patches
	mkdir -p $(subst /Makefile,,$@)
	cd $(subst /Makefile,,$@) && $(CURDIR)/$(DEB_SRCDIR)/configure $(DEB_CONFIGURE_USER_FLAGS) \
		--target=i586-mingw32msvc \
		--enable-languages=c,c++,fortran

build-tree/gcc-mingw64/Makefile: apply-patches
	mkdir -p $(subst /Makefile,,$@)
	cd $(subst /Makefile,,$@) && $(CURDIR)/$(DEB_SRCDIR)/configure $(DEB_CONFIGURE_USER_FLAGS) \
		--target=amd64-mingw32msvc \
		--enable-languages=c

stamps/build-mingw32: build-tree/gcc-mingw32/Makefile
	$(MAKE) -C $(subst /Makefile,,$<)
	mkdir -p stamps
	touch $@

stamps/build-mingw64: build-tree/gcc-mingw64/Makefile
	$(MAKE) -C $(subst /Makefile,,$<) all$(BOOTSTRAP_SUFFIX)
	mkdir -p stamps
	touch $@

stamps/install: stamps/build-mingw32 stamps/build-mingw64
	$(MAKE) -C build-tree/gcc-mingw32 install DESTDIR=$(CURDIR)/debian/$(package)/
	$(MAKE) -C build-tree/gcc-mingw64 install$(BOOTSTRAP_SUFFIX) DESTDIR=$(CURDIR)/debian/$(package)/

	# remove all documentation (already in gcc-doc)
	rm -rf debian/$(package)/usr/share/{man/man7,man/man1,info}

	# collides with gcc locales
	rm -rf debian/$(package)/usr/share/locale

	# the host version of libiberty has no bussiness being in this package
	rm -f debian/$(package)/usr/lib/libiberty.a

	# libtool baggage
	rm -f debian/$(package)/usr/lib/gcc/*-mingw32msvc/*/*.la

	# remove empty directories
	for i in 1 2 ; do \
		find debian/$(package)/ -type d -empty | while read i ; do rmdir $$i ; done ; \
	done

	# this replaces dh_strip
	i586-mingw32msvc-strip --strip-debug debian/$(package)/usr/lib/gcc/i586-mingw32msvc/*/*.a
ifneq ($(bootstrap), yes)
	amd64-mingw32msvc-strip --strip-debug debian/$(package)/usr/lib/gcc/amd64-mingw32msvc/*/*.a
endif

	mkdir -p stamps
	touch $@

build/gcc-mingw32:: stamps/build-mingw32 stamps/build-mingw64

install/gcc-mingw32:: stamps/install

clean::
	rm -rf stamps
