.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

# 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
	mkdir web
	( rm -f merged/2.4*-2.4*; \
	  bzip2 -9 merged/*.diff ; DIR=$${PWD##*/} ;\
	  mkdir web/$$DIR ; mv merged/* web/$$DIR ; \
	  chmod ugo+r pool/* BUGS CHANGELOG CONTENTS ; \
	  cp BUGS CHANGELOG CONTENTS web/$$DIR/ ; \
	  make clean-other ; \
	  tar -C .. --exclude=$$DIR/web --exclude=$$DIR/merged \
	    --exclude=$$DIR/numbered --exclude=$$DIR/kernel \
	    -c $$DIR \
	    | bzip2 -c9 >web/$$DIR/$$DIR.tar.bz2 ; \
	  chmod 755 web/$$DIR ; chmod 644 web/$$DIR/* ; \
	  mv web/$$DIR web/$${DIR##patches-} 2>/dev/null ; true )


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 pool/patch-contents pool/patch-version
	mkdir -p numbered
	tools/create-links < $<

pool/patch-contents: CONTENTS
	tools/mkcontents

pool/patch-version: CONTENTS
	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
	rm -f pool/patch-contents pool/patch-version

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

clean-web:
	rm -rf web

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' &

