# -*- Mode: Makefile -*-

patch_dir       = debian/patches

debian_patches= $(shell cat $(patch_dir)/PATCHES)

apply-patches: patched-stamp
reverse-patches:
	@for stamp in none patched-*; do \
		case "$$stamp" in none|patched-stamp|patched-\*) continue; esac; \
		patch=`echo $$stamp | sed -e 's/patched-//'`; \
		echo "trying to revert patch $$patch ..."; \
		if [ -x $(patch_dir)/$$patch.dpatch ]; then true; else \
			chmod +x $(patch_dir)/$$patch.dpatch; fi; \
		if $(patch_dir)/$$patch.dpatch -unpatch; then \
			echo "reverted $$patch patch."; \
			rm -f $$stamp; \
		else \
			echo "error in reverting $$patch patch."; \
			exit 1; \
		fi; \
	done
	@echo "Removing patched-stamp"
	@rm -f patched-stamp

patched-%: $(patch_dir)/%.dpatch
	@if [ -x $< ]; then true; else chmod +x $<; fi
	@if [ -f $@ ]; then \
		echo "$* patches already applied."; exit 1; \
	fi
	$< -patch
	@echo "$* patches applied." > $@

patched-stamp: $(foreach p,$(debian_patches),patched-$(p))
	@echo -e "\nPatches applied:" >> pxxx
	@for i in none $(debian_patches); do \
		if [ -r debian/patches/$$i.dpatch ]; then \
			echo -e "\n$$i:" >> pxxx; \
			sed -n 's/^# *DP: */  /p' debian/patches/$$i.dpatch >> pxxx; \
		fi \
	done
	@echo "Writing patched-stamp"
	@mv -f pxxx patched-stamp
