]> gitweb.michael.orlitzky.com - charm-bypass.git/blobdiff - Makefile.am
COPYING: add to state the "or later" bit
[charm-bypass.git] / Makefile.am
index 1660c06ce5a50f7efff2fa1362e5f1796521aced..3718647471b6c0fdaeabf833e457e6c942071b73 100644 (file)
-EXTRA_DIST = doc src
+# If you really want to, we support installing index.html
+# to (say) /usr/share/charm-bypass/index.html
+dist_pkgdata_DATA = index.html
+
+# A single POSIX shell script is our "test suite."
+TESTS = run-tests.sh
+
+# Based on e.g.
+#
+#   https://www.gnu.org/software/automake/manual/html_node/Scripts.html
+#
+# this looks like the best way to include "sources" for things that
+# aren't true programs/libraries.
+EXTRA_DIST =              \
+  $(TESTS)                \
+  CharmBypass-Regular.sfd \
+  CharmBypass-Bold.sfd    \
+  favicon.svg             \
+  index.html.in           \
+  sfd2woff.ff             \
+  svgclean.xsl            \
+  tableau.svg
 
 # List of element IDs that we use in the HTML document.
-PRECIOUS_IDS =  \
-  bus           \
-  city          \
-  citycopy      \
-  clouds        \
-  cloudscopy    \
-  train         \
-  tram          \
-  trees         \
-  treescopy     \
-  serviceletter \
-  servicename   \
-  sky           \
-  ticket        \
-  ticketdate    \
-  tickettime
-
-# Optimize our SVG, and remove its XML prologue so that it can be
-# included directly into the HTML document.
-day.svg: src/day.svg
-       @SCOUR@ --protect-ids-list=$$(echo $(PRECIOUS_IDS) | tr ' ' ',') \
-                --enable-id-stripping \
-                --enable-comment-stripping \
-                --remove-descriptive-elements \
-                --no-renderer-workaround \
-                --strip-xml-prolog \
-                --no-line-breaks \
-                --error-on-flowtext \
-                $< > $@
+PRECIOUS_IDS = \
+  bus          \
+  city         \
+  citycopy     \
+  codebg       \
+  codetext     \
+  clouds       \
+  cloudscopy   \
+  destination  \
+  origin       \
+  origindest   \
+  train        \
+  tram         \
+  trees        \
+  treescopy    \
+  serviceid    \
+  servicename  \
+  sky          \
+  ticket       \
+  ticketbg     \
+  ticketdate   \
+  tickettime   \
+  zone
+
+# The base "scour" command used to optimize the tableau and favicon.
+SCOUR = @SCOUR@                 \
+  --enable-id-stripping         \
+  --enable-comment-stripping    \
+  --remove-descriptive-elements \
+  --no-renderer-workaround      \
+  --no-line-breaks              \
+  --error-on-flowtext
+
+# Optimize the favicon using scour.
+favicon.min.svg: favicon.svg
+       $(SCOUR) $< > $@
+
+# Optimize the tableau once using XSL, to catch a few things that
+# "scour" will miss...
+tableau.min.svg: tableau.svg svgclean.xsl
+       @XSLTPROC@ $(srcdir)/svgclean.xsl $< > $@
+
+# Optimize the tableau (again) using scour, removing its XML prologue
+# so that it can be included directly into the HTML document.
+tableau.min.min.svg: tableau.min.svg
+       $(SCOUR) --protect-ids-list=$$(echo $(PRECIOUS_IDS) | tr ' ' ',') \
+                 --strip-xml-prolog \
+                 $< > $@
+
+# Use FontForge to convert the sfd source files to woff2.
+.sfd.woff2:
+       @FONTFORGE@ -script $(srcdir)/sfd2woff.ff $< $@
 
 # Base64-encode a woff2 (web open font format 2.0) file. We use this
 # to embed fonts directly into the CSS that requires them.
-CharmBypass-Regular.base64: src/CharmBypass-Regular.woff2
+.woff2.base64:
        @BASE64@ -w0 $< > $@
-CharmBypass-Bold.base64: src/CharmBypass-Bold.woff2
+
+# Same with the favicon SVG.
+.svg.base64:
        @BASE64@ -w0 $< > $@
 
+# List all of the dependencies of the final index.html that themselves
+# had to be built. We collect them here because they need to be listed
+# in two places, as dependencies of index.html, and in CLEANFILES.
+index_html_BUILTDEPS = \
+  CharmBypass-Regular.base64 \
+  CharmBypass-Bold.base64    \
+  favicon.base64             \
+  tableau.min.min.svg
+
 # Build index.html by substituting the contents of a few (single
-# line!) files into @PLACEHOLDERS@ within src/index.html.in. If you
-# put tildes in src/day.svg this will probably break, so please don't
-# do that.
-index.html: src/index.html.in day.svg CharmBypass-Regular.base64 CharmBypass-Bold.base64
+# line!) files into @PLACEHOLDERS@ within index.html.in. If you put
+# tildes in tableau.svg this will break, so please don't do that.
+index.html: index.html.in $(index_html_BUILTDEPS)
        sed -e "s~@CBPREGULAR@~$$(cat CharmBypass-Regular.base64)~" \
             -e "s~@CBPBOLD@~$$(cat CharmBypass-Bold.base64)~" \
-            -e "s~@SVGDATA@~$$(cat day.svg)~" \
+            -e "s~@FAVICON@~$$(cat favicon.base64)~" \
+            -e "s~@SVGDATA@~$$(cat tableau.min.min.svg)~" \
             $< > $@
 
-# If you really want to, we support installing index.html
-# to (say) /usr/share/charm-bypass/index.html.
-dist_pkgdata_DATA = index.html
-
 # Automake doesn't understand our wacky build process so we have to
-# tell it which files are produced by running "make"
-CLEANFILES = $(dist_pkgdata_DATA) CharmBypass-Regular.base64 CharmBypass-Bold.base64 day.svg
+# tell it which files are produced by running "make".
+CLEANFILES =              \
+  $(dist_pkgdata_DATA)    \
+  $(index_html_BUILTDEPS) \
+  favicon.min.svg         \
+  tableau.min.svg
+