Skip to content

Commit a3c11b6

Browse files
committed
partial bitcoin#24322: Introduce initial libbitcoinkernel
includes: - 1392e8e - 64caf94 - 05d1525 - 8bdfe05 - c1e16cb
1 parent 9f981dd commit a3c11b6

9 files changed

+215
-198
lines changed

src/Makefile.am

Lines changed: 63 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ AM_LIBTOOLFLAGS = --preserve-dup-deps
1818
PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
1919
EXTRA_LIBRARIES =
2020

21+
lib_LTLIBRARIES = $(LIBBITCOINCONSENSUS)
22+
noinst_LTLIBRARIES =
23+
24+
bin_PROGRAMS =
25+
noinst_PROGRAMS =
26+
check_PROGRAMS =
27+
TESTS =
28+
BENCHMARKS =
29+
2130
if ENABLE_STACKTRACES
2231
if ENABLE_CRASH_HOOKS
2332
if CRASH_HOOKS_WRAPPED_CXX_ABI
@@ -47,7 +56,7 @@ LIBBITCOIN_COMMON=libbitcoin_common.a
4756
LIBBITCOIN_CONSENSUS=libbitcoin_consensus.a
4857
LIBBITCOIN_CLI=libbitcoin_cli.a
4958
LIBBITCOIN_UTIL=libbitcoin_util.a
50-
LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.a
59+
LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.la
5160
LIBBITCOINQT=qt/libbitcoinqt.a
5261
LIBDASHBLS=dashbls/libdashbls.la
5362
LIBSECP256K1=secp256k1/libsecp256k1.la
@@ -63,23 +72,24 @@ LIBBITCOIN_WALLET=libbitcoin_wallet.a
6372
LIBBITCOIN_WALLET_TOOL=libbitcoin_wallet_tool.a
6473
endif
6574

66-
LIBBITCOIN_CRYPTO= $(LIBBITCOIN_CRYPTO_BASE)
75+
LIBBITCOIN_CRYPTO = $(LIBBITCOIN_CRYPTO_BASE)
6776
if ENABLE_SSE41
68-
LIBBITCOIN_CRYPTO_SSE41 = crypto/libbitcoin_crypto_sse41.a
77+
LIBBITCOIN_CRYPTO_SSE41 = crypto/libbitcoin_crypto_sse41.la
6978
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SSE41)
7079
endif
7180
if ENABLE_AVX2
72-
LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.a
81+
LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.la
7382
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_AVX2)
7483
endif
7584
if 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
7786
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_X86_SHANI)
7887
endif
7988
if 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
8190
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_ARM_SHANI)
8291
endif
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:
92102
EXTRA_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-
113113
if BUILD_BITCOIND
114114
bin_PROGRAMS += dashd
115115
endif
@@ -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

680687
if USE_ASM
681-
crypto_libbitcoin_crypto_base_a_SOURCES += crypto/sha256_sse4.cpp
688+
crypto_libbitcoin_crypto_base_la_SOURCES += crypto/sha256_sse4.cpp
682689
endif
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.
736755
libbitcoin_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 #
980998
if BUILD_BITCOIN_LIBS
981999
include_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

9841002
libdashconsensus_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS)
9851003
libdashconsensus_la_LIBADD = $(LIBDASHBLS) $(LIBSECP256K1) $(GMP_LIBS)

src/Makefile.bench.include

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,15 @@ bench_bench_dash_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS)
6161
bench_bench_dash_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
6262
bench_bench_dash_LDFLAGS = $(LDFLAGS_WRAP_EXCEPTIONS) $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
6363
bench_bench_dash_LDADD = \
64+
$(LIBTEST_UTIL) \
6465
$(LIBBITCOIN_NODE) \
6566
$(LIBBITCOIN_WALLET) \
6667
$(LIBBITCOIN_COMMON) \
6768
$(LIBBITCOIN_UTIL) \
6869
$(LIBBITCOIN_CONSENSUS) \
6970
$(LIBBITCOIN_CRYPTO) \
7071
$(LIBDASHBLS) \
71-
$(LIBTEST_UTIL) \
7272
$(LIBLEVELDB) \
73-
$(LIBLEVELDB_SSE42) \
7473
$(LIBMEMENV) \
7574
$(LIBSECP256K1) \
7675
$(LIBUNIVALUE) \

src/Makefile.crc32c.include

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
# Distributed under the MIT software license, see the accompanying
33
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
44

5-
LIBCRC32C_INT = crc32c/libcrc32c.a
6-
LIBLEVELDB_SSE42_INT = leveldb/libleveldb_sse42.a
5+
LIBCRC32C_INT = crc32c/libcrc32c.la
76

8-
EXTRA_LIBRARIES += $(LIBCRC32C_INT)
7+
noinst_LTLIBRARIES += $(LIBCRC32C_INT)
98

109
LIBCRC32C = $(LIBCRC32C_INT)
1110

@@ -34,41 +33,49 @@ else
3433
CRC32C_CPPFLAGS_INT += -DBYTE_ORDER_BIG_ENDIAN=0
3534
endif
3635

