Skip to content

Commit 2424989

Browse files
theunisipa
authored andcommitted
leveldb: enable runtime-detected crc32 instructions
1 parent e4030ab commit 2424989

File tree

7 files changed

+25
-4
lines changed

7 files changed

+25
-4
lines changed

configure.ac

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,12 @@ if test "x$CXXFLAGS_overridden" = "xno"; then
236236
AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
237237
AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
238238
AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough],[CXXFLAGS="$CXXFLAGS -Wno-implicit-fallthrough"],,[[$CXXFLAG_WERROR]])
239+
240+
# Check for optional instruction set support. Enabling these does _not_ imply that all code will
241+
# be compiled with them, rather that specific objects/libs may use them after checking for runtime
242+
# compatibility.
243+
AX_CHECK_COMPILE_FLAG([-msse4.2],[[enable_sse42=yes; SSE42_CXXFLAGS="-msse4.2"]],,[[$CXXFLAG_WERROR]])
244+
239245
fi
240246
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
241247

@@ -1114,6 +1120,7 @@ AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
11141120
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
11151121
AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
11161122
AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1123+
AM_CONDITIONAL([ENABLE_SSE42],[test x$enable_sse42 = xyes])
11171124

11181125
AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
11191126
AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
@@ -1146,6 +1153,7 @@ AC_SUBST(HARDENED_CPPFLAGS)
11461153
AC_SUBST(HARDENED_LDFLAGS)
11471154
AC_SUBST(PIC_FLAGS)
11481155
AC_SUBST(PIE_FLAGS)
1156+
AC_SUBST(SSE42_CXXFLAGS)
11491157
AC_SUBST(LIBTOOL_APP_LDFLAGS)
11501158
AC_SUBST(USE_UPNP)
11511159
AC_SUBST(USE_QRCODE)

src/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ bitcoind_LDADD = \
380380
$(LIBBITCOIN_CONSENSUS) \
381381
$(LIBBITCOIN_CRYPTO) \
382382
$(LIBLEVELDB) \
383+
$(LIBLEVELDB_SSE42) \
383384
$(LIBMEMENV) \
384385
$(LIBSECP256K1)
385386

src/Makefile.bench.include

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ bench_bench_bitcoin_LDADD = \
3939
$(LIBBITCOIN_CONSENSUS) \
4040
$(LIBBITCOIN_CRYPTO) \
4141
$(LIBLEVELDB) \
42+
$(LIBLEVELDB_SSE42) \
4243
$(LIBMEMENV) \
4344
$(LIBSECP256K1) \
4445
$(LIBUNIVALUE)

src/Makefile.leveldb.include

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44

55
LIBLEVELDB_INT = leveldb/libleveldb.a
66
LIBMEMENV_INT = leveldb/libmemenv.a
7+
LIBLEVELDB_SSE42_INT = leveldb/libleveldb_sse42.a
78

89
EXTRA_LIBRARIES += $(LIBLEVELDB_INT)
910
EXTRA_LIBRARIES += $(LIBMEMENV_INT)
11+
EXTRA_LIBRARIES += $(LIBLEVELDB_SSE42_INT)
1012

1113
LIBLEVELDB += $(LIBLEVELDB_INT)
1214
LIBMEMENV += $(LIBMEMENV_INT)
15+
LIBLEVELDB_SSE42 = $(LIBLEVELDB_SSE42_INT)
1316

1417
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/include
1518
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/helpers/memenv
@@ -135,3 +138,11 @@ leveldb_libmemenv_a_CPPFLAGS = $(leveldb_libleveldb_a_CPPFLAGS)
135138
leveldb_libmemenv_a_CXXFLAGS = $(leveldb_libleveldb_a_CXXFLAGS)
136139
leveldb_libmemenv_a_SOURCES = leveldb/helpers/memenv/memenv.cc
137140
leveldb_libmemenv_a_SOURCES += leveldb/helpers/memenv/memenv.h
141+
142+
leveldb_libleveldb_sse42_a_CPPFLAGS = $(leveldb_libleveldb_a_CPPFLAGS)
143+
leveldb_libleveldb_sse42_a_CXXFLAGS = $(leveldb_libleveldb_a_CXXFLAGS)
144+
if ENABLE_SSE42
145+
leveldb_libleveldb_sse42_a_CPPFLAGS += -DLEVELDB_PLATFORM_POSIX_SSE
146+
leveldb_libleveldb_sse42_a_CXXFLAGS += $(SSE42_CXXFLAGS)
147+
endif
148+
leveldb_libleveldb_sse42_a_SOURCES = leveldb/port/port_posix_sse.cc

src/Makefile.qt.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ endif
407407
if ENABLE_ZMQ
408408
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
409409
endif
410-
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
410+
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
411411
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
412412
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
413413
qt_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)

src/Makefile.qttest.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ if ENABLE_ZMQ
6060
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
6161
endif
6262
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) \
63-
$(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
63+
$(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
6464
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
6565
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
6666
qt_test_test_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)

src/Makefile.test.include

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ endif
9797

9898
test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES)
9999
test_test_bitcoin_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS) $(EVENT_CFLAGS)
100-
test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
101-
$(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS)
100+
test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) \
101+
$(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS)
102102
test_test_bitcoin_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
103103
if ENABLE_WALLET
104104
test_test_bitcoin_LDADD += $(LIBBITCOIN_WALLET)

0 commit comments

Comments
 (0)