Skip to content

Commit 2710612

Browse files
committed
Merge pull request #5220
f9e40fb revert part of 9eda1620b (Cory Fields) 4300876 build: secp256k1 as a subdir, since it's required (Cory Fields) 0dc8613 build: fixup configure to not export anything (Cory Fields) 54566de depends: quit exporting in config.site (Cory Fields) ff1e5ba depends: add gmp package (Cory Fields) cf61b54 Don't use bashisms in configure (Pieter Wuille) dffb8f8 Use libsecp256k1 in key.cpp (Pieter Wuille) 4c97c64 Do not use EC code in global constructors (Pieter Wuille) 07a9901 Always build and link libsecp256k1 (Pieter Wuille) d48555b Squashed 'src/secp256k1/' content from commit ad2028f (Pieter Wuille) 7a7e109 Delete src/secp256k1 before subtree import (Pieter Wuille)
2 parents bf217e3 + f9e40fb commit 2710612

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+8548
-120
lines changed

configure.ac

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,6 @@ AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
800800
AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
801801
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
802802

803-
804803
AC_SUBST(RELDFLAGS)
805804
AC_SUBST(LIBTOOL_LDFLAGS)
806805
AC_SUBST(USE_UPNP)
@@ -816,6 +815,33 @@ AC_SUBST(MINIUPNPC_LIBS)
816815
AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
817816
AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
818817
AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
818+
819+
dnl boost's m4 checks do something really nasty: they export these vars. As a
820+
dnl result, they leak into secp256k1's configure and crazy things happen.
821+
dnl Until this is fixed upstream and we've synced, we'll just un-export them.
822+
CPPFLAGS_TEMP="$CPPFLAGS"
823+
unset CPPFLAGS
824+
CPPFLAGS="$CPPFLAGS_TEMP"
825+
826+
LDFLAGS_TEMP="$LDFLAGS"
827+
unset LDFLAGS
828+
LDFLAGS="$LDFLAGS_TEMP"
829+
830+
LIBS_TEMP="$LIBS"
831+
unset LIBS
832+
LIBS="$LIBS_TEMP"
833+
834+
PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
835+
unset PKG_CONFIG_PATH
836+
PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
837+
838+
PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
839+
unset PKG_CONFIG_LIBDIR
840+
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
841+
842+
ac_configure_args="${ac_configure_args} --disable-shared --with-pic"
843+
AC_CONFIG_SUBDIRS([src/secp256k1])
844+
819845
AC_OUTPUT
820846

821847
dnl Taken from https://wiki.debian.org/RpathIssue

depends/config.site.in

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,32 +48,37 @@ if test x@host_os@ = xmingw32; then
4848
fi
4949
fi
5050

51-
export PATH=$prefix/native/bin:$PATH
52-
export PKG_CONFIG="`which pkg-config` --static"
51+
PATH=$prefix/native/bin:$PATH
52+
PKG_CONFIG="`which pkg-config` --static"
53+
54+
# These two need to remain exported because pkg-config does not see them
55+
# otherwise. That means they must be unexported at the end of configure.ac to
56+
# avoid ruining the cache. Sigh.
57+
5358
export PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig
5459
export PKG_CONFIG_PATH=$prefix/share/pkgconfig
5560

56-
export CPPFLAGS="-I$prefix/include/ $CPPFLAGS"
57-
export LDFLAGS="-L$prefix/lib $LDFLAGS"
61+
CPPFLAGS="-I$prefix/include/ $CPPFLAGS"
62+
LDFLAGS="-L$prefix/lib $LDFLAGS"
5863

59-
export CC="@CC@"
60-
export CXX="@CXX@"
61-
export OBJC="${CC}"
62-
export OBJCXX="${CXX}"
63-
export CCACHE=$prefix/native/bin/ccache
64+
CC="@CC@"
65+
CXX="@CXX@"
66+
OBJC="${CC}"
67+
OBJCXX="${CXX}"
68+
CCACHE=$prefix/native/bin/ccache
6469

