]> git.donarmstrong.com Git - lilypond.git/commitdiff
Generate a .pe script for one design size at a time.
authorHan-Wen Nienhuys <hanwen@lilypond.org>
Thu, 15 May 2014 09:17:09 +0000 (11:17 +0200)
committerhanwen <hanwen@lilypond.org>
Mon, 26 May 2014 07:48:08 +0000 (09:48 +0200)
In make

 a b: c
   command

is shorthand for

 a: c
   command
 b: c
   command

this means that in parallel builds the same command may be invoked twice.

Fix this by associating each command with only one target, and adding
dummy dependencies. Also, generate the .pe for only one design size at
a time.

mf/GNUmakefile
scripts/build/gen-emmentaler-scripts.py

index 9da619c823df9cda42b3874466293b928b3ab900..0172275c6d6df65cec66a3785ff09c6d35ce1c97 100644 (file)
@@ -30,7 +30,6 @@ BRACES = a b c d e f g h i
 
 OTF_FILES = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.otf) \
            $(outdir)/emmentaler-brace.otf
-PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe)
 OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table) \
             $(BRACES:%=$(outdir)/feta-braces-%.otf-table)
 SVG_FILES = $(OTF_FILES:%.otf=%.svg)
@@ -52,22 +51,6 @@ $(outdir)/emmentaler-brace.otf-table: $(BRACES:%=$(outdir)/feta-braces-%.otf-tab
 $(outdir)/emmentaler-brace.otf-gtable: $(BRACES:%=$(outdir)/feta-braces-%.otf-gtable)
        echo '(design_size . 20)' > $@
 
-
-
-## ugh -- we want this to prevent failing -j2 compiles.
-define FETAxx-PREREQUISITES
-
-
-$(outdir)/feta$(i).otf-table: $(outdir)/feta$(i).lisp \
-                           $(outdir)/feta-noteheads$(i).lisp \
-                           $(outdir)/feta-flags$(i).lisp \
-                           $(outdir)/parmesan$(i).lisp \
-                           $(outdir)/parmesan-noteheads$(i).lisp \
-                           $(outdir)/feta-alphabet$(i).lisp
-endef
-
-$(eval $(foreach i,$(STAFF_SIZES),$(FETAxx-PREREQUISITES)))
-
 $(outdir)/%.otf-table: $(outdir)/%.lisp
        cat $< $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
               $(if $(findstring brace,$<),,$(subst feta,parmesan-noteheads,$<)) \
@@ -82,18 +65,13 @@ $(outdir)/emmentaler-brace.otf: $(outdir)/emmentaler-brace.subfonts \
                                $(outdir)/emmentaler-brace.otf-gtable \
                                $(outdir)/emmentaler-brace.pe
 
-$(outdir)/emmentaler-brace.otf\
- $(outdir)/emmentaler-brace.svg\
- $(outdir)/emmentaler-brace.woff: $(BRACES:%=$(outdir)/feta-braces-%.pfb)
-
 $(outdir)/emmentaler-brace.fontname:
        printf 'emmentaler-brace' > $@
 $(outdir)/emmentaler-brace.subfonts:
        echo $(subst .mf,,$(call src-wildcard,feta-braces-[a-z].mf)) > $@
 
-$(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts
-       $< --dir=$(outdir)
-
+$(outdir)/emmentaler-%.genpe: $(buildscript-dir)/gen-emmentaler-scripts
+       $< --dir=$(outdir) --design-size=$(patsubst emmentaler-%.genpe,%,$(notdir $@))
 
 # Generate emmentaler-*.pe scripts first, and *.otf, *.svg, *.woff files last,
 # so that normally these files aren't regenerated on a subsequent call to make.
@@ -123,16 +101,20 @@ INSTALLATION_OUT_FILES2 = $(SVG_FILES) $(WOFF_FILES)
 
 export MFINPUTS := .:$(MFINPUTS)
 
+# A few rules here generate multiple files from one command line.  For
+# treating this case, we only declare one output explicitly, and use a
+# dummy rules for the other outputs. The dummy rule uses
+# $(UPDATE_TARGET) so the order of writing in the real command does
+# not confuse make.
+UPDATE_TARGET = if test -f $@; then touch $@ ; fi
+
 # only for fonts which
 #
 # 1. are mentioned in font.scm
 #
 # 2. are not included with teTeX
 #
-$(outdir)/%.lisp \
-$(outdir)/%.otf-gtable \
-$(outdir)/%.enc \
-$(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm
+$(outdir)/%.lisp: $(outdir)/%.log $(outdir)/%.tfm
        $(buildscript-dir)/mf-to-table \
                --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) \
                --lisp=$(outdir)/$(<F:.log=.lisp) \
@@ -140,11 +122,12 @@ $(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm
                --enc $(outdir)/$(<F:.log=.enc) \
                $<
 
+$(outdir)/%.otf-gtable $(outdir)/%.enc: $(outdir)/%.lisp
+       $(UPDATE_TARGET)
+
 ## Putting pfb here forces all .pfb fonts to be built before
 # fontforge starts generating emmentaler-*.* fonts.
-$(outdir)/emmentaler-%.otf \
-$(outdir)/emmentaler-%.svg \
-$(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.pe \
+$(outdir)/emmentaler-%.otf: $(outdir)/emmentaler-%.genpe \
                            $(outdir)/feta%.pfb \
                            $(outdir)/feta-noteheads%.pfb \
                            $(outdir)/feta-flags%.pfb \
@@ -156,14 +139,18 @@ $(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.pe \
                            | pfb
        cd $(outdir) && $(FONTFORGE) -script $(notdir $<)
 
-$(outdir)/emmentaler-brace.otf\
- $(outdir)/emmentaler-brace.svg\
- $(outdir)/emmentaler-brace.woff: $(outdir)/emmentaler-brace.pe\
+$(outdir)/emmentaler-%.svg $(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.otf
+       $(UPDATE_TARGET)
+
+$(outdir)/emmentaler-brace.otf: $(outdir)/emmentaler-brace.pe\
                       $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfb) \
                       $(outdir)/emmentaler-brace.otf-table $(outdir)/emmentaler-brace.otf-gtable \
                       | pfb
        cd $(outdir) && $(FONTFORGE) -script emmentaler-brace.pe
 
+$(outdir)/emmentaler-brace.svg $(outdir)/emmentaler-brace.woff: $(outdir)/emmentaler-brace.otf
+       $(UPDATE_TARGET)
+
 default: $(ALL_GEN_FILES) \
         $(outdir)/emmentaler-20.otf \
         tree-regen \
@@ -175,16 +162,6 @@ default: $(ALL_GEN_FILES) \
 tree-regen: $(ALL_GEN_FILES)
        ${MAKE} -C $(top-build-dir) link-mf-tree
 
-$(outdir)/%.lisp \
-$(outdir)/%.otf-gtable \
-$(outdir)/%.enc \
-$(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm
-       $(buildscript-dir)/mf-to-table \
-               --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) \
-               --lisp=$(outdir)/$(<F:.log=.lisp) \
-               --outdir=$(outdir) \
-               --enc $(outdir)/$(<F:.log=.enc) \
-               $<
 
 local-clean:
        rm -f mfplain.mem mfplain.log
@@ -194,9 +171,14 @@ local-clean:
 $(outdir)/fonts.conf:
        echo '<fontconfig><dir>'$(shell cd $(outdir); pwd)'</dir></fontconfig>' > $@
 
-$(NCSB_OTFS): $(NCSB_SOURCE_FILES) \
+
+$(outdir)/CenturySchL-Roma.otf: $(NCSB_SOURCE_FILES) \
              $(auxscript-dir)/pfx2ttf.fontforge
        $(foreach i, $(basename $(NCSB_SOURCE_FILES)), \
                $(FONTFORGE) -script $(auxscript-dir)/pfx2ttf.fontforge \
                        $(i).pfb $(i).afm $(outdir)/ && ) true
-# eof
+
+$(addprefix $(outdir)/,CenturySchL-Ital.otf \
+       CenturySchL-Bold.otf \
+       CenturySchL-BoldItal.otf): $(outdir)/CenturySchL-Roma.otf
+       $(UPDATE_TARGET)
index 9f645b59295b8d797fc790af527d050a5f86da72..935baafca426afac9d09d56c12e20ad050611dd7 100644 (file)
@@ -6,25 +6,26 @@ import os
 
 (options, files) = \
  getopt.getopt (sys.argv[1:],
-        '',
-        ['dir='])
-
+                '',
+                ['dir=', 'design-size='])
 
+design_size = 0
 outdir = ''
 for opt in options:
     o = opt[0]
     a = opt[1]
     if o == '--dir':
         outdir = a
+    elif o == '--design-size':
+        design_size = int(a)
     else:
         print o
         raise getopt.error
 
-# Ugh
-for design_size in [11,13,14,16,18,20,23,26]:
-    name = 'Emmentaler'
-    filename = name.lower ()
-    script = '''#!@FONTFORGE@
+        
+name = 'Emmentaler'
+filename = name.lower ()
+script = '''#!@FONTFORGE@
 
 New();
 
@@ -80,32 +81,33 @@ Generate("%(filename)s-%(design_size)d.svg");
 Generate("%(filename)s-%(design_size)d.woff");
 ''' % vars()
 
-    basename = '%s-%d' % (filename, design_size)
-    path = os.path.join (outdir, basename + '.pe')
-    open (path, 'w').write (script)
+basename = '%s-%d' % (filename, design_size)
+path = os.path.join (outdir, basename + '.genpe')
+open (path, 'w').write (script)
 
-    subfonts = ['feta%(design_size)d',
-                'feta-noteheads%(design_size)d',
-                'feta-flags%(design_size)d',
-                'parmesan%(design_size)d',
-                'parmesan-noteheads%(design_size)d',
-                'feta-alphabet%(design_size)d']
+subfonts = ['feta%(design_size)d',
+            'feta-noteheads%(design_size)d',
+            'feta-flags%(design_size)d',
+            'parmesan%(design_size)d',
+            'parmesan-noteheads%(design_size)d',
+            'feta-alphabet%(design_size)d']
 
-    ns = []
-    for s in subfonts:
-        ns.append ('%s' % (s % vars()))
+ns = []
+for s in subfonts:
+    ns.append ('%s' % (s % vars()))
 
-    subfonts_str = ' '.join (ns)
+subfonts_str = ' '.join (ns)
 
-    open (os.path.join (outdir, '%(filename)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
+open (os.path.join (outdir, '%(filename)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
 
-    path = os.path.join (outdir, '%s-%d.dep' % (filename, design_size))
+path = os.path.join (outdir, '%s-%d.dep' % (filename, design_size))
 
-    deps = r'''%(filename)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfb \
+deps = r'''%(filename)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfb \
  $(outdir)/parmesan%(design_size)d.pfb  \
  $(outdir)/feta-alphabet%(design_size)d.pfb feta%(design_size)d.otf-table \
  feta%(design_size)d.otf-gtable
 ''' % vars()
-    open (path, 'w').write (deps)
 
-    open (os.path.join (outdir, basename + '.fontname'), 'w').write ("%s-%d" % (name, design_size))
+open (path, 'w').write (deps)
+
+open (os.path.join (outdir, basename + '.fontname'), 'w').write ("%s-%d" % (name, design_size))