#! /usr/bin/make -f
# -*- makefile -*-

#export DH_VERBOSE=1
export DH_COMPAT=4

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
    SUB_MAKEFLAGS += -j$(NUMJOBS)
endif
ifndef CFLAGS
    CFLAGS = -O2
endif
ifneq (,$(findstring thumb,$(DEB_BUILD_OPTIONS)))
    CFLAGS += -mthumb
endif

DEB_DESTDIR = $(CURDIR)/debian/bash3/

# Black makefile magic
reverse=$(strip $(eval __=)$(foreach _,$1,$(eval __=$_ $(__)))$(__))

configure_args = \
	--with-curses \
	--with-installed-readline \
	--disable-net-redirections \
	--disable-debugger \
	--disable-help-builtin \
	--enable-multibyte \
	--enable-largefile \
	--disable-mem-scramble \
	--prefix=/usr \
	--infodir=/usr/share/info \
	--mandir=/usr/share/man \
	--without-bash-malloc

patchdir = debian/patches
bash_patches = \
	bash32-001 \
	bash32-002 \
	bash32-003 \
	bash32-004 \
	bash32-005 \
	bash32-006 \
	bash32-007 \
	bash32-008 \
	bash32-009 \
	bash32-010 \
	bash32-011 \
	bash32-012 \
	bash32-013 \
	bash32-014 \
	bash32-015 \
	bash32-016 \
	bash32-017 \
	bash32-018 \
	bash32-019 \
	bash32-020 \
	bash32-021 \
	bash32-022 \
	bash32-023 \
	bash32-024 \
	bash32-025 \
	bash32-026 \
	bash32-027 \
	bash32-028 \
	bash32-029 \
	bash32-030 \
	bash32-031 \
	bash32-032 \
	bash32-033 \
	bashbug-editor \
	deb-bash-config \
	deb-examples \
	man-arithmetic \
	man-fignore \
	man-bashrc \
	man-bashlogout \
	man-substring-exp \
	man-nocaseglob \
	man-test \
	man-test2 \
	man-net-redirections \
	privmode \
	rbash-manpage \
	command-not-found \
	bash-default-editor \
	po-sv \
	bash-subst-param-length \
	pgrp-pipe \
	input-err \
	shell-compat \
	bash32-nodebugger-fix

build: stamp-build
stamp-build: stamp-configure
	dh_testdir
	$(MAKE) $(SUB_MAKEFLAGS)
	touch stamp-build

configure: stamp-configure
stamp-configure: stamp-patch
	dh_testdir
	CFLAGS="$(CFLAGS)" ./configure $(configure_args)
	touch stamp-configure

clean: $(if $(wildcard stamp-patch),stamp-unpatch)
	dh_testdir
	dh_testroot
	if [ -f Makefile ]; then make distclean; fi
	dh_clean
	rm -f stamp-*

install: build stamp-install
stamp-install: stamp-build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs
	install -m 0755 -s bash $(DEB_DESTDIR)/bin/bash
	install -m 0755 debian/bash-setup.sh $(DEB_DESTDIR)/usr/bin/bash-setup
	install -m 0644 debian/etc.bash.bashrc $(DEB_DESTDIR)/etc/bash.bashrc
	install -m 0644 debian/etc.profile.d.prompt.sh $(DEB_DESTDIR)/etc/profile.d/prompt.sh
	touch $@

binary:	binary-indep binary-arch
binary-indep:
binary-arch: stamp-install
	dh_testdir
	dh_testroot
	dh_strip
	dh_compress
	dh_fixperms
	dh_shlibdeps
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

patch: stamp-patch
stamp-patch: $(foreach p,$(bash_patches),stamp-patch-$(p))
	echo -e "\nPatches applied in this version:" > pxxx
	for i in $(bash_patches); do \
	  echo -e "\n$$i:" >> pxxx; \
	  sed -n 's/^# *DP: */  /p' $(patchdir)/$$i.dpatch >> pxxx; \
	done
	mv -f pxxx $@

stamp-patch-%: $(patchdir)/%.dpatch
	@if [ -f $@ ]; then \
	  echo "$* patches already applied."; exit 1; \
	fi
	/bin/sh $< -patch
	rm -f stamp-unpatch-$*
	echo "$* patches applied." > $@

unpatch: stamp-unpatch
stamp-unpatch: $(foreach p,$(call reverse,$(bash_patches)),stamp-unpatch-$(p))
	rm -f $@

stamp-unpatch-%: $(patchdir)/%.dpatch
	@if [ -f $@ ]; then \
	  echo "$* patches already removed."; exit 1; \
	fi
	/bin/sh $< -unpatch
	rm -f stamp-patch-$*
	echo "$* patches removed." > $@

.PHONY: patch unpatch binary binary-arch binary-indep clean \
    build install
