binding.gyp work.

This commit is contained in:
Christopher Jeffrey 2014-09-12 14:27:25 -07:00
parent 551e84de65
commit 7525208b01
6 changed files with 253 additions and 14 deletions

View File

@ -22,6 +22,16 @@ bitcoind as a shared object. This may not be ideal yet.
#### Compiling bticoind as a library
##### Dependencies
- Boost
- Bost Header Files (`/usr/include/boost`)
- Berkeley DB
- LevelDB Header Files (included in bitcoin source repo, leveldb itself
unnecessary, libbitcoind.so is already linked to them)
``` bash
# ensure clean up
$ make clean
@ -63,7 +73,7 @@ Without `--enable-library`, the Makefile with compile bitcoind with -fPIE
``` bash
$ cd ~/work/node_modules/bitcoind.js
$ PYTHON=/usr/bin/python2.7 make gyp
$ BITCOIN_DIR=~/bitcoin PYTHON=/usr/bin/python2.7 make
```
#### Running bitcoind.js

View File

@ -2,17 +2,23 @@
'targets': [{
'target_name': 'bitcoindjs',
'include_dirs' : [
'/usr/include',
# standard include:
# '/usr/include',
'<!(node -e "require(\'nan\')")',
'/usr/include/boost',
'<!(echo "$HOME")/bitcoin/src/leveldb/include',
'<!(echo "$HOME")/bitcoin/src',
# '/usr/include/boost',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/leveldb/include',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src',
],
'sources': [
'./src/bitcoindjs.cc',
],
'defines': [
'HAVE_WORKING_BOOST_SLEEP',
'<!(test $(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp'\
' | awk "{ print \$3 }") -gt 105200'\
' && echo HAVE_WORKING_BOOST_SLEEP_FOR'\
' || echo HAVE_WORKING_BOOST_SLEEP)',
# Assume libbitcoind.so is always
# compiled with wallet support.
'ENABLE_WALLET',
],
'cflags_cc': [
@ -21,18 +27,16 @@
],
'libraries': [
# standard libs:
'-L/usr/lib',
'-L/usr/local/lib',
# '-L/usr/lib',
# '-L/usr/local/lib',
# boost:
'-lboost_system',
'-lboost_filesystem',
'-lboost_program_options',
'-lboost_thread',
'-lboost_chrono',
# leveldb:
#'<!(echo "$HOME")/bitcoin/src/leveldb/libleveldb.a',
# bitcoind:
'<!(echo "$HOME")/bitcoin/src/libbitcoind.so',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/libbitcoind.so',
]
}]
}

91
binding_work.gyp Normal file
View File

@ -0,0 +1,91 @@
{
'targets': [{
'target_name': 'bitcoindjs',
'include_dirs' : [
# standard include:
# '/usr/include',
'<!(node -e "require(\'nan\')")',
'/usr/include/boost',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/leveldb/include',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src',
],
# 'includes': [
# './include.gypi',
# ],
# 'variables': {
# 'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
# 'BOOST_HAS_NANOSLEEP': '0',
# },
'conditions': [
['OS=="linux"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '<!(grep -q "#define \+BOOST_HAS_NANOSLEEP" /usr/include/boost/config/platform/linux.hpp && echo 1 || echo 0)',
},
}],
['OS=="darwin"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '<!(grep -q "#define \+BOOST_HAS_NANOSLEEP" /usr/include/boost/config/platform/macos.hpp && echo 1 || echo 0)',
},
}],
['OS!="linux" && OS!="darwin"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '0',
},
}],
['BOOST_VERSION>=105000 && (BOOST_HAS_NANOSLEEP==0 || BOOST_VERSION>=105200)', {
'variables': {
'BOOST_SLEEP': 'HAVE_WORKING_BOOST_SLEEP_FOR',
},
#'defines': [
# 'HAVE_WORKING_BOOST_SLEEP_FOR',
# # Assume libbitcoind.so is always
# # compiled with wallet support.
# 'ENABLE_WALLET',
#],
}, { # !(BOOST_VERSION>=105000) ...
'variables': {
'BOOST_SLEEP': 'HAVE_WORKING_BOOST_SLEEP',
},
#'defines': [
# 'HAVE_WORKING_BOOST_SLEEP',
# # Assume libbitcoind.so is always
# # compiled with wallet support.
# 'ENABLE_WALLET',
#],
}],
],
'sources': [
'./src/bitcoindjs.cc',
],
'defines': [
# TODO: Figure out how to detect BOOST_SLEEP in gyp.
# 'HAVE_WORKING_BOOST_SLEEP',
'<(BOOST_SLEEP)',
# Assume libbitcoind.so is always
# compiled with wallet support.
'ENABLE_WALLET',
],
'conditions': [
],
'cflags_cc': [
'-fexceptions',
'-frtti',
],
'libraries': [
# standard libs:
# '-L/usr/lib',
# '-L/usr/local/lib',
# boost:
'-lboost_system',
'-lboost_filesystem',
'-lboost_program_options',
'-lboost_thread',
'-lboost_chrono',
# bitcoind:
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/libbitcoind.so',
]
}]
}

66
binding_work2.gyp Normal file
View File

@ -0,0 +1,66 @@
{
'targets': [{
'target_name': 'bitcoindjs',
'include_dirs' : [
# standard include:
# '/usr/include',
'<!(node -e "require(\'nan\')")',
'/usr/include/boost',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/leveldb/include',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src',
],
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '0',
},
'conditions': [
['OS=="linux"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '<!(grep -q "#define \+BOOST_HAS_NANOSLEEP" /usr/include/boost/config/platform/linux.hpp && echo 1 || echo 0)',
},
}],
['OS=="darwin"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '<!(grep -q "#define \+BOOST_HAS_NANOSLEEP" /usr/include/boost/config/platform/macos.hpp && echo 1 || echo 0)',
},
}],
['BOOST_VERSION >= 105000 && (BOOST_HAS_NANOSLEEP == 0 || BOOST_VERSION >= 105200)', {
'defines': [
'HAVE_WORKING_BOOST_SLEEP_FOR',
],
}, { # !(BOOST_VERSION>=105000) ...
'defines': [
'HAVE_WORKING_BOOST_SLEEP',
],
}],
],
'sources': [
'./src/bitcoindjs.cc',
],
'defines': [
# Assume libbitcoind.so is always
# compiled with wallet support.
'<!(test $(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }") -gt 105200 && echo HAVE_WORKING_BOOST_SLEEP_FOR || echo HAVE_WORKING_BOOST_SLEEP)',
'ENABLE_WALLET',
],
'cflags_cc': [
'-fexceptions',
'-frtti',
],
'libraries': [
# standard libs:
# '-L/usr/lib',
# '-L/usr/local/lib',
# boost:
'-lboost_system',
'-lboost_filesystem',
'-lboost_program_options',
'-lboost_thread',
'-lboost_chrono',
# bitcoind:
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/libbitcoind.so',
]
}]
}

66
binding_work3.gyp Normal file
View File

@ -0,0 +1,66 @@
{
'targets': [{
'target_name': 'bitcoindjs',
'include_dirs' : [
# standard include:
# '/usr/include',
'<!(node -e "require(\'nan\')")',
'/usr/include/boost',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/leveldb/include',
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src',
],
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '0',
},
'conditions': [
['OS=="linux"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '<!(grep -q "#define \+BOOST_HAS_NANOSLEEP" /usr/include/boost/config/platform/linux.hpp && echo 1 || echo 0)',
},
}],
['OS=="darwin"', {
'variables': {
'BOOST_VERSION': '<!(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }")',
'BOOST_HAS_NANOSLEEP': '<!(grep -q "#define \+BOOST_HAS_NANOSLEEP" /usr/include/boost/config/platform/macos.hpp && echo 1 || echo 0)',
},
}],
['BOOST_VERSION >= 105000 && (BOOST_HAS_NANOSLEEP == 0 || BOOST_VERSION >= 105200)', {
'defines': [
'HAVE_WORKING_BOOST_SLEEP_FOR',
],
}, { # !(BOOST_VERSION>=105000) ...
'defines': [
'HAVE_WORKING_BOOST_SLEEP',
],
}],
],
'sources': [
'./src/bitcoindjs.cc',
],
'defines': [
'<!(test $(grep "#define BOOST_VERSION " /usr/include/boost/version.hpp | awk "{ print \$3 }") -gt 105200 && echo HAVE_WORKING_BOOST_SLEEP_FOR || echo HAVE_WORKING_BOOST_SLEEP)',
# Assume libbitcoind.so is always
# compiled with wallet support.
'ENABLE_WALLET',
],
'cflags_cc': [
'-fexceptions',
'-frtti',
],
'libraries': [
# standard libs:
# '-L/usr/lib',
# '-L/usr/local/lib',
# boost:
'-lboost_system',
'-lboost_filesystem',
'-lboost_program_options',
'-lboost_thread',
'-lboost_chrono',
# bitcoind:
'<!(test -n "$BITCOIN_DIR" && echo "$BITCOIN_DIR" || echo "${HOME}/bitcoin")/src/libbitcoind.so',
]
}]
}

View File

@ -79,6 +79,7 @@ extern void (DetectShutdownThread)(boost::thread_group*);
extern void (StartNode)(boost::thread_group&);
extern void (ThreadScriptCheck)();
extern void (StartShutdown)();
extern bool (AppInit2)(boost::thread_group&);
extern int nScriptCheckThreads;
#ifdef ENABLE_WALLET
extern std::string strWalletFile;
@ -287,15 +288,16 @@ start_node(void) {
detectShutdownThread = new boost::thread(
boost::bind(&DetectShutdownThread, &threadGroup));
int _nScriptCheckThreads = 0;
for (int i = 0; i < _nScriptCheckThreads - 1; i++) {
for (int i = 0; i < nScriptCheckThreads - 1; i++) {
threadGroup.create_thread(&ThreadScriptCheck);
}
std::vector<boost::filesystem::path> vImportFiles;
threadGroup.create_thread(boost::bind(&ThreadImport, vImportFiles));
StartNode(threadGroup);
// StartNode(threadGroup);
AppInit2(threadGroup);
#ifdef ENABLE_WALLET
if (pwalletMain) {