#!/usr/bin/make -f
# -*- makefile -*-

# debian/rules file
# GNU GPL v2 or higher, Copyright (C) 2005-2012, Danai SAE-HAN (韓達耐) <danai@debian.org>

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# Support parallel builds when available.
# Cfr. Debian bugs #209008 and #458740.
#ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
#    NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
#    MAKEFLAGS += -j$(NUMJOBS)
#endif


# Arphic PL fonts information

fonts = bsmi bkai gbsn gkai

bsmi_typeface = bsmi00lp
bsmi_namestem = bsmi
bsmi_sfdnamestem = bsmilp
bsmi_uninamestem = bsmiu
bsmi_familyname = AR PL Mingti2L Big5
bsmi_encoding = UBig5
bsmi_hoffset = -0.12em
bsmi_vertical = yes

bkai_typeface = bkai00mp
bkai_namestem = bkai
bkai_sfdnamestem = bkaimp
bkai_uninamestem = bkaiu
bkai_familyname = AR PL KaitiM Big5
bkai_encoding = UBig5
bkai_hoffset = -0.12em
bkai_vertical = yes

gbsn_typeface = gbsn00lp
gbsn_namestem = gbsn
gbsn_sfdnamestem = gbsnlp
gbsn_uninamestem = gbsnu
gbsn_familyname = AR PL SungtiL GB
gbsn_encoding = UGB
gbsn_hoffset = -0.12em
gbsn_vertical = no

gkai_typeface = gkai00mp
gkai_namestem = gkai
gkai_sfdnamestem = gkaimp
gkai_uninamestem = gkaiu
gkai_familyname = AR PL KaitiM GB
gkai_encoding = UGB
gkai_hoffset = -0.12em
gkai_vertical = no

cjk_fontencoding = 0
UBig5_planes = 55
UBig5_inputencoding = 0
UBig5_texinput = usr/share/texmf/tex/latex/CJK/Bg5/
UBig5_codingscheme = cjkbig5
UGB_planes = 35
UGB_inputencoding = 1
UGB_texinput = usr/share/texmf/tex/latex/CJK/GB/
UGB_codingscheme = cjkgb

fonttype = truetype
supplier = arphic

typeface = $($(abbrev)_typeface)
familyname = $($(abbrev)_familyname)
encoding = $($(abbrev)_encoding)
namestem = $($(abbrev)_namestem)
sfdnamestem = $($(abbrev)_sfdnamestem)
uninamestem = $($(abbrev)_uninamestem)
planes = $($(encoding)_planes)
nfss_fontencoding = $($(encoding)_inputencoding)$(cjk_fontencoding)
codingscheme = $($(encoding)_codingscheme)
bin-package = latex-cjk-chinese-$(supplier)-$(typeface)
binary_fonts = $(addprefix binary_,$(fonts))
build-stamp_fonts = $(addprefix build-stamp.,$(fonts))
install_fonts = $(addprefix install_,$(fonts))
clean_fonts = $(addprefix clean_,$(fonts))
vertical = $($(abbrev)_vertical)

# Path names

d = debian/$(bin-package)
texmf = usr/share/texmf
fontpath = usr/share/fonts/$(fonttype)
dest_texfontpath = $(texmf)/fonts/$(fonttype)/$(supplier)
dest_afmpath = $(texmf)/fonts/afm/$(supplier)/$(uninamestem)
dest_type1path = $(texmf)/fonts/type1/$(supplier)/$(uninamestem)
dest_uni-tfmpath = $(texmf)/fonts/tfm/$(supplier)/$(uninamestem)
dest_sfd-tfmpath = $(texmf)/fonts/tfm/$(supplier)/$(sfdnamestem)
dest_vfpath = $(texmf)/fonts/vf/$(supplier)/$(namestem)
dest_docpath = usr/share/doc/texmf/fonts/$(fonttype)/$(supplier)
dest_fd = $($(encoding)_texinput)
builddir = build/$(typeface)
sfddir = /usr/share/texlive/texmf-dist/fonts/sfd/ttf2pk


# Since Debian standards version 3.9.4 the build-* targets are
# required.  This package does not compile any programs, it
# only converts fonts from one format to another.
# Hence I deem it more useful to keep the whole font-building
# process in the corresponding "binary-*" targets.
build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp: $(build-stamp_fonts)
	dh_testdir

# Add here commands to compile the package.

	touch build-stamp

