mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-04 11:08:03 +01:00
1. If the tool changes, you need to regenerate since the output may change. 2. This didn't just filter that out, ignored all but the first dependency, which made bisecting the bookkeeper plugin a nightmare: it didn't regenerate the .po file, causing random crashes. If we want this, try $(filter-out tools/fromschema.py) instead. But I don't think we want that. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
183 lines
6.5 KiB
Makefile
183 lines
6.5 KiB
Makefile
#! /usr/bin/make
|
|
|
|
# Designed to be run one level up
|
|
doc-wrongdir:
|
|
$(MAKE) -C .. doc-all
|
|
|
|
MANPAGES := doc/lightning-cli.1 \
|
|
doc/lightningd.8 \
|
|
doc/lightningd-config.5 \
|
|
doc/lightning-addgossip.7 \
|
|
doc/lightning-autocleaninvoice.7 \
|
|
doc/lightning-bkpr-channelsapy.7 \
|
|
doc/lightning-bkpr-dumpincomecsv.7 \
|
|
doc/lightning-bkpr-inspect.7 \
|
|
doc/lightning-bkpr-listaccountevents.7 \
|
|
doc/lightning-bkpr-listbalances.7 \
|
|
doc/lightning-bkpr-listincome.7 \
|
|
doc/lightning-check.7 \
|
|
doc/lightning-checkmessage.7 \
|
|
doc/lightning-close.7 \
|
|
doc/lightning-connect.7 \
|
|
doc/lightning-commando.7 \
|
|
doc/lightning-commando-rune.7 \
|
|
doc/lightning-createonion.7 \
|
|
doc/lightning-createinvoice.7 \
|
|
doc/lightning-datastore.7 \
|
|
doc/lightning-decodepay.7 \
|
|
doc/lightning-decode.7 \
|
|
doc/lightning-deldatastore.7 \
|
|
doc/lightning-delexpiredinvoice.7 \
|
|
doc/lightning-delinvoice.7 \
|
|
doc/lightning-delpay.7 \
|
|
doc/lightning-disableoffer.7 \
|
|
doc/lightning-disconnect.7 \
|
|
doc/lightning-emergencyrecover.7 \
|
|
doc/lightning-feerates.7 \
|
|
doc/lightning-fetchinvoice.7 \
|
|
doc/lightning-fundchannel.7 \
|
|
doc/lightning-fundchannel_start.7 \
|
|
doc/lightning-fundchannel_complete.7 \
|
|
doc/lightning-fundchannel_cancel.7 \
|
|
doc/lightning-funderupdate.7 \
|
|
doc/lightning-fundpsbt.7 \
|
|
doc/lightning-getroute.7 \
|
|
doc/lightning-hsmtool.8 \
|
|
doc/lightning-invoice.7 \
|
|
doc/lightning-keysend.7 \
|
|
doc/lightning-listchannels.7 \
|
|
doc/lightning-listdatastore.7 \
|
|
doc/lightning-listforwards.7 \
|
|
doc/lightning-listfunds.7 \
|
|
doc/lightning-listinvoices.7 \
|
|
doc/lightning-listoffers.7 \
|
|
doc/lightning-listpays.7 \
|
|
doc/lightning-listpeers.7 \
|
|
doc/lightning-listsendpays.7 \
|
|
doc/lightning-makesecret.7 \
|
|
doc/lightning-multifundchannel.7 \
|
|
doc/lightning-multiwithdraw.7 \
|
|
doc/lightning-newaddr.7 \
|
|
doc/lightning-notifications.7 \
|
|
doc/lightning-offer.7 \
|
|
doc/lightning-offerout.7 \
|
|
doc/lightning-openchannel_abort.7 \
|
|
doc/lightning-openchannel_bump.7 \
|
|
doc/lightning-openchannel_init.7 \
|
|
doc/lightning-openchannel_signed.7 \
|
|
doc/lightning-openchannel_update.7 \
|
|
doc/lightning-pay.7 \
|
|
doc/lightning-parsefeerate.7 \
|
|
doc/lightning-plugin.7 \
|
|
doc/lightning-recoverchannel.7 \
|
|
doc/lightning-reserveinputs.7 \
|
|
doc/lightning-sendinvoice.7 \
|
|
doc/lightning-sendonion.7 \
|
|
doc/lightning-sendonionmessage.7 \
|
|
doc/lightning-sendpay.7 \
|
|
doc/lightning-setchannel.7 \
|
|
doc/lightning-setchannelfee.7 \
|
|
doc/lightning-sendcustommsg.7 \
|
|
doc/lightning-signmessage.7 \
|
|
doc/lightning-staticbackup.7 \
|
|
doc/lightning-txprepare.7 \
|
|
doc/lightning-txdiscard.7 \
|
|
doc/lightning-txsend.7 \
|
|
doc/lightning-unreserveinputs.7 \
|
|
doc/lightning-utxopsbt.7 \
|
|
doc/lightning-waitinvoice.7 \
|
|
doc/lightning-waitanyinvoice.7 \
|
|
doc/lightning-waitblockheight.7 \
|
|
doc/lightning-waitsendpay.7 \
|
|
doc/lightning-withdraw.7 \
|
|
doc/lightning-ping.7 \
|
|
doc/lightning-stop.7 \
|
|
doc/lightning-signpsbt.7 \
|
|
doc/lightning-sendpsbt.7 \
|
|
doc/lightning-getinfo.7 \
|
|
doc/lightning-listtransactions.7 \
|
|
doc/lightning-listnodes.7 \
|
|
doc/lightning-listconfigs.7 \
|
|
doc/lightning-help.7 \
|
|
doc/lightning-getlog.7
|
|
|
|
doc-all: $(MANPAGES) doc/index.rst
|
|
|
|
SCHEMAS := $(wildcard doc/schemas/*.json)
|
|
check-fmt-schemas: $(SCHEMAS:%=check-fmt-schema/%)
|
|
fmt-schemas: $(SCHEMAS:%=fmt-schema/%)
|
|
|
|
check-fmt-schema/%: %
|
|
@jq . < "$*" > "$*".fmt && diff -u "$*" "$*.fmt" && rm "$*.fmt"
|
|
|
|
fmt-schema/%: %
|
|
@jq . < "$*" > "$*".fmt && cat "$*".fmt > "$*" && rm "$*.fmt"
|
|
|
|
check-doc: check-config-docs check-manpages check-fmt-schemas
|
|
|
|
# Some manpages use a schema, so need that added.
|
|
MARKDOWN_WITH_SCHEMA := $(shell grep -l GENERATE-FROM-SCHEMA $(MANPAGES:=.md))
|
|
|
|
# These are hard to use in $(call) functions.
|
|
LBRACKET=(
|
|
RBRACKET=)
|
|
|
|
$(MARKDOWN_WITH_SCHEMA): doc/lightning-%.7.md: doc/schemas/%.schema.json tools/fromschema.py
|
|
@if $(call SHA256STAMP_CHANGED); then $(call VERBOSE, "fromschema $@", tools/fromschema.py --markdownfile=$@ doc/schemas/$*.schema.json > $@.tmp && grep -v SHA256STAMP: $@.tmp > $@ && rm -f $@.tmp && $(call SHA256STAMP,[comment]: # $(LBRACKET),$(RBRACKET))); else touch $@; fi
|
|
|
|
$(MANPAGES): doc/%: doc/%.md tools/md2man.sh version_gen.h
|
|
@if $(call SHA256STAMP_CHANGED); then $(call VERBOSE, "md2man $<", VERSION=$(VERSION) tools/md2man.sh $< > $@ && $(call SHA256STAMP,\\\",)); else touch $@; fi
|
|
|
|
$(MANPAGES): $(FORCE)
|
|
$(MARKDOWN_WITH_SCHEMA): $(FORCE)
|
|
|
|
doc/protocol-%.svg: test/test_protocol
|
|
test/test_protocol --svg < test/commits/$*.script > $@
|
|
|
|
protocol-diagrams: $(patsubst %.script, doc/protocol-%.svg, $(notdir $(wildcard test/commits/*.script)))
|
|
|
|
doc/deployable-lightning.pdf: doc/deployable-lightning.lyx doc/bitcoin.bib
|
|
lyx -E pdf $@ $<
|
|
|
|
doc/deployable-lightning.tex: doc/deployable-lightning.lyx
|
|
lyx -E latex $@ $<
|
|
|
|
state-diagrams: doc/normal-states.svg doc/simplified-states.svg doc/error-states.svg doc/full-states.svg
|
|
|
|
%.svg: %.dot
|
|
dot -Tsvg $< > $@ || (rm -f $@; false)
|
|
|
|
doc/simplified-states.dot: test/test_state_coverage
|
|
test/test_state_coverage --dot --dot-simplify > $@
|
|
|
|
doc/normal-states.dot: test/test_state_coverage
|
|
test/test_state_coverage --dot > $@
|
|
|
|
doc/error-states.dot: test/test_state_coverage
|
|
test/test_state_coverage --dot-all --dot-include-errors > $@
|
|
|
|
doc/full-states.dot: test/test_state_coverage
|
|
test/test_state_coverage --dot-all --dot-include-errors --dot-include-nops > $@
|
|
|
|
maintainer-clean: doc-maintainer-clean
|
|
clean: doc-clean
|
|
check: check-manpages
|
|
|
|
# This needs plugins, too.
|
|
check-manpages: all-programs check-config-docs default-targets
|
|
@tools/check-manpage.sh cli/lightning-cli doc/lightning-cli.1.md
|
|
@tools/check-manpage.sh "lightningd/lightningd --lightning-dir=/tmp/" doc/lightningd-config.5.md
|
|
|
|
# Makes sure that fields mentioned in schema are in man page, and vice versa.
|
|
check-config-docs:
|
|
@for c in `sed -n 's/^ "\(.*\)": {/\1/p' doc/schemas/listconfigs.schema.json | grep -v '^# version$$' | grep -v '^plugins$$' | grep -v '^important-plugins$$'`; do if ! grep -q "^ \*\*$$c\*\*" doc/lightningd-config.5.md; then echo "$$c undocumented!"; exit 1; fi; done
|
|
@for c in `grep -v '\[plugin ' doc/lightningd-config.5.md | sed -n 's/^ \*\*\([^*]*\)\*\*.*/\1/p' | grep -v '^\(help\|version\|mainnet\|testnet\|signet\|plugin\|important-plugin\|plugin-dir\|clear-plugins\)$$'`; do if ! grep -q '"'"$$c"'"' doc/schemas/listconfigs.schema.json; then echo "$$c documented but not in schema!"; exit 1; fi; done
|
|
|
|
doc-maintainer-clean:
|
|
$(RM) $(MANPAGES)
|
|
|
|
doc-clean:
|
|
$(RM) doc/deployable-lightning.{aux,bbl,blg,dvi,log,out,tex}
|
|
|
|
doc/index.rst: $(MANPAGES:=.md)
|
|
@$(call VERBOSE, "genidx $@",(grep -v "^ lightning.*\.[0-9]\.md>$$" $@; for m in $$(cd doc && ls lightningd*.[0-9].md lightning-*.[0-9].md); do echo " $${m%.[0-9].md} <$$m>"; done |$(SORT)) > $@.tmp.$$$$ && mv $@.tmp.$$$$ $@)
|