.PHONY: all clean patch clean-merged clean-numbered clean-other

#
# You can force DIFFVER to a particular value when rebuilding the final patch
# against a different base version without redoing everything. Eg:
#
# make BASEVER=2.4.27 DIFFVER=2.4.28
#
# Note: If patch runs too slow, it may be wise to set TMPDIR to some
# ramfs-based directory.

# automatically filled from CONTENTS
BASEVER:= $(shell set -- $$(grep -ih -m 1 "^++.*Based" CONTENTS); echo $$5)
KERNVER:= $(shell set -- $$(grep -ih -m 1 "^++.*Kernel" CONTENTS); echo $$4)
CSETVER:= $(shell set -- $$(grep -ih -m 1 "^++.*Changeset" CONTENTS); echo $$4)
ifeq "$(CSETVER)" ""
CSETVER:= $(BASEVER)
endif
DIFFVER:= $(BASEVER)

KERNDIR:= /usr/src/linux-$(BASEVER)
export BASEVER DIFFVER KERNVER CSETVET KERNDIR

all: patch

release: patch web

web: patch clean-web clean-other
	rm -f merged/2.4*-2.4* merged/2.6*-2.6*
	bzip2 -9 merged/*.diff
	mkdir -p web/$(KERNVER)
	mv merged/* web/$(KERNVER)
	chmod ugo+r pool/* CHANGELOG CONTENTS
	cp CHANGELOG CONTENTS web/$(KERNVER)/
	ln -s $(PWD)/ patches-$(KERNVER)
	tar --exclude=patches-$(KERNVER)/web \
	    --exclude=patches-$(KERNVER)/merged \
	    --exclude=patches-$(KERNVER)/kernel \
	    --exclude=patches-$(KERNVER)/numbered \
	    --exclude=patches-$(KERNVER)/patches-$(KERNVER) \
	    -cf - patches-$(KERNVER)/* \
	  | bzip2 -c9 >web/$(KERNVER)/patches-$(KERNVER).tar.bz2
	rm -f patches-$(KERNVER)
	chmod 755 web/$(KERNVER)
	chmod 644 web/$(KERNVER)/*

patch: merged/$(DIFFVER)-$(KERNVER).diff

merged/$(DIFFVER)-$(KERNVER).diff: kernel/linux-$(DIFFVER)/.copied \
				kernel/linux-$(KERNVER)/.patched
	mkdir -p merged
	BASEVER=$(DIFFVER) tools/mkpatch

justpatch: kernel/linux-$(KERNVER)/.patched

kernel/linux-$(KERNVER)/.patched: kernel/linux-$(BASEVER)/.copied numbered
	tools/patch-copy

kernel/linux-%/.copied: numbered
	BASEVER=$* KERNDIR=$(KERNDIR:$(BASEVER)=$*) tools/make-copy

numbered: CONTENTS
	mkdir -p numbered
	tools/create-links < $<
	tools/mkcontents
	tools/mkversion

clean: clean-merged clean-kernel clean-numbered clean-other

clean-merged:
	rm -rf merged

clean-kernel:
	rm -rf kernel

clean-numbered:
	rm -rf numbered

clean-other:
	rm  -rf *~ doc/*~

clean-web:
	rm -rf web
	rm -f patches-$(KERNVER)

distclean: clean clean-web

check:
	@sed -e 's/applying [0-9]\{3\}-/applying /' apply.log >a.log~
	@sed -e 's/applying [0-9]\{3\}-/applying /' kernel/patch-*.log >b.log~
	@xterm -geometry 160x25 -e sh -c '(diff -y -W 160 {a,b}.log~;rm -f {a,b}.log~) | sed -ne "1~2s/$$/[0;30;42m/p;2~2s/$$/[0;46m/p" | less -r' &