6570
if test -n "@AR@"; then
66-
export AR=@AR@
71+
AR=@AR@
6772
ac_cv_path_ac_pt_AR=${AR}
6873
fi
6974

7075
if test -n "@RANLIB@"; then
71-
export RANLIB=@RANLIB@
76+
RANLIB=@RANLIB@
7277
ac_cv_path_ac_pt_RANLIB=${RANLIB}
7378
fi
7479

7580
if test -n "@NM@"; then
76-
export NM=@NM@
81+
NM=@NM@
7782
ac_cv_path_ac_pt_NM=${NM}
7883
fi
7984

@@ -82,14 +87,14 @@ if test -n "@debug@"; then
8287
fi
8388

8489
if test -n "@CFLAGS@"; then
85-
export CFLAGS="@CFLAGS@ $CFLAGS"
90+
CFLAGS="@CFLAGS@ $CFLAGS"
8691
fi
8792
if test -n "@CXXFLAGS@"; then
88-
export CXXFLAGS="@CXXFLAGS@ $CXXFLAGS"
93+
CXXFLAGS="@CXXFLAGS@ $CXXFLAGS"
8994
fi
9095
if test -n "@CPPFLAGS@"; then
91-
export CPPFLAGS="@CPPFLAGS@ $CPPFLAGS"
96+
CPPFLAGS="@CPPFLAGS@ $CPPFLAGS"
9297
fi
9398
if test -n "@LDFLAGS@"; then
94-
export LDFLAGS="@LDFLAGS@ $LDFLAGS"
99+
LDFLAGS="@LDFLAGS@ $LDFLAGS"
95100
fi

depends/packages/gmp.mk

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package=gmp
2+
$(package)_version=6.0.0a
3+
$(package)_download_path=https://gmplib.org/download/gmp
4+
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
5+
$(package)_sha256_hash=7f8e9a804b9c6d07164cf754207be838ece1219425d64e28cfa3e70d5c759aaf
6+
$(package)_patches=arm_gmp_build_fix.patch darwin_gmp_build_fix.patch
7+
8+
define $(package)_preprocess_cmds
9+
patch -p1 < $($(package)_patch_dir)/arm_gmp_build_fix.patch && \
10+
patch -p1 < $($(package)_patch_dir)/darwin_gmp_build_fix.patch
11+
endef
12+
13+
define $(package)_set_vars
14+
$(package)_config_opts=--disable-shared CC_FOR_BUILD=$(build_CC)
15+
$(package)_config_opts_x86_64_darwin=--with-pic
16+
$(package)_config_opts_x86_64_linux=--with-pic
17+
$(package)_config_opts_arm_linux=--with-pic
18+
endef
19+
20+
define $(package)_config_cmds
21+
$($(package)_autoconf)
22+
endef
23+
24+
define $(package)_build_cmds
25+
$(MAKE)
26+
endef
27+
28+
define $(package)_stage_cmds
29+
$(MAKE) DESTDIR=$($(package)_staging_dir) install
30+
endef

depends/packages/packages.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
packages:=boost openssl
1+
packages:=boost openssl gmp
22
native_packages := native_ccache native_comparisontool
33

