@@ -2,19 +2,29 @@ luac != which luac sh != which sh extens = $(wildcard ext/*.lua) -extens_names ?= $(basename $(notdir $(extens))) +extens-names ?= $(basename $(notdir $(extens))) build = build executable = cortav default-format-flags = -m html:width 40em prefix = $(HOME)/.local -bin_prefix = $(prefix)/bin -share_prefix = $(prefix)/share/$(executable) +bin-prefix = $(prefix)/bin +share-prefix = $(prefix)/share/$(executable) -$(build)/$(executable): sirsem.lua cortav.lua $(extens) cli.lua | $(build)/ - @echo ' » building with extensions $(extens_names)' +# by default, we fetch and parse information about encodings we +# support so that cortav can do fancy things like format math +# equations by character class (e.g. italicizing variables) +# this is not necessary for parsing the format, and can be +# disabled by blanking the encoding-data list when building +# ($ make encoding-data=) +encoding-data = ucstbls +encoding-files = $(patsubst %,$(build)/%.lc,$(encoding-data)) +encoding-data-ucs = https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt + +$(build)/$(executable): sirsem.lua $(encoding-files) cortav.lua $(extens) cli.lua | $(build)/ + @echo ' » building with extensions $(extens-names)' echo '#!$(lua)' > $@ luac -o - $^ >> $@ chmod +x $@ @@ -31,24 +41,29 @@ rm -f $(build)/cortav $(build)/cortav.html $(build)/velartrill-cortav-view.desktop $(build)/cortav-view.sh $(build)/%.sh: desk/%.sh echo >$@ "#!$(sh)" - echo >>$@ 'cortav_exec="$(bin_prefix)/$(executable)"' + echo >>$@ 'cortav_exec="$(bin-prefix)/$(executable)"' echo >>$@ 'cortav_flags="$${ct_format_flags-$(default-format-flags)}"' cat $< >> $@ chmod +x $@ $(build)/velartrill-cortav-view.desktop: desk/cortav-view.desktop cp $< $@ - echo "Exec=$(bin_prefix)/cortav-view.sh" >>$@ + echo "Exec=$(bin-prefix)/cortav-view.sh" >>$@ %/: mkdir -p $@ +$(build)/unicode.txt: | $(build)/ + curl $(encoding-data-ucs) > $@ +$(build)/ucstbls.lc: $(build)/unicode.txt | $(build)/ + $(lua) tools/ucs.lua $< | $(luac) -o $@ - + .PHONY: install -install: $(build)/cortav $(build)/cortav-view.sh $(build)/velartrill-cortav-view.desktop | $(bin_prefix)/ - install $(build)/$(executable) $(bin_prefix) - install $(build)/cortav-view.sh $(bin_prefix) +install: $(build)/cortav $(build)/cortav-view.sh $(build)/velartrill-cortav-view.desktop | $(bin-prefix)/ + install $(build)/$(executable) $(bin-prefix) + install $(build)/cortav-view.sh $(bin-prefix) xdg-mime install desk/velartrill-cortav.xml xdg-desktop-menu install $(build)/velartrill-cortav-view.desktop xdg-mime default velartrill-cortav-view.desktop text/x-cortav @@ -55,9 +70,9 @@ .PHONY: excise excise: $(build)/velartrill-cortav-view.desktop xdg-mime uninstall desk/velartrill-cortav.xml xdg-desktop-menu uninstall $(build)/velartrill-cortav-view.desktop - rm $(bin_prefix)/$(executable) - rm $(bin_prefix)/cortav-view.sh + rm $(bin-prefix)/$(executable) + rm $(bin-prefix)/cortav-view.sh .PHONY: wipe wipe: excise clean