From 50d1043a91db4343eb3a445e6f0611afc19c4032 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 6 Sep 2022 13:40:32 +0930 Subject: [PATCH] external: build lowdown if not already found. Signed-off-by: Rusty Russell --- .gitmodules | 1 + configure | 9 ++++++++- doc/Makefile | 13 ++++++++++++- external/Makefile | 14 ++++++++++++++ tools/md2man.sh | 9 +++++---- 5 files changed, 40 insertions(+), 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index 8b8aa0660..6dae35a54 100644 --- a/.gitmodules +++ b/.gitmodules @@ -20,3 +20,4 @@ [submodule "external/lowdown"] path = external/lowdown url = https://github.com/kristapsdz/lowdown.git + ignore = dirty diff --git a/configure b/configure index bd7aae297..a943baedf 100755 --- a/configure +++ b/configure @@ -105,7 +105,7 @@ check_command() shift 1 echo -n "checking for $name... " - if "$@" >/dev/null 2>&1; then + if "$@" >/dev/null 2>&1 $@.tmp && grep -v SHA256STAMP: $@.tmp > $@ && rm -f $@.tmp && $(call SHA256STAMP,[comment]: # $(LBRACKET),$(RBRACKET))); else touch $@; fi +# If we need to build lowdown, make tools/md2man.sh depend on it. +# That way it's not used in SHA256STAMP (which only uses direct +# dependencies), but make will be forced to build it. +ifeq ($(HAVE_LOWDOWN),0) +LOWDOWN := $(TARGET_DIR)/lowdown-build/bin/lowdown +tools/md2man.sh: $(LOWDOWN) + touch $@ +else +LOWDOWN := lowdown +endif + $(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 + @if $(call SHA256STAMP_CHANGED); then $(call VERBOSE, "md2man $<", VERSION=$(VERSION) tools/md2man.sh $(LOWDOWN) $< > $@ && $(call SHA256STAMP,\\\",)); else touch $@; fi $(MANPAGES): $(FORCE) $(MARKDOWN_WITH_SCHEMA): $(FORCE) diff --git a/external/Makefile b/external/Makefile index 92e976092..60b8068fe 100644 --- a/external/Makefile +++ b/external/Makefile @@ -6,6 +6,10 @@ SUBMODULES = \ external/libbacktrace \ external/lnprototest +ifeq ($(HAVE_LOWDOWN),0) +SUBMODULES += external/lowdown +endif + TOP := ../.. ifdef BUILD CROSSCOMPILE_OPTS := --host="$(MAKE_HOST)" --build="$(BUILD)" @@ -29,6 +33,10 @@ LIBBACKTRACE_HEADERS := external/libbacktrace/backtrace.h EXTERNAL_HEADERS := $(LIBSODIUM_HEADERS) $(LIBWALLY_HEADERS) $(LIBSECP_HEADERS) $(JSMN_HEADERS) $(GHEAP_HEADERS) $(LIBBACKTRACE_HEADERS) EXTERNAL_LIBS := ${TARGET_DIR}/libwallycore.a ${TARGET_DIR}/libsecp256k1.a ${TARGET_DIR}/libjsmn.a ${TARGET_DIR}/libbacktrace.a +ifeq ($(HAVE_LOWDOWN),0) +EXTERNAL_HEADERS += external/lowdown/lowdown.h +endif + EXTERNAL_INCLUDE_FLAGS := \ -I external/libwally-core/include/ \ -I external/libwally-core/src/secp256k1/include/ \ @@ -106,6 +114,10 @@ $(TARGET_DIR)/libbacktrace.a: external/libbacktrace/backtrace.h cd $(TARGET_DIR)/libbacktrace-build && $(TOP)/libbacktrace/configure CC="$(CC)" --enable-static=yes $(CROSSCOMPILE_OPTS) --enable-shared=no --prefix=/ --libdir=/ && $(MAKE) $(MAKE) -C $(TARGET_DIR)/libbacktrace-build DESTDIR=$$(pwd)/$(TARGET_DIR) install-exec +$(TARGET_DIR)/lowdown-build/bin/lowdown: external/lowdown/lowdown.h + cd external/lowdown && CC="$(CC)" ./configure PREFIX=`pwd`/$(TOP)/$(TARGET_DIR)/lowdown-build/ + $(MAKE) -C external/lowdown install + distclean: external-distclean clean: external-clean @@ -116,8 +128,10 @@ external-clean: if [ -f ${TARGET_DIR}/libwally-core-build/Makefile ]; then make -C ${TARGET_DIR}/libwally-core-build clean; fi if [ -f ${TARGET_DIR}/libwally-core-build/src/Makefile ]; then make -C ${TARGET_DIR}/libwally-core-build/src clean; fi if [ -f ${TARGET_DIR}/libbacktrace-build/Makefile ]; then make -C ${TARGET_DIR}/libbacktrace-build clean; fi + [ -f external/lowdown/Makefile.configure ] && $(MAKE) -C external/lowdown clean external-distclean: make -C external/libsodium distclean || true + [ -f external/lowdown/Makefile.configure ] && $(MAKE) -C external/lowdown distclean $(RM) -rf ${TARGET_DIR}/libbacktrace-build ${TARGET_DIR}/libsodium-build ${TARGET_DIR}/libwally-core-build ${TARGET_DIR}/jsmn-build $(RM) -r `git status --ignored --porcelain external/libwally-core | grep '^!! ' | cut -c3-` diff --git a/tools/md2man.sh b/tools/md2man.sh index 7dea4cb70..5052459eb 100755 --- a/tools/md2man.sh +++ b/tools/md2man.sh @@ -1,10 +1,11 @@ #! /bin/sh -if [ $# != 1 ]; then - echo "Usage: $0 " >&2 +if [ $# != 2 ]; then + echo "Usage: $0 " >&2 exit 1 fi -SOURCE=$1 +LOWDOWN="$1" +SOURCE="$2" SECTION="$(basename "$SOURCE" .md | cut -d. -f2-)" TITLE="$(basename "$(basename "$SOURCE" .md)" ."$SECTION" | tr '[:lower:]' '[:upper:]')" @@ -12,4 +13,4 @@ TITLE="$(basename "$(basename "$SOURCE" .md)" ."$SECTION" | tr '[:lower:]' '[:up # format. mrkd used to do this for us, lowdown(1) doesn't. TITLELINE="$(head -n1 "$SOURCE")" -(echo "NAME"; echo "----"; echo "$TITLELINE"; tail -n +3 "$SOURCE") | lowdown -s --out-no-smarty -Tman -m "title:$TITLE" -m "section:$SECTION" -m "source:Core Lightning $VERSION" -m "shiftheadinglevelby:-1" +(echo "NAME"; echo "----"; echo "$TITLELINE"; tail -n +3 "$SOURCE") | $LOWDOWN -s --out-no-smarty -Tman -m "title:$TITLE" -m "section:$SECTION" -m "source:Core Lightning $VERSION" -m "shiftheadinglevelby:-1"