#########################################
#					#
#  Fonty - fonts on Linux console	#
#					#
#  Fonty na konsoli Linuxa		#
#					#
#########################################

version = 1.0

SHELL = /bin/sh
CXXFLAGS = -Wall -O2 -fomit-frame-pointer -pipe
INSTALL = install

###############################################################################

consoleprefix = /usr
consolefontsdir = $(consoleprefix)/share/consolefonts
consoletransdir = $(consoleprefix)/share/consoletrans
konwertprefix = /usr/local
konwertsharedir = $(konwertprefix)/share/konwert
konwertlibdir = $(konwertprefix)/lib/konwert
konwertbindir = $(konwertprefix)/bin
perl := $(shell which perl)
docprefix = /usr/local
docdir = $(docprefix)/doc/fonty-$(version)

###############################################################################

compact := $(patsubst %,unicode/uni-compact-%.sbf,16)

iso := $(patsubst %,iso%,1 2 3 4 5 6 7 8 9 10 12 13 14 15)

sfm := $(patsubst %,sfm/%,$(shell cut -f1 sfmlist))

sbf := \
	$(patsubst %,sbf/%.sbf, \
		$(patsubst %,%-16, \
			$(foreach a,$(sfm),$(notdir $a)) \
		) \
	)

psf := $(patsubst sbf/%.sbf,psf/%.psf,$(sbf))

targets := $(compact) $(sfm) $(sbf) $(psf) dynafont/wrapper dynafont/dynafont

all: $(targets)

###############################################################################

unicode/uni-compact-%.sbf: unicode/uni-%.sbf \
tools/compact
	$(perl) tools/compact $< >$@

###############################################################################

sbf/%-16.sbf: sfm/normal256/% unicode/uni-16.sbf \
tools/choose tools/vga
	$(perl) tools/choose $< unicode/uni-16.sbf | \
	$(perl) tools/vga 2>&1 >$@; true
	[ -s $@ ] || { rm $@; false; }

sbf/%-16.sbf: sfm/normal512/% unicode/uni-16.sbf \
tools/choose tools/vga
	$(perl) tools/choose $< unicode/uni-16.sbf | \
	$(perl) tools/vga -512 2>&1 >$@; true
	[ -s $@ ] || { rm $@; false; }

sbf/%-16.sbf: sfm/compact256/% unicode/uni-16.sbf \
tools/choose tools/compact tools/vga
	$(perl) tools/choose $< unicode/uni-16.sbf | \
	$(perl) tools/compact | \
	$(perl) tools/vga 2>&1 >$@; true
	[ -s $@ ] || { rm $@; false; }

sbf/%-16.sbf: sfm/compact512/% unicode/uni-16.sbf \
tools/choose tools/compact tools/vga
	$(perl) tools/choose $< unicode/uni-16.sbf | \
	$(perl) tools/compact | \
	$(perl) tools/vga -512 2>&1 >$@; true
	[ -s $@ ] || { rm $@; false; }

###############################################################################

psf/%.psf: sbf/%.sbf \
tools/sbf2psf
	$(perl) tools/sbf2psf $< >$@

###############################################################################

mksfm: sfmlist
	$(perl) -ne '							\
		while (s/\\$$//)					\
		{							\
			$$_ .= <>;					\
			last if eof;					\
		}							\
		@F = split;						\
		next unless @F > 1;					\
		print "sfm/$$F[0]:",					\
		(							\
			map						\
			{						\
				-e "charsets/$$_" ?			\
					" charsets/$$_"			\
				:					\
					" sfm-devel/$$_"		\
			}						\
				@F[1 .. $$#F]				\
		),							\
		" tools/cut2 tools/noctrl tools/ascii\
			tools/utf8-U+xxxx\n\t{ ",			\
		(							\
			map						\
			{						\
				-e "charsets/$$_" ?			\
					"\$$(perl) tools/cut2\
						charsets/$$_; "		\
				:					\
					"cat sfm-devel/$$_; "		\
			}						\
				@F[1 .. $$#F]				\
		),							\
		"} |\
			\$$(perl) tools/noctrl |\
			sort -u |\
			\$$(perl) tools/ascii |\
			\$$(perl) tools/utf8-U+xxxx >\$$\@\n";		\
	' $< >$@

-include mksfm

###############################################################################

dynafont/wrapper: dynafont/wrapper.in \
relativepath
	sed -e "s|@fonts@|$$(./relativepath \
		$(konwertsharedir)/filters \
		$(consolefontsdir))|g" \
	-e "s|@libaux@|$$(./relativepath \
		$(konwertsharedir)/filters \
		$(konwertlibdir)/aux)|g" $< >$@
	chmod +x $@

###############################################################################

install: all
	install -d \
		$(consolefontsdir) \
		$(consoletransdir) \
		$(konwertsharedir)/filters \
		$(konwertlibdir)/aux \
		$(docdir)
	for a in psf/*.psf; do \
		gzip -c $$a >$(consolefontsdir)/$${a##*/}.gz; \
	done
	gzip -c qrczak.fallback >$(consoletransdir)/qrczak.fallback.gz
	install -m755 -s dynafont/dynafont $(konwertlibdir)/aux/dynafont
	install -m755 dynafont/wrapper $(konwertsharedir)/filters/dynafont
	gzip -c unicode/uni-compact-16.sbf \
		>$(consolefontsdir)/uni.sbf.gz
#	gzip -c unicode/tengwar-16.sbf \
#		>$(consolefontsdir)/tengwar.sbf.gz
	cp -dRf doc/* $(docdir)

###############################################################################

uninstall:
	rm -f \
		$(patsubst psf/%,$(consolefontsdir)/%.gz,$(psf)) \
		$(consoletransdir)/qrczak.fallback.gz \
		$(konwertlibdir)/aux/dynafont \
		$(konwertsharedir)/filters/dynafont \
		$(consolefontsdir)/uni.sbf.gz
	rm -rf $(docdir)

###############################################################################

clean:
	-rm -f $(targets)

###############################################################################

tgz: clean
	cd .. && tar czf fonty-$(version).tar.gz fonty-$(version)

###############################################################################

rpm: tgz
	cd .. && rpm -ta fonty-$(version).tar.gz

###############################################################################
