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
7 # Initial source directory, assumed read-only
9 # Directory where temporary files live
11 # Directory where final files are created
13 # Directory where final archives are created
18 FONTCONFDIR
= fontconfig
22 RESOURCEDIR
= resources
25 ARCHIVEVER
= $(VERSION
)
27 ARCHIVEVER
= $(VERSION
)-$(SNAPSHOT
)
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
71 $(TMPDIR
)/%.sfd
: $(SRCDIR
)/%.sfd
74 sed
"s@\(Version:\? \)\(0\.[0-9]\+\.[0-9]\+\|[1-9][0-9]*\.[0-9]\+\)@\1$(VERSION)@" $< > $@
77 $(TMPDIR
)/DejaVuLGC
%.sfd
: $(TMPDIR
)/DejaVu
%.sfd
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 $@"
87 $(BUILDDIR
)/%.ttf
: $(TMPDIR
)/%.sfd
96 $(BUILDDIR
)/status.txt
: $(FULLSFD
)
99 $(STATUS
) $(VERSION
) $(OLDSTATUS
) $(FULLSFD
) > $@
101 $(BUILDDIR
)/unicover.txt
: $(patsubst %, $(TMPDIR
)/%.sfd
, DejaVuSans DejaVuSerif DejaVuSansMono
)
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
112 $(UNICOVER
) $(UNICODEDATA
) $(BLOCKS
) \
113 $(TMPDIR
)/DejaVuSans.sfd
"Sans" > $@
115 $(BUILDDIR
)/unicover-lgc.txt
: $(patsubst %, $(TMPDIR
)/%.sfd
, DejaVuLGCSans DejaVuLGCSerif DejaVuLGCSansMono
)
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
)
129 $(LANGCOVER
) $(FC-LANG
) \
130 $(TMPDIR
)/DejaVuSans.sfd
"Sans" \
131 $(TMPDIR
)/DejaVuSerif.sfd
"Serif" \
132 $(TMPDIR
)/DejaVuSansMono.sfd
"Sans Mono" > $@
135 $(BUILDDIR
)/langcover-sans.txt
: $(TMPDIR
)/DejaVuSans.sfd
141 $(LANGCOVER
) $(FC-LANG
) \
142 $(TMPDIR
)/DejaVuSans.sfd
"Sans" > $@
145 $(BUILDDIR
)/langcover-lgc.txt
: $(patsubst %, $(TMPDIR
)/%.sfd
, DejaVuLGCSans DejaVuLGCSerif DejaVuLGCSansMono
)
151 $(LANGCOVER
) $(FC-LANG
) \
152 $(TMPDIR
)/DejaVuLGCSans.sfd
"Sans" \
153 $(TMPDIR
)/DejaVuLGCSerif.sfd
"Serif" \
154 $(TMPDIR
)/DejaVuLGCSansMono.sfd
"Sans Mono" > $@
157 $(BUILDDIR
)/Makefile
: Makefile
160 sed
-e
"s+^VERSION\([[:space:]]*\)=\(.*\)+VERSION = $(VERSION)+g"\
161 -e
"s+^SNAPSHOT\([[:space:]]*\)=\(.*\)+SNAPSHOT = $(SNAPSHOT)+g" < $< > $@
164 $(TMPDIR
)/$(SRCARCHIVE
): $(addprefix $(BUILDDIR
)/, $(GENDOCFULL
) Makefile
) $(FULLSFD
)
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
) \
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
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
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
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
)/%
202 (cd
$(TMPDIR
); zip
-rv
$(abspath
$@
) $(notdir $<))
204 $(DISTDIR
)/%.
tar.bz2
: $(TMPDIR
)/%
207 (cd
$(TMPDIR
); tar cjvf
$(abspath
$@
) $(notdir $<))
211 (cd
$(dir $<); md5sum
-b
$(notdir $<) > $(abspath
$@
))
215 (cd
$(dir $<); sha512sum
-b
$(notdir $<) > $(abspath
$@
))
218 @echo
"[11] $< => $@"
224 echo
"[12] Checking $$sfd" ;\
229 for sfd in
$(SFDFILES
) ; do \
230 echo
"[13] $(TMPDIR)/$$sfd.norm => $(SRCDIR)/$$sfd" ;\
231 cp
-p
$(TMPDIR
)/$$sfd.norm
$(SRCDIR
)/$$sfd ;\
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
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
))
262 check-harder
: clean check
264 pre-patch
: munge
clean
267 $(RM
) -r
$(TMPDIR
) $(BUILDDIR
) $(DISTDIR
)