## Makefile
## Copyright 2011, 2012 Mohamed El Morabity
#
# This work may be distributed and/or modified under the conditions of the LaTeX
# Project Public License, either version 1.3 of this license or (at your option)
# any later version. The latest version of this license is in
# http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all
# distributions of LaTeX version 2005/12/01 or later.
#
# This work has the LPPL maintenance status `maintained'.
#
# The Current Maintainer of this work is Mohamed El Morabity
#
# This work consists of all files listed in manifest.txt.

######################
# Fonts informations #
######################

FONT_NAME = cantarell
FOUNDRY = public
FONT_CODES = fca

# Supported LaTeX encodings
SUPPORTED_ENCODINGS = ot1 t1 ts1 t2a t2b t2c x2 # lgr
# Supported LaTeX encodings containing small caps
SUPPORTED_SC_ENCODINGS = $(filter-out ts1,$(SUPPORTED_ENCODINGS))
# Custom encodings provided
INPUT_ENCODINGS = $(INPUT_ETX_FILES:$(FONT_NAME)-%.etx=%)


#####################
# Installation root #
#####################

TEXMFHOME = $(shell kpsexpand '$$TEXMFHOME')


###########
# Archive #
###########

ARCHIVE_ROOT = $(FONT_NAME)
ARCHIVE = $(FONT_NAME).zip


###########
# Sources #
###########

FONTFORGE_FILES = $(wildcard *.sfd)

# Fontinst files
FONTINST_FILE = $(FONT_NAME)-drv.tex
FONTINST_MAP_FILE = $(FONT_NAME)-map.tex

# Custom Fontinst encoding files
INPUT_ETX_FILES = $(FONT_NAME)-01.etx $(FONT_NAME)-02.etx $(FONT_NAME)-03.etx
MTX_FILES = $(FONT_NAME)-fixlatin.mtx $(FONT_NAME)-fixtextcomp.mtx $(FONT_NAME)-fixcyrillic.mtx $(FONT_NAME)-fixgreek.mtx

STYLE_FILES = $(wildcard *.sty)

DOCUMENTATION = $(FONT_NAME).tex $(FONT_NAME).pdf $(FONT_NAME)-samples.tex $(FONT_NAME)-samples.pdf README CHANGES

# Files to be installed in texmf/source
SOURCE_FILES = $(FONTFORGE_FILES) $(FONTINST_FILE) $(FONTINST_MAP_FILE) $(INPUT_ETX_FILES) $(MTX_FILES) Makefile sfd2type1.pe


###################
# Generated files #
###################

TYPE1_FILES = $(FONTFORGE_FILES:.sfd=.pfb)
AFM_FILES = $(TYPE1_FILES:.pfb=.afm)

# Fontinst log file
FONTINST_REC_FILE = $(FONT_NAME)-rec.tex

# Metrics files
PL_FILES = $(foreach e,$(INPUT_ENCODINGS),            \
             $(FONTFORGE_FILES:.sfd=-$(e).pl)         \
             $(FONTFORGE_FILES:.sfd=-Slanted-$(e).pl) \
           )
OUTPUT_MTX_FILES = $(PL_FILES:.pl=.mtx)
VPL_FILES = $(foreach e,$(SUPPORTED_ENCODINGS),                   \
              $(FONTFORGE_FILES:.sfd=-$(e).vpl)                   \
              $(FONTFORGE_FILES:.sfd=-Slanted-$(e).vpl)           \
            )                                                     \
            $(foreach e,$(SUPPORTED_SC_ENCODINGS),                \
              $(FONTFORGE_FILES:.sfd=-SmallCaps-$(e).vpl)         \
              $(FONTFORGE_FILES:.sfd=-Slanted-SmallCaps-$(e).vpl) \
            )
TFM_FILES = $(PL_FILES:.pl=.tfm) $(VPL_FILES:.vpl=.tfm)
VF_FILES = $(VPL_FILES:.vpl=.vf)

MAP = $(FONT_NAME).map

# Font definition files
FD_FILES = $(foreach e,$(SUPPORTED_ENCODINGS), \
             $(foreach f,$(FONT_CODES),        \
               $(e)$(f).fd                     \
             )                                 \
           )

# Generated encoding files
ENC_FILES = $(INPUT_ETX_FILES:.etx=.enc)

# Generated files to be installed
GENERATED_FILES = $(TYPE1_FILES) $(AFM_FILES) $(TFM_FILES) $(VF_FILES) $(MAP) $(FD_FILES) $(ENC_FILES)


default: all


all: dist


dist: $(ARCHIVE)


