#!/usr/bin/make -f

SHELL = /bin/bash
kbd_dir = /usr/lib/kbd


all:	$(foreach height,08 14 16,LatArCyrHeb-$(height).psf)

#iso%.psf:
$(foreach font, 01 02 03 04 05 06 07 08 09 10 11 12, \
	$(foreach height, 08 14 16, iso$(font)u-$(height).psf)):
	{ psfheader 256 $(subst .,,$(suffix $(subst u-,.,$(basename $@)))); \
		cat $(kbd_dir)/consolefonts/$(subst u-,.f,$(basename $@)); } \
		| psfaddtable - \
		$(kbd_dir)/consoletrans/$(basename \
					$(subst u-,.f,$(basename $@))).uni $@

koi%16.psf:
	{ psfheader 256 16; cat $(kbd_dir)/consolefonts/$(basename $@); } \
		| psfaddtable - $(kbd_dir)/consoletrans/koi8.uni $@

cp%u-19.tmp: cp%.f19.psf
	locale2unimap IBM$* |psfaddtable $< - $@
	

%.psf:	$(kbd_dir)/consolefonts/%
	{ file_size=`wc --bytes $<`; psfheader 256 $$(($${file_size% *}/256)); \
	cat $<; } > $@
	

clean:
#	rm --force $(iso[01][0-9]u-[0-9][0-9].psf) LatArCyrHeb-*.tmp1

getunimap.c:	$(KBD_SRC_DIR)/getunimap.c getunimap.c.patch
		patch $^ --output=$@

$(KBD_SRC_DIR)/getfd.o:
		cd $(KBD_SRC_DIR); make getfd.o

ifdef USE_LIBC
getunimap:	$(KBD_SRC_DIR)/getfd.o
else
getunimap:	$(KBD_SRC_DIR)/getfd.o utf.o
utf.o:		plan9.h
endif

LatArCyrHeb-%.psf: iso01u-%.psf iso02u-%.psf iso03u-%.psf iso05u-%.psf \
			iso06u-%.psf iso08u-%.psf iso09u-%.psf iso10u-%.psf
	psfmerge lat4u-$*.psf \
		--range=0xA0- --shift=$$(($*==16 ? 1 : 0 )) iso10u-$*.psf \
		--range=0xA0- --shift=$$(($*==16 ? 1 : 0 )) iso02u-$*.psf \
		--range=0xA0- --shift=$$(($*==16 ? 1 : 0 )) iso03u-$*.psf \
		--range=0xA0- --shift=$$(($*>=14 ? 1 : 0 )) \
					iso05u-$$(($*==14 ? 16 : $* )).psf \
		--range=0xA0- --shift=0 iso06u-$*.psf \
		--range=0xA0- --shift=$$(($*>=14 ? 1 : 0 )) \
					iso01u-$$(($*==14 ? 16 : $* )).psf \
		--range=0xA0- --shift=$$(($*>=14 ? 1 : 0 )) iso08u-$*.psf \
						>LatArCyrHeb-$*.psf
# Already is:	--range=0xA0- iso09u-$*.psf \

LatArCyrHeb-19.tmp0: LatArCyrHeb-16.psf
	psfmerge --height=19 $< >$@

LatArCyrHeb-19.tmp: lat4u-19.psf cp850u-19.tmp LatArCyrHeb-19.tmp0
	psfmerge --height=19 $< \
		--range=0x80-0x9E --shift=1 cp850u-19.tmp \
		--range=0xA0-0xAF --shift=1 cp850u-19.tmp \
		--range=0xCF-0xD0 --shift=1 cp850u-19.tmp \
		--range=0xEE-0xF1 --shift=1 cp850u-19.tmp \
		--range=0xF3-0xFD --shift=1 cp850u-19.tmp \
		--range=0x100- --shift=1 LatArCyrHeb-19.tmp0 >$@

LatArCyrHeb-16+.tmp: lat4u-16+.psf LatArCyrHeb-19-16+.psf
	psfmerge --height=16 $< \
		--range=0x100- LatArCyrHeb-19-16+.psf  >$@

test check: diff test08 test14 test16 test19 test16+

diff: diff14 diff16 diff19 diff16+

diff%:
	-diff <(psfgettable LatArCyrHeb-{08,$*}.psf)

fix: fix14 fix16 fix19 fix16+ fix08

fix%:	
	psfsplit LatArCyrHeb-$*.psf
	cd LatArCyrHeb-$*.psf_ && ../psfcat \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{0??,1[0-9]?,1a[0-6],1c[9ab]}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1a[a-f],1b[0-2],1c[23]}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1b5,1c[57]}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1b[89],1c8}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1b[b-f],1c[0-1]}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1b[3-4],1c4}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1b6,1c6}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1b7,1ba}) \
	  $$(command ls --literal --sort=extension \
	    U+????.*.0x{1a[7-9],1c[c-f],1[d-f]?}) \
			2>&1 >../LatArCyrHeb-$*.2.psf |tee /tmp/tmp.log
	rm LatArCyrHeb-$*.psf_/*

#		--range=-0x1A6	$< --range=0x1C9-0x1CB $< \
#		--range=0x1AA-0x1B2	$< --range=0x1C2-0x1C3 $< \
#		--range=0x1B5-0x1B5	$< --range=0x1C5-0x1C5 $< \
#					--range=0x1C7-0x1C7 $< \
#		--range=0x1B8-0x1B9	$< --range=0x1C8-0x1C8 $< \
#		--range=0x1BB-0x1C1	$< --range=0x1B3-0x1B4 $< \
#		--range=0x1C4-0x1C4  $< --range=0x1B6-0x1B6 $< \
#		--range=0x1C6-0x1C6  $< --range=0x1B7-0x1B7 $< \
#					--range=0x1BA-0x1BA $< \
#		--range=0x1A7-0x1A9 $< \
#		--range=0x1CC- $< \
#			>LatArCyrHeb-$*.2.psf 2>/tmp/tmp.log

isoXX.uni:
	for font in 01 02 03 04 05 06 07 08 09 10; \
	do \
		loadunimap iso$$font.uni; \
		echo "                             ISO 8859-$$((10#$$font))"; \
		getunimap |grep -v '^0x0[0-7]' |sort; \
		echo; echo; \
	done >isoXX.uni

test%:	isoXX.uni
	setfont -v LatArCyrHeb-$*.psf
	echo -ne '\033\045G'; $${PAGER:-less -r} isoXX.uni /usr/doc/kbd/utflist*
# AFAIK 0x00-0x1f and 0x7f->U+2302 (bullet) isn't part of ISO 8859-X.

.PHONY:	all clean diff test 

# vi: noexpandtab