$(build-stamp_fonts): abbrev = $(patsubst build-stamp.%,%,$@)
$(build-stamp_fonts):
	dh_testdir
	mkdir -p $(builddir)
	( cd $(builddir) && ln -s /$(fontpath)/$(supplier)-$(typeface)/$(typeface).ttf && cp ../../debian/latex-cjk/* . )

	# You will find a detailed log of the build process in $(builddir)/log.

	# Create Unicode encoded subfonts `$(uninamestem)00' .. `$(uninamestem)ff'.
	# This will take a lot of hours.  Make yourself a nice day.
	( cd $(builddir) && fontforge -script subfonts.pe $(typeface).ttf $(uninamestem) $(sfddir)/Unicode.sfd )
	@echo


	# Create font `$(uninamestem)v' with all vertical glyph representation forms.
	if [ $(vertical) = "yes" ]; \
	then ( cd $(builddir) && fontforge -script vertical.pe $(typeface).ttf $(uninamestem)v ); \
	fi
	@echo

	# Create font `$(uninamestem)vr' which has the same structure as `$(uninamestem)v',
	# but normal glyphs instead of vertical representation forms.
	if [ $(vertical) = "yes" ]; \
	then ( cd $(builddir) && fontforge -script vertref.pe $(typeface).ttf $(uninamestem)vr ); \
	fi
	@echo

	# Create a virtual font `$(sfdnamestem)v' which is a clone of `$(uninamestem)v'.
	if [ $(vertical) = "yes" ]; \
	then ( cd $(builddir) && perl clonevf.pl $(uninamestem)v $(sfdnamestem)v ); \
	fi
	@echo

	# Temporary fix to create vertical files for gkai and gbsn.
	# It builds gkaimpv.tfm AND gkaimpv.vp.tfm.  But no vertical form.
	# Bug to be fixed.
	if [ $(vertical) = "no" ]; \
	then ( cp debian/$(sfdnamestem)v.vp debian/$(uninamestem)* $(builddir)/ && \
	    cd $(builddir) && \
	    for i in *.uu; do uudecode $$i; done && \
	    vptovf $(sfdnamestem)v.vp $(sfdnamestem)v.vf $(sfdnamestem)v.tfm && \
	    pltotf $(uninamestem)v.pl $(uninamestem)v.tfm ); \
	fi

	# Create virtual fonts `$(sfdnamestem)00' .. `$(sfdnamestem)$(planes)' in $(encoding) encoding
	# which use Unicode encoded `$(uninamestem)XX' subfonts as raw fonts
	# and `$(codingscheme)' as the `CODINGSCHEME' parameter value.
	( cd $(builddir) && perl uni2sfd.pl $(uninamestem) $(sfddir)/$(encoding).sfd $(sfdnamestem) $(codingscheme) )
	@echo

	# Create entries for the extended font definition file
	# `c$(nfss_fontencoding)$(namestem).fdx' (which uses $(encoding) encoding), with `$(uninamestem)vr' as
	# the reference font.
	( cd $(builddir) && perl makefdx.pl $(uninamestem)vr.afm $(sfddir)/$(encoding).sfd c$(nfss_fontencoding) $(namestem) )
	@echo

	# Create entries for the extended font definition file
	# `c70$(namestem).fdx' (which uses Unicode encoding), with `$(uninamestem)vr' as
	# the reference font.
	( cd $(builddir) && perl makefdx.pl -u $(uninamestem)vr.afm $(sfddir)/Unicode.sfd c70 $(namestem) )
	@echo

	# Remove the *.enc files; they're not used.
	( cd $(builddir) && rm -f *.enc )
	@echo

	# Create a Type1 font map.
	@( cd $(builddir) && for filename in *.pfb; do if [ $$filename != "$(uninamestem)vr.pfb" ]; then echo "$$(basename $$filename .pfb) $$(basename $$filename .pfb) <$$filename" >> $(uninamestem).map; fi; done )
	@echo

	# Create entries for the font definition file
	# `c$(nfss_fontencoding)$(namestem).fd' (which uses $(encoding) encoding).
	@cd debian && \
	    sed -e 's/@NFSS_FONTENCODING@/$(nfss_fontencoding)/g' \
		-e 's/@NAMESTEM@/$(namestem)/g' \
		-e 's/@ENCODING@/$(encoding)/g' \
		-e 's/@FONTENCODING@/$(encoding)/g' \
		-e 's/@FAMILYNAME@/$(familyname)/g' \
		-e 's/@SUBNAMESTEM@/$(sfdnamestem)/g' \
	        -e 's/@PROVIDESFILE@/c$(nfss_fontencoding)$(namestem).fd/g' \
		font.fd.in > ../$(builddir)/c$(nfss_fontencoding)$(namestem).fd
	@echo

	# Create entries for the font definition file
	# `c70$(namestem).fd' (which uses Unicode encoding).
	@cd debian && \
	    sed -e 's/@NFSS_FONTENCODING@/70/g' \
		-e 's/@NAMESTEM@/$(namestem)/g' \
		-e 's/@ENCODING@/$(encoding)/g' \
		-e 's/@FONTENCODING@/Unicode/g' \
		-e 's/@FAMILYNAME@/$(familyname)/g' \
		-e 's/@SUBNAMESTEM@/$(uninamestem)/g' \
	        -e 's/@PROVIDESFILE@'/c70$(namestem).fd/g \
		font.fd.in > ../$(builddir)/c70$(namestem).fd
	@echo

	touch $@

clean: $(clean_fonts)
	cat debian/control.stem.in debian/control.font.* > debian/control
	rm debian/control.font.*
	dh_testdir debian/font.fd.in debian/latex-cjk/subfonts.pe
	dh_testroot

	dh_clean
	rm -rf build/

$(clean_fonts): abbrev = $(patsubst clean_%,%,$@)
$(clean_fonts): MY_DH_OPTIONS = -p$(bin-package) -P$(d)
$(clean_fonts):
# There was a possible race condition here when running with make -j,
# with >> control. We append to seperate files instead.
	@cd debian && \
	    sed -e 's/@TYPEFACE@/$(typeface)/g' \
		-e 's/@FAMILYNAME@/$(familyname)/g' \
		control.leaf.in >> control.font.$(bin-package)
	@cd debian && \
	    sed -e 's/@ABBREV@/$(abbrev)/g' \
		-e 's/@FAMILYNAME@/$(familyname)/g' \
		-e 's/@TYPEFACE@/$(typeface)/g' \
		copyright.in > $(bin-package).copyright
	dh_prep $(MY_DH_OPTIONS)
	rm -f build-stamp.$(abbrev)

install: build $(install_fonts)
$(install_fonts): abbrev = $(patsubst install_%,%,$@)
$(install_fonts): MY_DH_OPTIONS = -p$(bin-package) -P$(d)
$(install_fonts):
	dh_testdir $(MY_DH_OPTIONS)
	dh_testroot $(MY_DH_OPTIONS)
	dh_prep $(MY_DH_OPTIONS)
	dh_installdirs $(MY_DH_OPTIONS)

binary-indep: build install $(binary_fonts)
$(binary_fonts): abbrev = $(patsubst binary_%,%,$@)
$(binary_fonts): MY_DH_OPTIONS = -p$(bin-package) -P$(d)
$(binary_fonts):
	dh_testdir $(MY_DH_OPTIONS)
	dh_testroot $(MY_DH_OPTIONS)
	dh_installchangelogs $(MY_DH_OPTIONS)
	dh_installdocs $(MY_DH_OPTIONS)
	dh_installdocs debian/README.Debian $(MY_DH_OPTIONS)
	dh_installexamples $(MY_DH_OPTIONS)
	dh_install $(MY_DH_OPTIONS) $(builddir)/*.afm $(dest_afmpath)/
	dh_install $(MY_DH_OPTIONS) $(builddir)/$(uninamestem)*.tfm $(dest_uni-tfmpath)/
	dh_install $(MY_DH_OPTIONS) $(builddir)/$(sfdnamestem)*.tfm $(dest_sfd-tfmpath)/
	dh_install $(MY_DH_OPTIONS) $(builddir)/*.pfb $(dest_type1path)/
	dh_install $(MY_DH_OPTIONS) $(builddir)/*.vf $(dest_vfpath)/
	dh_install $(MY_DH_OPTIONS) $(builddir)/$(uninamestem).map /usr/share/texmf/fonts/map/dvips/arphic/
	dh_install $(MY_DH_OPTIONS) $(builddir)/c$(nfss_fontencoding)$(namestem).fd* $(dest_fd)/
	dh_install $(MY_DH_OPTIONS) $(builddir)/c70$(namestem).fd* usr/share/texmf/tex/latex/CJK/UTF8/
	dh_link $(MY_DH_OPTIONS)
	dh_installtex $(MY_DH_OPTIONS) --flavor=map:config_for_all_maps map=Map,$(uninamestem).map
	dh_strip $(MY_DH_OPTIONS)
	dh_compress $(MY_DH_OPTIONS)
	dh_fixperms $(MY_DH_OPTIONS)
	dh_perl $(MY_DH_OPTIONS)
	dh_lintian $(MY_DH_OPTIONS)
	dh_installdeb $(MY_DH_OPTIONS)
	dh_gencontrol $(MY_DH_OPTIONS)
	dh_md5sums $(MY_DH_OPTIONS)
	dh_builddeb $(MY_DH_OPTIONS)


# Build architecture-dependent files here.
binary-arch: build install
# We have nothing to do by default.

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install\
	build-arch build-indep\
	$(fonts) $(install_fonts) $(binary_fonts) $(clean_fonts)