%.pfb %.afm: %.sfd
	fontforge sfd2type1.pe $<


%.tfm: %.pl
	pltotf $< $@


%.tfm: %.vpl
	vptovf $^ $


%.vf: %.vpl
	vptovf $^ $@


$(FONTINST_REC_FILE): $(AFM_FILES) $(MTX_FILES) $(FONTINST_FILE)
	latex $(FONTINST_FILE)


$(PL_FILES) $(VPL_FILES): $(FONTINST_REC_FILE)


$(MAP): $(FONTINST_REC_FILE) $(FONTINST_MAP_FILE)
	latex $(FONTINST_MAP_FILE)


$(FD_FILES) $(ENC_FILES): $(MAP)


texmf-tree: clean-texmf-tree $(GENERATED_FILES) $(SOURCES_FILES)
	mkdir -p $(ARCHIVE_ROOT)/doc/fonts/$(FONT_NAME)/
	mkdir -p $(ARCHIVE_ROOT)/tex/latex/$(FONT_NAME)/
	mkdir -p $(ARCHIVE_ROOT)/fonts/{enc,map}/dvips/$(FONT_NAME)/
	mkdir -p $(ARCHIVE_ROOT)/fonts/{afm,tfm,type1,vf}/$(FOUNDRY)/$(FONT_NAME)/
	mkdir -p $(ARCHIVE_ROOT)/source/fonts/$(FONT_NAME)/
	cp -p $(DOCUMENTATION) $(ARCHIVE_ROOT)/doc/fonts/$(FONT_NAME)/
	cp -p $(FD_FILES) $(STYLE_FILES) $(ARCHIVE_ROOT)/tex/latex/$(FONT_NAME)/
	cp -p $(ENC_FILES) $(ARCHIVE_ROOT)/fonts/enc/dvips/$(FONT_NAME)/
	cp -p $(MAP) $(ARCHIVE_ROOT)/fonts/map/dvips/$(FONT_NAME)/
	cp -p $(AFM_FILES) $(ARCHIVE_ROOT)/fonts/afm/$(FOUNDRY)/$(FONT_NAME)/
	cp -p $(TFM_FILES) $(ARCHIVE_ROOT)/fonts/tfm/$(FOUNDRY)/$(FONT_NAME)/
	cp -p $(TYPE1_FILES) $(ARCHIVE_ROOT)/fonts/type1/$(FOUNDRY)/$(FONT_NAME)/
	cp -p $(VF_FILES) $(ARCHIVE_ROOT)/fonts/vf/$(FOUNDRY)/$(FONT_NAME)/
	cp -p $(SOURCE_FILES) $(ARCHIVE_ROOT)/source/fonts/$(FONT_NAME)/
	cp -p README $(ARCHIVE_ROOT)
	cd $(ARCHIVE_ROOT) && find . -type f > manifest.txt


$(ARCHIVE): clean-texmf-tree texmf-tree
	zip -r $@ $(ARCHIVE_ROOT)


install: texmf-tree
	mkdir -p $(TEXMFHOME)
	cp -a $(ARCHIVE_ROOT)/* $(TEXMFHOME)
	texhash
	updmap --enable Map=$(MAP)


uninstall:
	$(RM) -r $(TEXMFHOME)/doc/latex/$(FONT_NAME)/
	$(RM) -r $(TEXMFHOME)/tex/latex/$(FONT_NAME)/
	$(RM) -r $(TEXMFHOME)/fonts/{enc,map}/dvips/$(FONT_NAME)/
	$(RM) -r $(TEXMFHOME)/fonts/{afm,tfm,type1,vf}/$(FOUNDRY)/$(FONT_NAME)/
	$(RM) -r $(TEXMFHOME)/source/$(FONT_NAME)/
	updmap --disable $(MAP)
	texhash


clean: clean-texmf-tree
	$(RM) $(TYPE1_FILES) $(AFM_FILES)
	$(RM) $(FONTINST_REC_FILE)
	$(RM) $(PL_FILES) $(TYPE1_FILES:.pfb=.pl)
	$(RM) $(OUTPUT_MTX_FILES) $(TYPE1_FILES:.pfb=.mtx)
	$(RM) $(VPL_FILES)
	$(RM) $(TFM_FILES)
	$(RM) $(VF_FILES)
	$(RM) $(MAP)
	$(RM) $(FD_FILES)
	$(RM) $(ENC_FILES)
	$(RM) $(ARCHIVE)
	$(RM) *~ *.log


clean-texmf-tree:
	$(RM) -r $(ARCHIVE_ROOT)


.PHONY: clean clean-texmf-tree texmf-tree