44
qt_native_packages = native_protobuf
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
# HG changeset patch
3+
# User Torbjorn Granlund <[email protected]>
4+
# Date 1396602422 -7200
5+
# Node ID 676e2d0f0e4dd301a7066079d2c9326c25c34a40
6+
# Parent 0194a75b56b21a9196626430af86c5bd9110c42d
7+
Conditionalise ARM asm on !__thumb__.
8+
9+
diff -r 0194a75b56b2 -r 676e2d0f0e4d mpn/generic/div_qr_1n_pi1.c
10+
--- a/mpn/generic/div_qr_1n_pi1.c Thu Apr 03 23:58:51 2014 +0200
11+
+++ b/mpn/generic/div_qr_1n_pi1.c Fri Apr 04 11:07:02 2014 +0200
12+
@@ -130,7 +130,7 @@
13+
"%2" ((UDItype)(a0)), "r" ((UDItype)(b0)) __CLOBBER_CC)
14+
#endif
15+
16+
-#if defined (__arm__) && W_TYPE_SIZE == 32
17+
+#if defined (__arm__) && !defined (__thumb__) && W_TYPE_SIZE == 32
18+
#define add_mssaaaa(m, sh, sl, ah, al, bh, bl) \
19+
__asm__ ( "adds %2, %5, %6\n\t" \
20+
"adcs %1, %3, %4\n\t" \
21+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
# HG changeset patch
3+
# User Torbjorn Granlund <[email protected]>
4+
# Date 1396470504 -7200
5+
# Node ID 1fab0adc5ff7d9ecddcbda96f407da58347bb49c
6+
# Parent db645603dcdb41afcf78b19b551ecd5a01c3841c
7+
Workaround for Darwin assembler quirk.
8+
9+
diff -r db645603dcdb -r 1fab0adc5ff7 mpn/x86_64/k8/redc_1.asm
10+
--- a/mpn/x86_64/k8/redc_1.asm Mon Mar 31 23:04:32 2014 +0200
11+
+++ b/mpn/x86_64/k8/redc_1.asm Wed Apr 02 22:28:24 2014 +0200
12+
@@ -114,7 +114,7 @@
13+
14+
JUMPTABSECT
15+
ALIGN(8)
16+
-L(tab): JMPENT( L(0m4), L(tab))
17+
+L(tab): JMPENT( L(0), L(tab))
18+
JMPENT( L(1), L(tab))
19+
JMPENT( L(2), L(tab))
20+
JMPENT( L(3), L(tab))
21+
@@ -397,6 +397,7 @@
22+
23+
24+
ALIGN(16)
25+
+L(0):
26+
L(0m4):
27+
L(lo0): mov (mp,nneg,8), %rax
28+
mov nneg, i
29+

src/Makefile.am

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1+
DIST_SUBDIRS = secp256k1
12
AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS)
23

3-
if USE_LIBSECP256K1
4-
secp256k1/libsecp256k1.la: $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
5-
@$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
6-
endif
74

85
if EMBEDDED_LEVELDB
96
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/include
@@ -23,9 +20,7 @@ endif
2320
BITCOIN_CONFIG_INCLUDES=-I$(builddir)/config
2421
BITCOIN_INCLUDES=-I$(builddir) -I$(builddir)/obj $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS) $(SSL_CFLAGS)
2522

26-
if USE_LIBSECP256K1
2723
BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
28-
endif
2924

3025
LIBBITCOIN_SERVER=libbitcoin_server.a
3126
LIBBITCOIN_WALLET=libbitcoin_wallet.a
@@ -35,6 +30,10 @@ LIBBITCOIN_UTIL=libbitcoin_util.a
3530
LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
3631
LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
3732
LIBBITCOINQT=qt/libbitcoinqt.a
33+
LIBSECP256K1=secp256k1/libsecp256k1.la
34+
35+
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
36+
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
3837

3938
# Make is not made aware of per-object dependencies to avoid limiting building parallelization
4039
# But to build the less dependent modules first, we manually select their order here:
@@ -281,11 +280,8 @@ bitcoind_LDADD = \
281280
$(LIBBITCOIN_UTIL) \
282281
$(LIBBITCOIN_CRYPTO) \
283282
$(LIBLEVELDB) \
284-
$(LIBMEMENV)
285-
286-
if USE_LIBSECP256K1
287-
bitcoind_LDADD += secp256k1/libsecp256k1.la
288-
endif
283+
$(LIBMEMENV) \
284+
$(LIBSECP256K1)
289285

