X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=Makefile.am;h=3718647471b6c0fdaeabf833e457e6c942071b73;hb=HEAD;hp=3995fe6d23796f82d276a49c30727a78bb8be565;hpb=fc0367b4fd2e0403e66b5b481629e10b39ffb091;p=charm-bypass.git diff --git a/Makefile.am b/Makefile.am index 3995fe6..3718647 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,24 +1,113 @@ -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 \ + 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 $< > $@ -# Strip the XML prologue from an Inkscape document to produce -# something that can be included directly into an HTML5 document. -day.svg: src/day.svg - @XMLLINT@ -xpath "/*" $< > $@ +# 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. -tickettext.base64: src/tickettext.woff2 +.woff2.base64: + @BASE64@ -w0 $< > $@ + +# 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 tickettext.base64 - sed -e "s~@TICKETFONT@~$$(cat tickettext.base64)~" \ - -e "s~@SVGDATA@~$$(cat day.svg)~" \ +# 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~@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) \ + $(index_html_BUILTDEPS) \ + favicon.min.svg \ + tableau.min.svg +