2018-06-06 13:03:27 +09:30
|
|
|
SUBMODULES = \
|
|
|
|
external/libsodium \
|
|
|
|
external/libwally-core \
|
2020-08-11 15:57:37 +09:30
|
|
|
external/gheap \
|
2018-06-06 13:03:27 +09:30
|
|
|
external/jsmn \
|
2021-03-18 15:53:37 -05:00
|
|
|
external/libbacktrace \
|
|
|
|
external/lnprototest
|
2018-06-06 13:03:27 +09:30
|
|
|
|
2022-09-06 13:40:32 +09:30
|
|
|
ifeq ($(HAVE_LOWDOWN),0)
|
|
|
|
SUBMODULES += external/lowdown
|
|
|
|
endif
|
|
|
|
|
2020-01-29 21:13:09 +01:00
|
|
|
TOP := ../..
|
2019-11-20 16:54:50 +01:00
|
|
|
ifdef BUILD
|
|
|
|
CROSSCOMPILE_OPTS := --host="$(MAKE_HOST)" --build="$(BUILD)"
|
2023-05-24 19:42:58 +02:00
|
|
|
TARGET_DIR := external/build-$(MAKE_HOST)
|
2020-01-30 00:15:32 +01:00
|
|
|
else
|
2023-05-24 19:42:58 +02:00
|
|
|
TARGET_DIR := external/build-$(shell ${CC} -dumpmachine)
|
2019-11-20 16:54:50 +01:00
|
|
|
endif
|
|
|
|
|
2017-08-29 01:41:01 +09:30
|
|
|
LIBSODIUM_HEADERS := external/libsodium/src/libsodium/include/sodium.h
|
|
|
|
LIBWALLY_HEADERS := external/libwally-core/include/wally_bip32.h \
|
|
|
|
external/libwally-core/include/wally_core.h \
|
2020-08-31 10:52:51 +09:30
|
|
|
external/libwally-core/include/wally_psbt.h \
|
2017-08-29 01:41:01 +09:30
|
|
|
external/libwally-core/include/wally_crypto.h
|
|
|
|
LIBSECP_HEADERS := external/libwally-core/src/secp256k1/include/secp256k1_ecdh.h \
|
2020-09-09 20:05:10 +09:30
|
|
|
external/libwally-core/src/secp256k1/include/secp256k1_recovery.h \
|
2017-08-29 01:41:01 +09:30
|
|
|
external/libwally-core/src/secp256k1/include/secp256k1.h
|
|
|
|
JSMN_HEADERS := external/jsmn/jsmn.h
|
2020-08-31 10:52:51 +09:30
|
|
|
GHEAP_HEADERS := external/gheap/gheap.h
|
|
|
|
LIBBACKTRACE_HEADERS := external/libbacktrace/backtrace.h
|
2017-08-29 01:41:01 +09:30
|
|
|
|
2020-08-31 10:52:51 +09:30
|
|
|
EXTERNAL_HEADERS := $(LIBSODIUM_HEADERS) $(LIBWALLY_HEADERS) $(LIBSECP_HEADERS) $(JSMN_HEADERS) $(GHEAP_HEADERS) $(LIBBACKTRACE_HEADERS)
|
2020-01-30 00:15:32 +01:00
|
|
|
EXTERNAL_LIBS := ${TARGET_DIR}/libwallycore.a ${TARGET_DIR}/libsecp256k1.a ${TARGET_DIR}/libjsmn.a ${TARGET_DIR}/libbacktrace.a
|
2017-08-29 01:41:01 +09:30
|
|
|
|
2022-09-06 13:40:32 +09:30
|
|
|
ifeq ($(HAVE_LOWDOWN),0)
|
|
|
|
EXTERNAL_HEADERS += external/lowdown/lowdown.h
|
|
|
|
endif
|
|
|
|
|
2017-08-29 01:41:01 +09:30
|
|
|
EXTERNAL_INCLUDE_FLAGS := \
|
|
|
|
-I external/libwally-core/include/ \
|
|
|
|
-I external/libwally-core/src/secp256k1/include/ \
|
|
|
|
-I external/jsmn/ \
|
2018-03-22 16:10:23 +09:00
|
|
|
-I external/libbacktrace/ \
|
2020-08-11 15:57:37 +09:30
|
|
|
-I external/gheap/ \
|
2020-01-30 00:15:32 +01:00
|
|
|
-I ${TARGET_DIR}/libbacktrace-build
|
2017-08-29 01:43:01 +09:30
|
|
|
|
2019-02-08 07:06:50 +10:30
|
|
|
ifneq ($(HAVE_GOOD_LIBSODIUM),1)
|
2020-01-30 00:15:32 +01:00
|
|
|
EXTERNAL_INCLUDE_FLAGS += -I external/libsodium/src/libsodium/include \
|
|
|
|
-I external/libsodium/src/libsodium/include/sodium \
|
|
|
|
-I $(TARGET_DIR)/libsodium-build/src/libsodium/include
|
|
|
|
EXTERNAL_LIBS += ${TARGET_DIR}/libsodium.a
|
2019-02-08 07:06:50 +10:30
|
|
|
else
|
|
|
|
LDLIBS += -lsodium
|
|
|
|
endif
|
|
|
|
|
2020-01-30 00:15:32 +01:00
|
|
|
EXTERNAL_LDLIBS := -L${TARGET_DIR} $(patsubst lib%.a,-l%,$(notdir $(EXTERNAL_LIBS)))
|
2017-08-29 01:41:01 +09:30
|
|
|
|
2021-05-21 14:46:05 +09:30
|
|
|
submodcheck: $(FORCE)
|
2022-05-01 14:18:27 +09:30
|
|
|
ifneq ($(VERSION),)
|
2018-06-06 13:03:27 +09:30
|
|
|
@tools/refresh-submodules.sh $(SUBMODULES)
|
2020-11-30 10:47:08 +10:30
|
|
|
@cd external/libwally-core && ../../tools/refresh-submodules.sh src/secp256k1
|
2022-05-01 14:18:27 +09:30
|
|
|
endif
|
2018-01-29 15:00:53 +10:30
|
|
|
|
2020-08-31 10:52:51 +09:30
|
|
|
$(EXTERNAL_HEADERS): submodcheck
|
|
|
|
|
2017-08-29 01:41:01 +09:30
|
|
|
# We build libsodium, since Ubuntu xenial has one too old.
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/libsodium.a: $(TARGET_DIR)/libsodium-build/src/libsodium/libsodium.la
|
|
|
|
$(MAKE) -C $(TARGET_DIR)/libsodium-build DESTDIR=$$(pwd)/$(TARGET_DIR) install-exec
|
2017-08-29 01:41:01 +09:30
|
|
|
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/libsodium-build/src/libsodium/libsodium.la: external/libsodium/src/libsodium/include/sodium.h
|
|
|
|
cd external/libsodium && ./autogen.sh
|
|
|
|
mkdir -p ${TARGET_DIR}/libsodium-build
|
2023-05-16 10:48:18 -05:00
|
|
|
cd $(TARGET_DIR)/libsodium-build && $(TOP)/libsodium/configure CC="$(CC)" CFLAGS="$(FUZZFLAGS)" LDFLAGS="$(FUZZFLAGS)" --enable-static=yes $(CROSSCOMPILE_OPTS) --enable-shared=no --prefix=/ --libdir=/ && $(MAKE)
|
2017-08-29 01:41:01 +09:30
|
|
|
|
|
|
|
# libsecp included in libwally.
|
|
|
|
# Wildcards here are magic. See http://stackoverflow.com/questions/2973445/gnu-makefile-rule-generating-a-few-targets-from-a-single-source-file
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/libsecp256k1.% $(TARGET_DIR)/libwallycore.%: $(TARGET_DIR)/libwally-core-build/src/secp256k1/libsecp256k1.la $(TARGET_DIR)/libwally-core-build/src/libwallycore.la
|
|
|
|
$(MAKE) -C $(TARGET_DIR)/libwally-core-build DESTDIR=$$(pwd)/$(TARGET_DIR) install-exec
|
2017-08-29 01:41:01 +09:30
|
|
|
|
2020-02-26 17:58:57 +01:00
|
|
|
# Build libwally-core.
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/libwally-core-build/src/libwallycore.% $(TARGET_DIR)/libwally-core-build/src/secp256k1/libsecp256k1.%: $(LIBWALLY_HEADERS) $(LIBSECP_HEADERS)
|
2020-11-30 10:47:08 +10:30
|
|
|
cd external/libwally-core && ./tools/autogen.sh
|
2020-01-30 00:15:32 +01:00
|
|
|
mkdir -p ${TARGET_DIR}/libwally-core-build
|
2021-01-21 11:33:37 +01:00
|
|
|
cd ${TARGET_DIR}/libwally-core-build \
|
2023-05-16 10:48:18 -05:00
|
|
|
&& PYTHON_VERSION=3 CFLAGS="-std=c99 $(FUZZFLAGS)" LDFLAGS="$(FUZZFLAGS)" ${TOP}/libwally-core/configure CC="$(CC)" \
|
2021-01-21 11:33:37 +01:00
|
|
|
--enable-static=yes \
|
|
|
|
$(CROSSCOMPILE_OPTS) \
|
|
|
|
--enable-module-recovery \
|
|
|
|
--enable-module-extrakeys \
|
|
|
|
--enable-module-schnorrsig \
|
|
|
|
--enable-elements \
|
|
|
|
--enable-shared=no \
|
|
|
|
--prefix=/ \
|
|
|
|
--libdir=/ \
|
|
|
|
--enable-debug \
|
2023-05-22 10:34:19 -04:00
|
|
|
&& cp src/secp256k1/src/libsecp256k1-config.h ../../libwally-core/src/secp256k1/src/libsecp256k1-config.h \
|
2021-01-21 11:33:37 +01:00
|
|
|
&& $(MAKE)
|
2017-08-29 01:41:01 +09:30
|
|
|
|
|
|
|
# If we tell Make that the above builds both, it runs it twice in
|
|
|
|
# parallel. So we lie :(
|
|
|
|
external/jsmn/jsmn.c: external/jsmn/jsmn.h
|
|
|
|
[ -f $@ ]
|
|
|
|
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/jsmn-build/jsmn.o: external/jsmn/jsmn.c Makefile
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
$(COMPILE.c) -DJSMN_STRICT=1 -o $@ $<
|
2017-08-29 01:41:01 +09:30
|
|
|
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/libjsmn.a: $(TARGET_DIR)/jsmn-build/jsmn.o
|
2017-08-29 01:41:01 +09:30
|
|
|
$(AR) rc $@ $<
|
|
|
|
|
2017-09-12 14:26:26 +09:30
|
|
|
# Need separate build dir: changes inside submodule make git think it's dirty.
|
2020-01-30 00:15:32 +01:00
|
|
|
$(TARGET_DIR)/libbacktrace.a: external/libbacktrace/backtrace.h
|
2020-08-31 10:52:56 +09:30
|
|
|
mkdir -p $(TARGET_DIR)/libbacktrace-build
|
2020-01-30 00:15:32 +01:00
|
|
|
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
|
2017-09-12 14:26:26 +09:30
|
|
|
|
2022-09-06 13:40:32 +09:30
|
|
|
$(TARGET_DIR)/lowdown-build/bin/lowdown: external/lowdown/lowdown.h
|
2023-05-16 10:48:18 -05:00
|
|
|
cd external/lowdown && CC="$(CC)" CFLAGS="$(FUZZFLAGS)" ./configure LDFLAGS="$(FUZZFLAGS)" PREFIX=`pwd`/$(TOP)/$(TARGET_DIR)/lowdown-build/
|
2022-09-06 13:40:32 +09:30
|
|
|
$(MAKE) -C external/lowdown install
|
|
|
|
|
2017-08-29 01:41:01 +09:30
|
|
|
distclean: external-distclean
|
|
|
|
clean: external-clean
|
|
|
|
|
|
|
|
external-clean:
|
2023-05-24 19:42:58 +02:00
|
|
|
$(RM) $(EXTERNAL_LIBS)
|
|
|
|
$(RM) -rf $(TARGET_DIR)
|
2017-08-29 01:41:01 +09:30
|
|
|
|
|
|
|
external-distclean:
|
|
|
|
make -C external/libsodium distclean || true
|
2022-11-11 13:59:12 +01:00
|
|
|
if [ -f external/lowdown/Makefile.configure ]; then $(MAKE) -C external/lowdown distclean; fi
|
2020-05-13 12:48:09 +09:30
|
|
|
$(RM) -rf ${TARGET_DIR}/libbacktrace-build ${TARGET_DIR}/libsodium-build ${TARGET_DIR}/libwally-core-build ${TARGET_DIR}/jsmn-build
|
2017-11-23 13:33:07 +10:30
|
|
|
$(RM) -r `git status --ignored --porcelain external/libwally-core | grep '^!! ' | cut -c3-`
|