37-
crc32c_libcrc32c_a_CPPFLAGS = $(AM_CPPFLAGS) $(CRC32C_CPPFLAGS_INT) $(CRC32C_CPPFLAGS)
38-
crc32c_libcrc32c_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
39-
40-
crc32c_libcrc32c_a_SOURCES =
41-
crc32c_libcrc32c_a_SOURCES += crc32c/include/crc32c/crc32c.h
42-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_arm64.h
43-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_arm64_check.h
44-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_internal.h
45-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_prefetch.h
46-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_read_le.h
47-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_round_up.h
48-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_sse42_check.h
49-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_sse42.h
50-
51-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c.cc
52-
crc32c_libcrc32c_a_SOURCES += crc32c/src/crc32c_portable.cc
36+
crc32c_libcrc32c_la_CPPFLAGS = $(AM_CPPFLAGS) $(CRC32C_CPPFLAGS_INT) $(CRC32C_CPPFLAGS)
37+
38+
# Specify -static in both CXXFLAGS and LDFLAGS so libtool will only build a
39+
# static version of this library. We don't need a dynamic version, and a dynamic
40+
# version can't be used on windows anyway because the library doesn't currently
41+
# export DLL symbols.
42+
crc32c_libcrc32c_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
43+
crc32c_libcrc32c_la_LDFLAGS = $(AM_LDFLAGS) -static
44+
45+
crc32c_libcrc32c_la_SOURCES =
46+
crc32c_libcrc32c_la_SOURCES += crc32c/include/crc32c/crc32c.h
47+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_arm64.h
48+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_arm64_check.h
49+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_internal.h
50+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_prefetch.h
51+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_read_le.h
52+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_round_up.h
53+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_sse42_check.h
54+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_sse42.h
55+
56+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c.cc
57+
crc32c_libcrc32c_la_SOURCES += crc32c/src/crc32c_portable.cc
5358

5459
if ENABLE_SSE42
55-
LIBCRC32C_SSE42_INT = crc32c/libcrc32c_sse42.a
56-
EXTRA_LIBRARIES += $(LIBCRC32C_SSE42_INT)
60+
LIBCRC32C_SSE42_INT = crc32c/libcrc32c_sse42.la
61+
noinst_LTLIBRARIES += $(LIBCRC32C_SSE42_INT)
5762
LIBCRC32C += $(LIBCRC32C_SSE42_INT)
5863

59-
crc32c_libcrc32c_sse42_a_CPPFLAGS = $(crc32c_libcrc32c_a_CPPFLAGS)
60-
crc32c_libcrc32c_sse42_a_CXXFLAGS = $(crc32c_libcrc32c_a_CXXFLAGS) $(SSE42_CXXFLAGS)
64+
crc32c_libcrc32c_sse42_la_CPPFLAGS = $(crc32c_libcrc32c_la_CPPFLAGS)
65+
crc32c_libcrc32c_sse42_la_CXXFLAGS = $(crc32c_libcrc32c_la_CXXFLAGS) $(SSE42_CXXFLAGS)
66+
crc32c_libcrc32c_sse42_la_LDFLAGS = $(crc32c_libcrc32c_la_LDFLAGS)
6167

62-
crc32c_libcrc32c_sse42_a_SOURCES = crc32c/src/crc32c_sse42.cc
68+
crc32c_libcrc32c_sse42_la_SOURCES = crc32c/src/crc32c_sse42.cc
6369
endif
6470

6571
if ENABLE_ARM_CRC
66-
LIBCRC32C_ARM_CRC_INT = crc32c/libcrc32c_arm_crc.a
67-
EXTRA_LIBRARIES += $(LIBCRC32C_ARM_CRC_INT)
72+
LIBCRC32C_ARM_CRC_INT = crc32c/libcrc32c_arm_crc.la
73+
noinst_LTLIBRARIES += $(LIBCRC32C_ARM_CRC_INT)
6874
LIBCRC32C += $(LIBCRC32C_ARM_CRC_INT)
6975

70-
crc32c_libcrc32c_arm_crc_a_CPPFLAGS = $(crc32c_libcrc32c_a_CPPFLAGS)
71-
crc32c_libcrc32c_arm_crc_a_CXXFLAGS = $(crc32c_libcrc32c_a_CXXFLAGS) $(ARM_CRC_CXXFLAGS)
76+
crc32c_libcrc32c_arm_crc_la_CPPFLAGS = $(crc32c_libcrc32c_la_CPPFLAGS)
77+
crc32c_libcrc32c_arm_crc_la_CXXFLAGS = $(crc32c_libcrc32c_la_CXXFLAGS) $(ARM_CRC_CXXFLAGS)
78+
crc32c_libcrc32c_arm_crc_la_LDFLAGS = $(crc32c_libcrc32c_la_LDFLAGS)
7279

73-
crc32c_libcrc32c_arm_crc_a_SOURCES = crc32c/src/crc32c_arm64.cc
80+
crc32c_libcrc32c_arm_crc_la_SOURCES = crc32c/src/crc32c_arm64.cc
7481
endif

0 commit comments

Comments
 (0)