@@ -18,6 +18,15 @@ AM_LIBTOOLFLAGS = --preserve-dup-deps
1818PTHREAD_FLAGS = $(PTHREAD_CFLAGS ) $(PTHREAD_LIBS )
1919EXTRA_LIBRARIES =
2020
21+ lib_LTLIBRARIES = $(LIBBITCOINCONSENSUS )
22+ noinst_LTLIBRARIES =
23+
24+ bin_PROGRAMS =
25+ noinst_PROGRAMS =
26+ check_PROGRAMS =
27+ TESTS =
28+ BENCHMARKS =
29+
2130if ENABLE_STACKTRACES
2231if ENABLE_CRASH_HOOKS
2332if CRASH_HOOKS_WRAPPED_CXX_ABI
@@ -47,7 +56,7 @@ LIBBITCOIN_COMMON=libbitcoin_common.a
4756LIBBITCOIN_CONSENSUS =libbitcoin_consensus.a
4857LIBBITCOIN_CLI =libbitcoin_cli.a
4958LIBBITCOIN_UTIL =libbitcoin_util.a
50- LIBBITCOIN_CRYPTO_BASE =crypto/libbitcoin_crypto_base.a
59+ LIBBITCOIN_CRYPTO_BASE =crypto/libbitcoin_crypto_base.la
5160LIBBITCOINQT =qt/libbitcoinqt.a
5261LIBDASHBLS =dashbls/libdashbls.la
5362LIBSECP256K1 =secp256k1/libsecp256k1.la
@@ -63,23 +72,24 @@ LIBBITCOIN_WALLET=libbitcoin_wallet.a
6372LIBBITCOIN_WALLET_TOOL =libbitcoin_wallet_tool.a
6473endif
6574
66- LIBBITCOIN_CRYPTO = $(LIBBITCOIN_CRYPTO_BASE )
75+ LIBBITCOIN_CRYPTO = $(LIBBITCOIN_CRYPTO_BASE )
6776if ENABLE_SSE41
68- LIBBITCOIN_CRYPTO_SSE41 = crypto/libbitcoin_crypto_sse41.a
77+ LIBBITCOIN_CRYPTO_SSE41 = crypto/libbitcoin_crypto_sse41.la
6978LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SSE41 )
7079endif
7180if ENABLE_AVX2
72- LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.a
81+ LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.la
7382LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_AVX2 )
7483endif
7584if ENABLE_X86_SHANI
76- LIBBITCOIN_CRYPTO_X86_SHANI = crypto/libbitcoin_crypto_x86_shani.a
85+ LIBBITCOIN_CRYPTO_X86_SHANI = crypto/libbitcoin_crypto_x86_shani.la
7786LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_X86_SHANI )
7887endif
7988if ENABLE_ARM_SHANI
80- LIBBITCOIN_CRYPTO_ARM_SHANI = crypto/libbitcoin_crypto_arm_shani.a
89+ LIBBITCOIN_CRYPTO_ARM_SHANI = crypto/libbitcoin_crypto_arm_shani.la
8190LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_ARM_SHANI )
8291endif
92+ noinst_LTLIBRARIES += $(LIBBITCOIN_CRYPTO )
8393
8494$(LIBDASHBLS ) :
8595 $(AM_V_at )$(MAKE ) $(AM_MAKEFLAGS ) -C $(@D )
@@ -90,7 +100,6 @@ $(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(w
90100# Make is not made aware of per-object dependencies to avoid limiting building parallelization
91101# But to build the less dependent modules first, we manually select their order here:
92102EXTRA_LIBRARIES += \
93- $(LIBBITCOIN_CRYPTO ) \
94103 $(LIBBITCOIN_UTIL ) \
95104 $(LIBBITCOIN_COMMON ) \
96105 $(LIBBITCOIN_CONSENSUS ) \
@@ -101,15 +110,6 @@ EXTRA_LIBRARIES += \
101110 $(LIBBITCOIN_WALLET_TOOL ) \
102111 $(LIBBITCOIN_ZMQ )
103112
104- lib_LTLIBRARIES = $(LIBBITCOINCONSENSUS )
105- noinst_LTLIBRARIES =
106-
107- bin_PROGRAMS =
108- noinst_PROGRAMS =
109- check_PROGRAMS =
110- TESTS =
111- BENCHMARKS =
112-
113113if BUILD_BITCOIND
114114 bin_PROGRAMS += dashd
115115endif
@@ -642,9 +642,16 @@ libbitcoin_wallet_tool_a_SOURCES = \
642642 $(BITCOIN_CORE_H )
643643
644644# crypto primitives library
645- crypto_libbitcoin_crypto_base_a_CPPFLAGS = $(AM_CPPFLAGS ) $(PIC_FLAGS )
646- crypto_libbitcoin_crypto_base_a_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS ) $(PIC_FLAGS )
647- crypto_libbitcoin_crypto_base_a_SOURCES = \
645+ crypto_libbitcoin_crypto_base_la_CPPFLAGS = $(AM_CPPFLAGS ) $(PIC_FLAGS )
646+
647+ # Specify -static in both CXXFLAGS and LDFLAGS so libtool will only build a
648+ # static version of this library. We don't need a dynamic version, and a dynamic
649+ # version can't be used on windows anyway because the library doesn't currently
650+ # export DLL symbols.
651+ crypto_libbitcoin_crypto_base_la_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS ) $(PIC_FLAGS ) -static
652+ crypto_libbitcoin_crypto_base_la_LDFLAGS = $(AM_LDFLAGS ) -static
653+
654+ crypto_libbitcoin_crypto_base_la_SOURCES = \
648655 crypto/aes.cpp \
649656 crypto/aes.h \
650657 crypto/chacha20.h \
@@ -678,23 +685,29 @@ crypto_libbitcoin_crypto_base_a_SOURCES = \
678685 crypto/siphash.h
679686
680687if USE_ASM
681- crypto_libbitcoin_crypto_base_a_SOURCES += crypto/sha256_sse4.cpp
688+ crypto_libbitcoin_crypto_base_la_SOURCES += crypto/sha256_sse4.cpp
682689endif
683690
684- crypto_libbitcoin_crypto_sse41_a_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS )
685- crypto_libbitcoin_crypto_sse41_a_CPPFLAGS = $(AM_CPPFLAGS )
686- crypto_libbitcoin_crypto_sse41_a_CXXFLAGS += $(SSE41_CXXFLAGS )
687- crypto_libbitcoin_crypto_sse41_a_CPPFLAGS += -DENABLE_SSE41
688- crypto_libbitcoin_crypto_sse41_a_SOURCES = crypto/sha256_sse41.cpp
689-
690- crypto_libbitcoin_crypto_avx2_a_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS )
691- crypto_libbitcoin_crypto_avx2_a_CPPFLAGS = $(AM_CPPFLAGS )
692- crypto_libbitcoin_crypto_avx2_a_CXXFLAGS += $(AVX2_CXXFLAGS )
693- crypto_libbitcoin_crypto_avx2_a_CPPFLAGS += -DENABLE_AVX2
694- crypto_libbitcoin_crypto_avx2_a_SOURCES = crypto/sha256_avx2.cpp
691+ # See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
692+ # CXXFLAGS above
693+ crypto_libbitcoin_crypto_sse41_la_LDFLAGS = $(AM_LDFLAGS ) -static
694+ crypto_libbitcoin_crypto_sse41_la_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS ) -static
695+ crypto_libbitcoin_crypto_sse41_la_CPPFLAGS = $(AM_CPPFLAGS )
696+ crypto_libbitcoin_crypto_sse41_la_CXXFLAGS += $(SSE41_CXXFLAGS )
697+ crypto_libbitcoin_crypto_sse41_la_CPPFLAGS += -DENABLE_SSE41
698+ crypto_libbitcoin_crypto_sse41_la_SOURCES = crypto/sha256_sse41.cpp
699+
700+ # See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
701+ # CXXFLAGS above
702+ crypto_libbitcoin_crypto_avx2_la_LDFLAGS = $(AM_LDFLAGS ) -static
703+ crypto_libbitcoin_crypto_avx2_la_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS ) -static
704+ crypto_libbitcoin_crypto_avx2_la_CPPFLAGS = $(AM_CPPFLAGS )
705+ crypto_libbitcoin_crypto_avx2_la_CXXFLAGS += $(AVX2_CXXFLAGS )
706+ crypto_libbitcoin_crypto_avx2_la_CPPFLAGS += -DENABLE_AVX2
707+ crypto_libbitcoin_crypto_avx2_la_SOURCES = crypto/sha256_avx2.cpp
695708
696709# x11
697- crypto_libbitcoin_crypto_base_a_SOURCES += \
710+ crypto_libbitcoin_crypto_base_la_SOURCES += \
698711 crypto/x11/aes_helper.c \
699712 crypto/x11/blake.c \
700713 crypto/x11/bmw.c \
@@ -720,17 +733,23 @@ crypto_libbitcoin_crypto_base_a_SOURCES += \
720733 crypto/x11/sph_skein.h \
721734 crypto/x11/sph_types.h
722735
723- crypto_libbitcoin_crypto_x86_shani_a_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS )
724- crypto_libbitcoin_crypto_x86_shani_a_CPPFLAGS = $(AM_CPPFLAGS )
725- crypto_libbitcoin_crypto_x86_shani_a_CXXFLAGS += $(X86_SHANI_CXXFLAGS )
726- crypto_libbitcoin_crypto_x86_shani_a_CPPFLAGS += -DENABLE_X86_SHANI
727- crypto_libbitcoin_crypto_x86_shani_a_SOURCES = crypto/sha256_x86_shani.cpp
728-
729- crypto_libbitcoin_crypto_arm_shani_a_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS )
730- crypto_libbitcoin_crypto_arm_shani_a_CPPFLAGS = $(AM_CPPFLAGS )
731- crypto_libbitcoin_crypto_arm_shani_a_CXXFLAGS += $(ARM_SHANI_CXXFLAGS )
732- crypto_libbitcoin_crypto_arm_shani_a_CPPFLAGS += -DENABLE_ARM_SHANI
733- crypto_libbitcoin_crypto_arm_shani_a_SOURCES = crypto/sha256_arm_shani.cpp
736+ # See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
737+ # CXXFLAGS above
738+ crypto_libbitcoin_crypto_x86_shani_la_LDFLAGS = $(AM_LDFLAGS ) -static
739+ crypto_libbitcoin_crypto_x86_shani_la_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS ) -static
740+ crypto_libbitcoin_crypto_x86_shani_la_CPPFLAGS = $(AM_CPPFLAGS )
741+ crypto_libbitcoin_crypto_x86_shani_la_CXXFLAGS += $(X86_SHANI_CXXFLAGS )
742+ crypto_libbitcoin_crypto_x86_shani_la_CPPFLAGS += -DENABLE_X86_SHANI
743+ crypto_libbitcoin_crypto_x86_shani_la_SOURCES = crypto/sha256_x86_shani.cpp
744+
745+ # See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
746+ # CXXFLAGS above
747+ crypto_libbitcoin_crypto_arm_shani_la_LDFLAGS = $(AM_LDFLAGS ) -static
748+ crypto_libbitcoin_crypto_arm_shani_la_CXXFLAGS = $(AM_CXXFLAGS ) $(PIE_FLAGS ) -static
749+ crypto_libbitcoin_crypto_arm_shani_la_CPPFLAGS = $(AM_CPPFLAGS )
750+ crypto_libbitcoin_crypto_arm_shani_la_CXXFLAGS += $(ARM_SHANI_CXXFLAGS )
751+ crypto_libbitcoin_crypto_arm_shani_la_CPPFLAGS += -DENABLE_ARM_SHANI
752+ crypto_libbitcoin_crypto_arm_shani_la_SOURCES = crypto/sha256_arm_shani.cpp
734753
735754# consensus: shared between all executables that validate any consensus rules.
736755libbitcoin_consensus_a_CPPFLAGS = $(AM_CPPFLAGS ) $(BITCOIN_INCLUDES ) $(BOOST_CPPFLAGS )
@@ -906,7 +925,6 @@ bitcoin_bin_ldadd = \
906925 $(LIBBITCOIN_CRYPTO ) \
907926 $(LIBDASHBLS ) \
908927 $(LIBLEVELDB ) \
909- $(LIBLEVELDB_SSE42 ) \
910928 $(LIBMEMENV ) \
911929 $(LIBSECP256K1 )
912930
@@ -979,7 +997,7 @@ endif
979997# dashconsensus library #
980998if BUILD_BITCOIN_LIBS
981999include_HEADERS = script/bitcoinconsensus.h
982- libdashconsensus_la_SOURCES = support/cleanse.cpp $(crypto_libbitcoin_crypto_base_a_SOURCES ) $(libbitcoin_consensus_a_SOURCES )
1000+ libdashconsensus_la_SOURCES = support/cleanse.cpp $(crypto_libbitcoin_crypto_base_la_SOURCES ) $(libbitcoin_consensus_a_SOURCES )
9831001
9841002libdashconsensus_la_LDFLAGS = $(AM_LDFLAGS ) -no-undefined $(RELDFLAGS )
9851003libdashconsensus_la_LIBADD = $(LIBDASHBLS ) $(LIBSECP256K1 ) $(GMP_LIBS )
0 commit comments