#!/usr/bin/make -f

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

# This is the debhelper compatibility version to use.
export DH_COMPAT=3

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

VERSION = $(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	CONFIG_DEBUG = true
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
endif

PACKAGE_PREFIX = busybox-cvs

PACKAGES_DEB = $(PACKAGE_PREFIX) $(PACKAGE_PREFIX)-static
PACKAGES_UDEB = $(PACKAGE_PREFIX)-udeb
ifneq ($(wildcard ./debian/config-net-udeb-$(DEB_HOST_ARCH)),)
PACKAGES_UDEB += $(PACKAGE_PREFIX)-net-udeb
endif
PACKAGES = $(PACKAGES_DEB) $(PACKAGES_UDEB)
DEBHELPER_PACKAGES_DEB = $(patsubst %,-p%,$(PACKAGES_DEB))

build-arch: build-arch-deb build-arch-static build-arch-udeb build-arch-net-udeb build-arch-doc

build-arch-deb: build-arch-deb-stamp
build-arch-deb-stamp:
	$(MAKE) clean

ifeq ($(wildcard ./debian/config-deb-$(DEB_HOST_ARCH)),)
	cp ./debian/config-deb .config
else
	cp ./debian/config-deb-$(DEB_HOST_ARCH) .config
endif

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	install -d install-$(PACKAGE_PREFIX)/bin
	install busybox install-$(PACKAGE_PREFIX)/bin/busybox

	touch $@

build-arch-static: build-arch-static-stamp
build-arch-static-stamp:
	$(MAKE) clean

ifeq ($(wildcard ./debian/config-static-$(DEB_HOST_ARCH)),)
	cp ./debian/config-static .config
else
	cp ./debian/config-static-$(DEB_HOST_ARCH) .config
endif

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	install -d install-$(PACKAGE_PREFIX)-static/bin
	install busybox install-$(PACKAGE_PREFIX)-static/bin/busybox

	touch $@

build-arch-udeb: build-arch-udeb-stamp
build-arch-udeb-stamp:
	$(MAKE) clean

ifeq ($(wildcard ./debian/config-udeb-$(DEB_HOST_ARCH)),)
	cp ./debian/config-udeb .config
else
	cp ./debian/config-udeb-$(DEB_HOST_ARCH) .config
endif

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	$(MAKE) PREFIX=$(CURDIR)/install-$(PACKAGE_PREFIX)-udeb install

	touch $@

build-arch-net-udeb: build-arch-net-udeb-stamp
build-arch-net-udeb-stamp:
ifneq ($(wildcard ./debian/config-net-udeb-$(DEB_HOST_ARCH)),)
	$(MAKE) clean

	cp ./debian/config-net-udeb-$(DEB_HOST_ARCH) .config

	$(MAKE) dep
	$(MAKE) CONFIG_DEBUG=$(CONFIG_DEBUG)

	$(MAKE) PREFIX=$(CURDIR)/install-$(PACKAGE_PREFIX)-net-udeb install
endif

	touch $@

build-arch-doc: build-arch-doc-stamp
build-arch-doc-stamp:
	$(MAKE) docs/BusyBox.1

	cp docs/BusyBox.1 busybox.1

	touch $@

build: build-arch

clean:
	dh_testdir
	dh_testroot
	rm -f build-*-stamp debian/files~

	$(MAKE) distclean
	-rm -rf busybox-deb busybox-static install* busybox.1

	dh_clean

install: build-arch
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	for i in $(PACKAGES); do \
	( \
		cd install-$$i; \
		find -type d -exec install -d $(CURDIR)/debian/$$i/{} \;; \
		find \( -type f -o -type l \) -exec cp -a {} $(CURDIR)/debian/$$i/{} \;; \
	); \
	done

	install -m644 debian/$(PACKAGE_PREFIX)-static.override \
		debian/$(PACKAGE_PREFIX)-static/usr/share/lintian/overrides/$(PACKAGE_PREFIX)-static

# Build architecture-dependent files here.
binary-arch: build-arch install
	dh_testdir -a
	dh_testroot -a
#	dh_installdebconf -a
	dh_installdocs $(DEBHELPER_PACKAGES_DEB)
#	dh_installexamples -a
#	dh_installmenu -a
#	dh_installlogrotate -a
#	dh_installemacsen -a
#	dh_installpam -a
#	dh_installmime -a
#	dh_installinit -a
#	dh_installcron -a
	dh_installman $(DEBHELPER_PACKAGES_DEB)
#	dh_installinfo -a
#	dh_undocumented -a
	dh_installchangelogs Changelog $(DEBHELPER_PACKAGES_DEB)
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a
#	dh_makeshlibs -a
	dh_installdeb -a
#	dh_perl -a
	dh_shlibdeps -a
	dh_gencontrol $(DEBHELPER_PACKAGES_DEB)
	dh_md5sums $(DEBHELPER_PACKAGES_DEB)
	dh_builddeb $(DEBHELPER_PACKAGES_DEB)

	$(foreach PACKAGE, $(PACKAGES_UDEB), \
	dh_gencontrol -p$(PACKAGE) -- -fdebian/files~; \
	dpkg-distaddfile $(PACKAGE)_$(VERSION)_$(DEB_HOST_ARCH).udeb debian-installer extra; \
	dh_builddeb -p$(PACKAGE) --filename=$(PACKAGE)_$(VERSION)_$(DEB_HOST_ARCH).udeb; \
	)

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