add patch for libbitcoind.so.
This commit is contained in:
parent
3f8627b351
commit
5e89598f21
|
@ -0,0 +1,500 @@
|
|||
diff --git a/Makefile.am b/Makefile.am
|
||||
index b51f477..58241df 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -35,6 +35,11 @@ COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \
|
||||
baseline_filtered.info block_test_filtered.info \
|
||||
leveldb_baseline_filtered.info test_bitcoin_coverage.info test_bitcoin.info
|
||||
|
||||
+if ENABLE_DAEMONLIB
|
||||
+all:
|
||||
+ $(MAKE) -C src
|
||||
+endif
|
||||
+
|
||||
dist-hook:
|
||||
-$(MAKE) -C $(top_distdir)/src/leveldb clean
|
||||
-$(MAKE) -C $(top_distdir)/src/secp256k1 distclean
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 9814197..3f25415 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -126,6 +126,12 @@ AC_ARG_ENABLE([reduce-exports],
|
||||
[use_reduce_exports=$enableval],
|
||||
[use_reduce_exports=auto])
|
||||
|
||||
+AC_ARG_ENABLE([daemonlib],
|
||||
+ [AS_HELP_STRING([--enable-daemonlib],
|
||||
+ [compile all of bitcoind as a library (default is no)])],
|
||||
+ [use_daemonlib=$enableval],
|
||||
+ [use_daemonlib=no])
|
||||
+
|
||||
AC_ARG_ENABLE([ccache],
|
||||
[AS_HELP_STRING([--enable-ccache],
|
||||
[use ccache for building (default is yes if ccache is found)])],
|
||||
@@ -387,6 +393,9 @@ fi
|
||||
if test x$use_hardening != xno; then
|
||||
AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
|
||||
AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
|
||||
+ if test x$use_daemonlib = xno; then
|
||||
+ AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"])
|
||||
+ fi
|
||||
|
||||
AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
|
||||
AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
|
||||
@@ -400,7 +409,7 @@ if test x$use_hardening != xno; then
|
||||
AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
|
||||
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
|
||||
|
||||
- if test x$TARGET_OS != xwindows; then
|
||||
+ if test x$TARGET_OS != xwindows -a x$use_daemonlib = xno; then
|
||||
# All windows code is PIC, forcing it on just adds useless compile warnings
|
||||
AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"])
|
||||
AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
|
||||
@@ -418,6 +427,17 @@ if test x$use_hardening != xno; then
|
||||
OBJCXXFLAGS="$CXXFLAGS"
|
||||
fi
|
||||
|
||||
+AC_DEFINE([ENABLE_DAEMONLIB],[0],[Enable daemonlib.])
|
||||
+AM_CONDITIONAL([ENABLE_DAEMONLIB],[false])
|
||||
+if test x$use_daemonlib != xno; then
|
||||
+ AX_CHECK_COMPILE_FLAG([-fPIC],[DAEMONLIB_CXXFLAGS="$DAEMONLIB_CXXFLAGS -fPIC"])
|
||||
+ AC_DEFINE([ENABLE_DAEMONLIB],[1],[Enable daemonlib.])
|
||||
+ AM_CONDITIONAL([ENABLE_DAEMONLIB],[true])
|
||||
+ CXXFLAGS="$CXXFLAGS $DAEMONLIB_CXXFLAGS"
|
||||
+ CPPFLAGS="$CPPFLAGS $DAEMONLIB_CPPFLAGS"
|
||||
+ OBJCXXFLAGS="$CXXFLAGS"
|
||||
+fi
|
||||
+
|
||||
dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
|
||||
if test x$TARGET_OS = xdarwin; then
|
||||
AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
|
||||
@@ -463,7 +483,7 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
]
|
||||
)
|
||||
|
||||
-if test x$use_reduce_exports != xno; then
|
||||
+if test x$use_reduce_exports != xno -a x$use_daemonlib = xno; then
|
||||
AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
|
||||
[
|
||||
if test x$use_reduce_exports = xyes; then
|
||||
@@ -811,6 +831,13 @@ if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_q
|
||||
AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
|
||||
fi
|
||||
|
||||
+AC_MSG_CHECKING([whether to compile as daemonlib])
|
||||
+if test x$use_daemonlib != xno; then
|
||||
+ AC_MSG_RESULT([yes])
|
||||
+else
|
||||
+ AC_MSG_RESULT([no])
|
||||
+fi
|
||||
+
|
||||
AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
|
||||
AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
|
||||
AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
|
||||
diff --git a/doc/build-unix.md b/doc/build-unix.md
|
||||
index 8ddee3b..c4274a3 100644
|
||||
--- a/doc/build-unix.md
|
||||
+++ b/doc/build-unix.md
|
||||
@@ -239,3 +239,42 @@ In this case there is no dependency on Berkeley DB 4.8.
|
||||
Mining is also possible in disable-wallet mode, but only using the `getblocktemplate` RPC
|
||||
call not `getwork`.
|
||||
|
||||
+Compiling bitcoind as a shared object (`libbitcoind.so`)
|
||||
+--------------------------------------------------------
|
||||
+
|
||||
+### Compiling as a library
|
||||
+
|
||||
+``` bash
|
||||
+# ensure clean up
|
||||
+$ make clean
|
||||
+
|
||||
+# create configure file
|
||||
+$ ./autogen.sh
|
||||
+
|
||||
+# configure as a library with -fPIC on all object files
|
||||
+# use --with-incompatible-bdb if necessary
|
||||
+# use --prefix=/usr if necessary
|
||||
+$ ./configure --enable-daemonlib
|
||||
+
|
||||
+# build libbitcoind.so
|
||||
+$ time make
|
||||
+...
|
||||
+real 31m33.128s
|
||||
+user 16m23.930s
|
||||
+sys 2m52.310s
|
||||
+```
|
||||
+
|
||||
+`--enable-daemonlib` will compile all object files with `-fPIC` (Position
|
||||
+Independent Code - needed to create a shared object).
|
||||
+
|
||||
+`make` will then compile `./src/libbitcoind.so` (with `-shared -fPIC`), linking
|
||||
+to all the freshly compiled PIC object files. This will completely ignore
|
||||
+compiling tests and the QT object files.
|
||||
+
|
||||
+Without `--enable-daemonlib`, the Makefile with compile bitcoind with -fPIE
|
||||
+(Position Independent for Executable), this allows compiling of bitcoind.
|
||||
+
|
||||
+#### Todo
|
||||
+
|
||||
+- Find a way to compile bitcoind and libbitcoind.so at the same time without
|
||||
+ recompiling object files each time? Possibly use libtool's .lo/.la.
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index d6ac6e1..4ac63a2 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -31,12 +31,15 @@ LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
|
||||
LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
|
||||
LIBBITCOINQT=qt/libbitcoinqt.a
|
||||
LIBSECP256K1=secp256k1/libsecp256k1.la
|
||||
+LIBBITCOIND=libbitcoind.so
|
||||
|
||||
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
|
||||
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
|
||||
|
||||
# Make is not made aware of per-object dependencies to avoid limiting building parallelization
|
||||
# But to build the less dependent modules first, we manually select their order here:
|
||||
+
|
||||
+if !ENABLE_DAEMONLIB
|
||||
noinst_LIBRARIES = \
|
||||
crypto/libbitcoin_crypto.a \
|
||||
libbitcoin_util.a \
|
||||
@@ -76,6 +79,7 @@ BITCOIN_CORE_H = \
|
||||
amount.h \
|
||||
base58.h \
|
||||
bloom.h \
|
||||
+ bitcoind.h \
|
||||
chain.h \
|
||||
chainparams.h \
|
||||
chainparamsbase.h \
|
||||
@@ -152,10 +156,17 @@ JSON_H = \
|
||||
json/json_spirit_writer.h \
|
||||
json/json_spirit_writer_template.h
|
||||
|
||||
+else
|
||||
+.PHONY: FORCE
|
||||
+BITCOIN_INCLUDES += $(BDB_CPPFLAGS)
|
||||
+endif
|
||||
+
|
||||
obj/build.h: FORCE
|
||||
@$(MKDIR_P) $(builddir)/obj
|
||||
@$(top_srcdir)/share/genbuild.sh $(abs_top_builddir)/src/obj/build.h \
|
||||
$(abs_top_srcdir)
|
||||
+
|
||||
+if !ENABLE_DAEMONLIB
|
||||
libbitcoin_util_a-clientversion.$(OBJEXT): obj/build.h
|
||||
|
||||
# server: shared between bitcoind and bitcoin-qt
|
||||
@@ -165,6 +176,7 @@ libbitcoin_server_a_SOURCES = \
|
||||
alert.cpp \
|
||||
bloom.cpp \
|
||||
chain.cpp \
|
||||
+ bitcoind.cpp \
|
||||
checkpoints.cpp \
|
||||
init.cpp \
|
||||
leveldbwrapper.cpp \
|
||||
@@ -304,7 +316,7 @@ bitcoind_LDADD = \
|
||||
if ENABLE_WALLET
|
||||
bitcoind_LDADD += libbitcoin_wallet.a
|
||||
endif
|
||||
-bitcoind_SOURCES = bitcoind.cpp
|
||||
+bitcoind_SOURCES = bitcoin-main.cpp
|
||||
#
|
||||
|
||||
if TARGET_WINDOWS
|
||||
@@ -380,6 +392,7 @@ if USE_LIBSECP256K1
|
||||
libbitcoinconsensus_la_LIBADD += secp256k1/libsecp256k1.la
|
||||
endif
|
||||
endif
|
||||
+endif
|
||||
|
||||
CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a *.gcda *.gcno
|
||||
|
||||
@@ -405,6 +418,9 @@ clean-local:
|
||||
@test -f $(PROTOC)
|
||||
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(abspath $(<D) $<)
|
||||
|
||||
+if ENABLE_DAEMONLIB
|
||||
+include Makefile.daemon.include
|
||||
+else
|
||||
if ENABLE_TESTS
|
||||
include Makefile.test.include
|
||||
endif
|
||||
@@ -416,3 +432,4 @@ endif
|
||||
if ENABLE_QT_TESTS
|
||||
include Makefile.qttest.include
|
||||
endif
|
||||
+endif
|
||||
diff --git a/src/Makefile.daemon.include b/src/Makefile.daemon.include
|
||||
new file mode 100644
|
||||
index 0000000..f411ea8
|
||||
--- /dev/null
|
||||
+++ b/src/Makefile.daemon.include
|
||||
@@ -0,0 +1,43 @@
|
||||
+all: $(LIBBITCOIND)
|
||||
+
|
||||
+leveldb_obj = \
|
||||
+ $(patsubst %test.o,,\
|
||||
+ $(patsubst %bench.o,,\
|
||||
+ $(subst leveldb/db/leveldb_main.o,,\
|
||||
+ $(subst leveldb/util/testharness.o,,\
|
||||
+ $(subst leveldb/util/testutil.o,,\
|
||||
+ $(subst leveldb/port/port_win.o,,\
|
||||
+ $(subst .cc,.o,$(wildcard leveldb/**/*.cc)) \
|
||||
+ $(subst .cc,.o,$(wildcard leveldb/helpers/memenv/memenv.cc)) \
|
||||
+ ))))))
|
||||
+
|
||||
+libbitcoind_obj = \
|
||||
+ $(subst bitcoin-main.o,, \
|
||||
+ $(subst bitcoin-cli.o,, \
|
||||
+ $(subst bitcoin-tx.o,, \
|
||||
+ $(subst .cpp,.o,$(wildcard *.cpp))))) \
|
||||
+ $(subst compat/glibcxx_compat.o,, \
|
||||
+ $(subst compat/glibc_compat.o,, \
|
||||
+ $(subst .cpp,.o,$(wildcard compat/*.cpp)))) \
|
||||
+ $(subst .cpp,.o,$(wildcard primitives/*.cpp)) \
|
||||
+ $(subst .cpp,.o,$(wildcard crypto/*.cpp)) \
|
||||
+ $(subst .cpp,.o,$(wildcard script/*.cpp)) \
|
||||
+ $(subst .cpp,.o,$(wildcard secp256k1/*.cpp)) \
|
||||
+ $(subst univalue/gen.o,, \
|
||||
+ $(subst .cpp,.o,$(wildcard univalue/*.cpp)))
|
||||
+
|
||||
+if GLIBC_BACK_COMPAT
|
||||
+libbitcoind_obj += compat/glibc_compat.o
|
||||
+libbitcoind_obj += compat/glibcxx_compat.o
|
||||
+endif
|
||||
+
|
||||
+clientversion.o: clientversion.cpp obj/build.h
|
||||
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
+ $(BITCOIN_INCLUDES) $(BITCOIN_CONFIG_INCLUDES) \
|
||||
+ $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
|
||||
+
|
||||
+$(LIBBITCOIND): $(LIBLEVELDB) $(LIBMEMENV) $(LIBSECP256K1) $(libbitcoind_obj)
|
||||
+ $(CC) -shared $(CXXFLAGS) $(CPPFLAGS) $(DEFS) $(LEVELDB_CPPFLAGS) \
|
||||
+ $(BITCOIN_INCLUDES) $(BITCOIN_CONFIG_INCLUDES) -o $@ $(BOOST_LIBS) \
|
||||
+ $(BDB_LIBS) $(PROTOBUF_LIBS) $(SSL_LIBS) $(LIBS) \
|
||||
+ $(leveldb_obj) $(libbitcoind_obj)
|
||||
diff --git a/src/bitcoin-main.cpp b/src/bitcoin-main.cpp
|
||||
new file mode 100644
|
||||
index 0000000..b37f9cf
|
||||
--- /dev/null
|
||||
+++ b/src/bitcoin-main.cpp
|
||||
@@ -0,0 +1,15 @@
|
||||
+// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||
+// Copyright (c) 2009-2013 The Bitcoin developers
|
||||
+// Distributed under the MIT/X11 software license, see the accompanying
|
||||
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
+
|
||||
+#include "bitcoind.h"
|
||||
+
|
||||
+int main(int argc, char* argv[]) {
|
||||
+ SetupEnvironment();
|
||||
+
|
||||
+ // Connect bitcoind signal handlers
|
||||
+ noui_connect();
|
||||
+
|
||||
+ return (AppInit(argc, argv) ? 0 : 1);
|
||||
+}
|
||||
diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp
|
||||
index be7757b..0e76df1 100644
|
||||
--- a/src/bitcoind.cpp
|
||||
+++ b/src/bitcoind.cpp
|
||||
@@ -3,17 +3,7 @@
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
-#include "clientversion.h"
|
||||
-#include "rpcserver.h"
|
||||
-#include "init.h"
|
||||
-#include "main.h"
|
||||
-#include "noui.h"
|
||||
-#include "ui_interface.h"
|
||||
-#include "util.h"
|
||||
-
|
||||
-#include <boost/algorithm/string/predicate.hpp>
|
||||
-#include <boost/filesystem.hpp>
|
||||
-#include <boost/thread.hpp>
|
||||
+#include "bitcoind.h"
|
||||
|
||||
/* Introduction text for doxygen: */
|
||||
|
||||
@@ -174,13 +164,3 @@ bool AppInit(int argc, char* argv[])
|
||||
|
||||
return fRet;
|
||||
}
|
||||
-
|
||||
-int main(int argc, char* argv[])
|
||||
-{
|
||||
- SetupEnvironment();
|
||||
-
|
||||
- // Connect bitcoind signal handlers
|
||||
- noui_connect();
|
||||
-
|
||||
- return (AppInit(argc, argv) ? 0 : 1);
|
||||
-}
|
||||
diff --git a/src/bitcoind.h b/src/bitcoind.h
|
||||
new file mode 100644
|
||||
index 0000000..0e34008
|
||||
--- /dev/null
|
||||
+++ b/src/bitcoind.h
|
||||
@@ -0,0 +1,25 @@
|
||||
+// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||
+// Copyright (c) 2009-2013 The Bitcoin developers
|
||||
+// Distributed under the MIT/X11 software license, see the accompanying
|
||||
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
+
|
||||
+#ifndef _BITCOIN_BITCOIND
|
||||
+#define _BITCOIN_BITCOIND 1
|
||||
+
|
||||
+#include "clientversion.h"
|
||||
+#include "rpcserver.h"
|
||||
+#include "init.h"
|
||||
+#include "main.h"
|
||||
+#include "noui.h"
|
||||
+#include "ui_interface.h"
|
||||
+#include "util.h"
|
||||
+#include "rpcclient.h"
|
||||
+
|
||||
+#include <boost/algorithm/string/predicate.hpp>
|
||||
+#include <boost/filesystem.hpp>
|
||||
+#include <boost/thread.hpp>
|
||||
+
|
||||
+extern void DetectShutdownThread(boost::thread_group* threadGroup);
|
||||
+extern bool AppInit(int argc, char* argv[]);
|
||||
+
|
||||
+#endif
|
||||
diff --git a/src/init.h b/src/init.h
|
||||
index f2f7ac6..10abc3a 100644
|
||||
--- a/src/init.h
|
||||
+++ b/src/init.h
|
||||
@@ -15,7 +15,15 @@ namespace boost
|
||||
class thread_group;
|
||||
} // namespace boost
|
||||
|
||||
+#ifdef ENABLE_WALLET
|
||||
+extern std::string strWalletFile;
|
||||
extern CWallet* pwalletMain;
|
||||
+#endif
|
||||
+
|
||||
+#include <boost/filesystem/path.hpp>
|
||||
+#include <boost/thread/mutex.hpp>
|
||||
+
|
||||
+void ThreadImport(std::vector<boost::filesystem::path> vImportFiles);
|
||||
|
||||
void StartShutdown();
|
||||
bool ShutdownRequested();
|
||||
diff --git a/src/leveldbwrapper.h b/src/leveldbwrapper.h
|
||||
index 4247920..08c8164 100644
|
||||
--- a/src/leveldbwrapper.h
|
||||
+++ b/src/leveldbwrapper.h
|
||||
@@ -29,10 +29,9 @@ class CLevelDBBatch
|
||||
{
|
||||
friend class CLevelDBWrapper;
|
||||
|
||||
-private:
|
||||
+public:
|
||||
leveldb::WriteBatch batch;
|
||||
|
||||
-public:
|
||||
template <typename K, typename V>
|
||||
void Write(const K& key, const V& value)
|
||||
{
|
||||
@@ -63,7 +62,7 @@ public:
|
||||
|
||||
class CLevelDBWrapper
|
||||
{
|
||||
-private:
|
||||
+public:
|
||||
//! custom environment this database is using (may be NULL in case of default environment)
|
||||
leveldb::Env* penv;
|
||||
|
||||
@@ -85,7 +84,6 @@ private:
|
||||
//! the database itself
|
||||
leveldb::DB* pdb;
|
||||
|
||||
-public:
|
||||
CLevelDBWrapper(const boost::filesystem::path& path, size_t nCacheSize, bool fMemory = false, bool fWipe = false);
|
||||
~CLevelDBWrapper();
|
||||
|
||||
diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp
|
||||
index 8b95373..53f9a5a 100644
|
||||
--- a/src/rpcdump.cpp
|
||||
+++ b/src/rpcdump.cpp
|
||||
@@ -26,11 +26,11 @@ using namespace std;
|
||||
|
||||
void EnsureWalletIsUnlocked();
|
||||
|
||||
-std::string static EncodeDumpTime(int64_t nTime) {
|
||||
+std::string EncodeDumpTime(int64_t nTime) {
|
||||
return DateTimeStrFormat("%Y-%m-%dT%H:%M:%SZ", nTime);
|
||||
}
|
||||
|
||||
-int64_t static DecodeDumpTime(const std::string &str) {
|
||||
+int64_t DecodeDumpTime(const std::string &str) {
|
||||
static const boost::posix_time::ptime epoch = boost::posix_time::from_time_t(0);
|
||||
static const std::locale loc(std::locale::classic(),
|
||||
new boost::posix_time::time_input_facet("%Y-%m-%dT%H:%M:%SZ"));
|
||||
@@ -43,7 +43,7 @@ int64_t static DecodeDumpTime(const std::string &str) {
|
||||
return (ptime - epoch).total_seconds();
|
||||
}
|
||||
|
||||
-std::string static EncodeDumpString(const std::string &str) {
|
||||
+std::string EncodeDumpString(const std::string &str) {
|
||||
std::stringstream ret;
|
||||
BOOST_FOREACH(unsigned char c, str) {
|
||||
if (c <= 32 || c >= 128 || c == '%') {
|
||||
diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp
|
||||
index d2d14ad..e8abb3d 100644
|
||||
--- a/src/rpcwallet.cpp
|
||||
+++ b/src/rpcwallet.cpp
|
||||
@@ -4,6 +4,7 @@
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "amount.h"
|
||||
+#include "rpcwallet.h"
|
||||
#include "base58.h"
|
||||
#include "core_io.h"
|
||||
#include "rpcserver.h"
|
||||
diff --git a/src/rpcwallet.h b/src/rpcwallet.h
|
||||
new file mode 100644
|
||||
index 0000000..2b53241
|
||||
--- /dev/null
|
||||
+++ b/src/rpcwallet.h
|
||||
@@ -0,0 +1,17 @@
|
||||
+// Copyright (c) 2010 Satoshi Nakamoto
|
||||
+// Copyright (c) 2009-2013 The Bitcoin developers
|
||||
+// Distributed under the MIT/X11 software license, see the accompanying
|
||||
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
+
|
||||
+#ifndef _BITCOINRPC_WALLET_H_
|
||||
+#define _BITCOINRPC_WALLET_H_ 1
|
||||
+
|
||||
+#include "wallet.h"
|
||||
+#include "walletdb.h"
|
||||
+
|
||||
+#include <stdint.h>
|
||||
+
|
||||
+CAmount GetAccountBalance(CWalletDB& walletdb, const std::string& strAccount, int nMinDepth, const isminefilter& filter);
|
||||
+CAmount GetAccountBalance(const std::string& strAccount, int nMinDepth, const isminefilter& filter);
|
||||
+
|
||||
+#endif
|
||||
diff --git a/src/wallet.h b/src/wallet.h
|
||||
index 70d274c..604e9e7 100644
|
||||
--- a/src/wallet.h
|
||||
+++ b/src/wallet.h
|
||||
@@ -105,8 +105,6 @@ public:
|
||||
class CWallet : public CCryptoKeyStore, public CValidationInterface
|
||||
{
|
||||
private:
|
||||
- bool SelectCoins(const CAmount& nTargetValue, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, CAmount& nValueRet, const CCoinControl *coinControl = NULL) const;
|
||||
-
|
||||
CWalletDB *pwalletdbEncryption;
|
||||
|
||||
//! the current wallet version: clients below this version are not able to load the wallet
|
||||
@@ -201,6 +199,7 @@ public:
|
||||
bool CanSupportFeature(enum WalletFeature wf) { AssertLockHeld(cs_wallet); return nWalletMaxVersion >= wf; }
|
||||
|
||||
void AvailableCoins(std::vector<COutput>& vCoins, bool fOnlyConfirmed=true, const CCoinControl *coinControl = NULL) const;
|
||||
+ bool SelectCoins(const CAmount& nTargetValue, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, CAmount& nValueRet, const CCoinControl *coinControl = NULL) const;
|
||||
bool SelectCoinsMinConf(const CAmount& nTargetValue, int nConfMine, int nConfTheirs, std::vector<COutput> vCoins, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, CAmount& nValueRet) const;
|
||||
|
||||
bool IsSpent(const uint256& hash, unsigned int n) const;
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
dir=$(test -n "$1" && echo "$1" || echo "${HOME}/bitcoin")
|
||||
cd "$dir" || exit 1
|
||||
patch -p1 < libbitcoind.patch
|
Loading…
Reference in New Issue