added arrows U+2905, U+2912-U+2913, U+2916, U+2919-291C
[dejavu.git] / dejavu-fonts / Makefile
blob82bf23b0cd4b7e1defc5f2d68ebf523230c7e6d7
1 .PHONY: all check munge full sans lgc ttf full-ttf sans-ttf lgc-ttf status dist src-dist full-dist sans-dist lgc-dist norm check-harder pre-patch clean
3 # Release version
4 VERSION = 2.21
5 # Snapshot version
6 SNAPSHOT =
7 # Initial source directory, assumed read-only
8 SRCDIR = src
9 # Directory where temporary files live
10 TMPDIR = tmp
11 # Directory where final files are created
12 BUILDDIR = build
13 # Directory where final archives are created
14 DISTDIR = dist
16 # Release layout
17 BINDIR = .
18 FONTCONFDIR = fontconfig
19 DOCDIR = .
20 SCRIPTSDIR = scripts
21 TTFDIR = ttf
22 RESOURCEDIR = resources
24 ifeq "$(SNAPSHOT)" ""
25 ARCHIVEVER = $(VERSION)
26 else
27 ARCHIVEVER = $(VERSION)-$(SNAPSHOT)
28 endif
30 SRCARCHIVE = dejavu-fonts-$(ARCHIVEVER)
31 FULLARCHIVE = dejavu-fonts-ttf-$(ARCHIVEVER)
32 SANSARCHIVE = dejavu-sans-ttf-$(ARCHIVEVER)
33 LGCARCHIVE = dejavu-lgc-fonts-ttf-$(ARCHIVEVER)
35 ARCHIVEEXT = .zip .tar.bz2
36 SUMEXT = .zip.md5 .tar.bz2.md5 .tar.bz2.sha512
38 OLDSTATUS = $(DOCDIR)/status.txt
39 BLOCKS = $(RESOURCEDIR)/Blocks.txt
40 UNICODEDATA = $(RESOURCEDIR)/UnicodeData.txt
41 FC-LANG = $(RESOURCEDIR)/fc-lang
43 GENERATE = $(SCRIPTSDIR)/generate.pe
44 TTPOSTPROC = $(SCRIPTSDIR)/ttpostproc.pl
45 LGC = $(SCRIPTSDIR)/lgc.pe
46 UNICOVER = $(SCRIPTSDIR)/unicover.pl
47 LANGCOVER = $(SCRIPTSDIR)/langcover.pl
48 STATUS = $(SCRIPTSDIR)/status.pl
49 PROBLEMS = $(SCRIPTSDIR)/problems.pl
50 NORMALIZE = $(SCRIPTSDIR)/sfdnormalize.pl
52 SRC := $(wildcard $(SRCDIR)/*.sfd)
53 SFDFILES := $(patsubst $(SRCDIR)/%, %, $(SRC))
54 FULLSFD := $(patsubst $(SRCDIR)/%.sfd, $(TMPDIR)/%.sfd, $(SRC))
55 NORMSFD := $(patsubst %, %.norm, $(FULLSFD))
56 LGCSFD := $(patsubst $(SRCDIR)/DejaVu%.sfd, $(TMPDIR)/DejaVuLGC%.sfd, $(SRC))
57 FULLTTF := $(patsubst $(TMPDIR)/%.sfd, $(BUILDDIR)/%.ttf, $(FULLSFD))
58 LGCTTF := $(patsubst $(TMPDIR)/%.sfd, $(BUILDDIR)/%.ttf, $(LGCSFD))
60 FONTCONF := $(wildcard $(FONTCONFDIR)/*.conf)
61 FONTCONFLGC := $(wildcard $(FONTCONFDIR)/*lgc*.conf)
62 FONTCONFFULL := $(filter-out $(FONTCONFLGC), $(FONTCONF))
64 STATICDOC := $(addprefix $(DOCDIR)/, AUTHORS BUGS LICENSE NEWS README)
65 GENDOCFULL = unicover.txt langcover.txt status.txt
66 GENDOCSANS = unicover-sans.txt langcover-sans.txt
67 GENDOCLGC = unicover-lgc.txt langcover-lgc.txt
69 all : full sans lgc
71 $(TMPDIR)/%.sfd: $(SRCDIR)/%.sfd
72 @echo "[1] $< => $@"
73 install -d $(dir $@)
74 sed "s@\(Version:\? \)\(0\.[0-9]\+\.[0-9]\+\|[1-9][0-9]*\.[0-9]\+\)@\1$(VERSION)@" $< > $@
75 touch -r $< $@
77 $(TMPDIR)/DejaVuLGC%.sfd: $(TMPDIR)/DejaVu%.sfd
78 @echo "[2] $< => $@"
79 sed -e 's,FontName: DejaVu,FontName: DejaVuLGC,'\
80 -e 's,FullName: DejaVu,FullName: DejaVu LGC,'\
81 -e 's,FamilyName: DejaVu,FamilyName: DejaVu LGC,'\
82 -e 's,"DejaVu \(\(Sans\|Serif\)*\( Condensed\| Mono\)*\( Bold\)*\( Oblique\|Italic\)*\)","DejaVu LGC \1",g' < $< > $@
83 @echo "Stripping unwanted glyphs from $@"
84 $(LGC) $@
85 touch -r $< $@
87 $(BUILDDIR)/%.ttf: $(TMPDIR)/%.sfd
88 @echo "[3] $< => $@"
89 install -d $(dir $@)
90 $(GENERATE) $<
91 mv $<.ttf $@
92 $(TTPOSTPROC) $@
93 $(RM) $@~
94 touch -r $< $@
96 $(BUILDDIR)/status.txt: $(FULLSFD)
97 @echo "[4] => $@"
98 install -d $(dir $@)
99 $(STATUS) $(VERSION) $(OLDSTATUS) $(FULLSFD) > $@
101 $(BUILDDIR)/unicover.txt: $(patsubst %, $(TMPDIR)/%.sfd, DejaVuSans DejaVuSerif DejaVuSansMono)
102 @echo "[5] => $@"
103 install -d $(dir $@)
104 $(UNICOVER) $(UNICODEDATA) $(BLOCKS) \
105 $(TMPDIR)/DejaVuSans.sfd "Sans" \
106 $(TMPDIR)/DejaVuSerif.sfd "Serif" \
107 $(TMPDIR)/DejaVuSansMono.sfd "Sans Mono" > $@
109 $(BUILDDIR)/unicover-sans.txt: $(TMPDIR)/DejaVuSans.sfd
110 @echo "[5] => $@"
111 install -d $(dir $@)
112 $(UNICOVER) $(UNICODEDATA) $(BLOCKS) \
113 $(TMPDIR)/DejaVuSans.sfd "Sans" > $@
115 $(BUILDDIR)/unicover-lgc.txt: $(patsubst %, $(TMPDIR)/%.sfd, DejaVuLGCSans DejaVuLGCSerif DejaVuLGCSansMono)
116 @echo "[5] => $@"
117 install -d $(dir $@)
118 $(UNICOVER) $(UNICODEDATA) $(BLOCKS) \
119 $(TMPDIR)/DejaVuLGCSans.sfd "Sans" \
120 $(TMPDIR)/DejaVuLGCSerif.sfd "Serif" \
121 $(TMPDIR)/DejaVuLGCSansMono.sfd "Sans Mono" > $@
123 $(BUILDDIR)/langcover.txt: $(patsubst %, $(TMPDIR)/%.sfd, DejaVuSans DejaVuSerif DejaVuSansMono)
124 @echo "[6] => $@"
125 install -d $(dir $@)
126 ifeq "$(FC-LANG)" ""
127 touch $@
128 else
129 $(LANGCOVER) $(FC-LANG) \
130 $(TMPDIR)/DejaVuSans.sfd "Sans" \
131 $(TMPDIR)/DejaVuSerif.sfd "Serif" \
132 $(TMPDIR)/DejaVuSansMono.sfd "Sans Mono" > $@
133 endif
135 $(BUILDDIR)/langcover-sans.txt: $(TMPDIR)/DejaVuSans.sfd
136 @echo "[6] => $@"
137 install -d $(dir $@)
138 ifeq "$(FC-LANG)" ""
139 touch $@
140 else
141 $(LANGCOVER) $(FC-LANG) \
142 $(TMPDIR)/DejaVuSans.sfd "Sans" > $@
143 endif
145 $(BUILDDIR)/langcover-lgc.txt: $(patsubst %, $(TMPDIR)/%.sfd, DejaVuLGCSans DejaVuLGCSerif DejaVuLGCSansMono)
146 @echo "[6] => $@"
147 install -d $(dir $@)
148 ifeq "$(FC-LANG)" ""
149 touch $@
150 else
151 $(LANGCOVER) $(FC-LANG) \
152 $(TMPDIR)/DejaVuLGCSans.sfd "Sans" \
153 $(TMPDIR)/DejaVuLGCSerif.sfd "Serif" \
154 $(TMPDIR)/DejaVuLGCSansMono.sfd "Sans Mono" > $@
155 endif
157 $(BUILDDIR)/Makefile: Makefile
158 @echo "[7] => $@"
159 install -d $(dir $@)
160 sed -e "s+^VERSION\([[:space:]]*\)=\(.*\)+VERSION = $(VERSION)+g"\
161 -e "s+^SNAPSHOT\([[:space:]]*\)=\(.*\)+SNAPSHOT = $(SNAPSHOT)+g" < $< > $@
162 touch -r $< $@
164 $(TMPDIR)/$(SRCARCHIVE): $(addprefix $(BUILDDIR)/, $(GENDOCFULL) Makefile) $(FULLSFD)
165 @echo "[8] => $@"
166 install -d -m 0755 $@/{$(BINDIR),$(SRCDIR),$(FONTCONFDIR),$(DOCDIR)}
167 install -p -m 0644 $(BUILDDIR)/Makefile $@
168 install -p -m 0755 $(GENERATE) $(TTPOSTPROC) $(LGC) $(NORMALIZE) \
169 $(UNICOVER) $(LANGCOVER) $(STATUS) $(PROBLEMS) \
170 $@/$(BINDIR)
171 install -p -m 0644 $(FULLSFD) $@/$(SRCDIR)
172 install -p -m 0644 $(FONTCONF) $@/$(FONTCONFDIR)
173 install -p -m 0644 $(addprefix $(BUILDDIR)/, $(GENDOCFULL)) \
174 $(STATICDOC) $@/$(DOCDIR)
176 $(TMPDIR)/$(FULLARCHIVE): full
177 @echo "[8] => $@"
178 install -d -m 0755 $@/{$(TTFDIR),$(FONTCONFDIR),$(DOCDIR)}
179 install -p -m 0644 $(FULLTTF) $@/$(TTFDIR)
180 install -p -m 0644 $(FONTCONFFULL) $@/$(FONTCONFDIR)
181 install -p -m 0644 $(addprefix $(BUILDDIR)/, $(GENDOCFULL)) \
182 $(STATICDOC) $@/$(DOCDIR)
184 $(TMPDIR)/$(SANSARCHIVE): sans
185 @echo "[8] => $@"
186 install -d -m 0755 $@/{$(TTFDIR),$(DOCDIR)}
187 install -p -m 0644 $(BUILDDIR)/DejaVuSans.ttf $@/$(TTFDIR)
188 install -p -m 0644 $(addprefix $(BUILDDIR)/, $(GENDOCSANS)) \
189 $(STATICDOC) $@/$(DOCDIR)
191 $(TMPDIR)/$(LGCARCHIVE): lgc
192 @echo "[8] => $@"
193 install -d -m 0755 $@/{$(TTFDIR),$(FONTCONFDIR),$(DOCDIR)}
194 install -p -m 0644 $(LGCTTF) $@/$(TTFDIR)
195 install -p -m 0644 $(FONTCONFLGC) $@/$(FONTCONFDIR)
196 install -p -m 0644 $(addprefix $(BUILDDIR)/, $(GENDOCLGC)) \
197 $(STATICDOC) $@/$(DOCDIR)
199 $(DISTDIR)/%.zip: $(TMPDIR)/%
200 @echo "[9] => $@"
201 install -d $(dir $@)
202 (cd $(TMPDIR); zip -rv $(abspath $@) $(notdir $<))
204 $(DISTDIR)/%.tar.bz2: $(TMPDIR)/%
205 @echo "[9] => $@"
206 install -d $(dir $@)
207 (cd $(TMPDIR); tar cjvf $(abspath $@) $(notdir $<))
209 %.md5: %
210 @echo "[10] => $@"
211 (cd $(dir $<); md5sum -b $(notdir $<) > $(abspath $@))
213 %.sha512: %
214 @echo "[10] => $@"
215 (cd $(dir $<); sha512sum -b $(notdir $<) > $(abspath $@))
217 %.sfd.norm: %.sfd
218 @echo "[11] $< => $@"
219 $(NORMALIZE) $<
220 touch -r $< $@
222 check : $(NORMSFD)
223 for sfd in $^ ; do \
224 echo "[12] Checking $$sfd" ;\
225 $(PROBLEMS) $$sfd ;\
226 done
228 munge: $(NORMSFD)
229 for sfd in $(SFDFILES) ; do \
230 echo "[13] $(TMPDIR)/$$sfd.norm => $(SRCDIR)/$$sfd" ;\
231 cp -p $(TMPDIR)/$$sfd.norm $(SRCDIR)/$$sfd ;\
232 done
234 full : $(FULLTTF) $(addprefix $(BUILDDIR)/, $(GENDOCFULL))
236 sans : $(addprefix $(BUILDDIR)/, DejaVuSans.ttf $(GENDOCSANS))
238 lgc : $(LGCTTF) $(addprefix $(BUILDDIR)/, $(GENDOCLGC))
240 ttf : full-ttf sans-ttf lgc-ttf
242 full-ttf : $(FULLTTF)
244 sans-ttf: $(BUILDDIR)/DejaVuSans.ttf
246 lgc-ttf : $(LGCTTF)
248 status : $(addprefix $(BUILDDIR)/, $(GENDOCFULL))
250 dist : src-dist full-dist sans-dist lgc-dist
252 src-dist : $(addprefix $(DISTDIR)/$(SRCARCHIVE), $(ARCHIVEEXT) $(SUMEXT))
254 full-dist : $(addprefix $(DISTDIR)/$(FULLARCHIVE), $(ARCHIVEEXT) $(SUMEXT))
256 sans-dist : $(addprefix $(DISTDIR)/$(SANSARCHIVE), $(ARCHIVEEXT) $(SUMEXT))
258 lgc-dist : $(addprefix $(DISTDIR)/$(LGCARCHIVE), $(ARCHIVEEXT) $(SUMEXT))
260 norm : $(NORMSFD)
262 check-harder : clean check
264 pre-patch : munge clean
266 clean :
267 $(RM) -r $(TMPDIR) $(BUILDDIR) $(DISTDIR)