290286
if ENABLE_WALLET
291287
bitcoind_LDADD += libbitcoin_wallet.a
@@ -312,9 +308,6 @@ bitcoin_cli_LDADD = \
312308
bitcoin_cli_SOURCES = \
313309
bitcoin-cli.cpp
314310

315-
if USE_LIBSECP256K1
316-
bitcoin_cli_LDADD += secp256k1/libsecp256k1.la
317-
endif
318311
bitcoin_cli_CPPFLAGS = $(BITCOIN_INCLUDES)
319312
#
320313

@@ -323,13 +316,9 @@ bitcoin_tx_LDADD = \
323316
$(LIBBITCOIN_UNIVALUE) \
324317
$(LIBBITCOIN_COMMON) \
325318
$(LIBBITCOIN_UTIL) \
326-
$(LIBBITCOIN_CRYPTO)
327-
328-
if USE_LIBSECP256K1
329-
bitcoin_tx_LDADD += secp256k1/libsecp256k1.la
330-
endif
331-
332-
bitcoin_tx_LDADD += $(BOOST_LIBS) \
319+
$(LIBBITCOIN_CRYPTO) \
320+
$(LIBSECP256K1) \
321+
$(BOOST_LIBS) \
333322
$(CRYPTO_LIBS)
334323

335324
bitcoin_tx_SOURCES = bitcoin-tx.cpp
@@ -346,11 +335,11 @@ CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a *.gcda *.gcno
346335

347336
DISTCLEANFILES = obj/build.h
348337

349-
EXTRA_DIST = leveldb secp256k1
338+
EXTRA_DIST = leveldb
350339

351340
clean-local:
352341
-$(MAKE) -C leveldb clean
353-
-$(MAKE) -C secp256k1 clean 2>/dev/null
342+
-$(MAKE) -C secp256k1 clean
354343
rm -f leveldb/*/*.gcno leveldb/helpers/memenv/*.gcno
355344
-rm -f config.h
356345

src/Makefile.qt.include

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -360,10 +360,7 @@ if ENABLE_WALLET
360360
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_WALLET)
361361
endif
362362
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
363-
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
364-
if USE_LIBSECP256K1
365-
qt_bitcoin_qt_LDADD += secp256k1/libsecp256k1.la
366-
endif
363+
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1)
367364
qt_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS)
368365
qt_bitcoin_qt_LIBTOOLFLAGS = --tag CXX
369366

src/Makefile.qttest.include

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,7 @@ qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_WALLET)
3232
endif
3333
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) \
3434
$(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
35-
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
36-
if USE_LIBSECP256K1
37-
qt_test_test_bitcoin_qt_LDADD += secp256k1/libsecp256k1.la
38-
endif
35+
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1)
3936
qt_test_test_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS)
4037

4138
CLEAN_BITCOIN_QT_TEST = $(TEST_QT_MOC_CPP) qt/test/*.gcda qt/test/*.gcno

src/Makefile.test.include

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,11 @@ endif
8080
test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES)
8181
test_test_bitcoin_CPPFLAGS = $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS)
8282
test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
83-
$(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
83+
$(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1)
8484
if ENABLE_WALLET
8585
test_test_bitcoin_LDADD += $(LIBBITCOIN_WALLET)
8686
endif
8787

88-
if USE_LIBSECP256K1
89-
test_test_bitcoin_LDADD += secp256k1/libsecp256k1.la
90-
endif
91-
9288
test_test_bitcoin_LDADD += $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
9389
test_test_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS)
9490

@@ -108,6 +104,9 @@ bitcoin_test_check: $(TEST_BINARY) FORCE
108104
bitcoin_test_clean : FORCE
109105
rm -f $(CLEAN_BITCOIN_TEST) $(test_test_bitcoin_OBJECTS) $(TEST_BINARY)
110106

107+
check-local:
108+
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
109+
111110
%.json.h: %.json
112111
@$(MKDIR_P) $(@D)
113112
@echo "namespace json_tests{" > $@

0 commit comments

Comments
 (0)