@@ -6,22 +6,43 @@ project(py-bitcoinkernel
66set (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR} " )
77
88include (ExternalProject)
9+ include (GNUInstallDirs)
10+
11+ set (BITCOIN_TARGET "" CACHE STRING "Host triple for cross compilation, enables depends build if set" )
912
1013add_library (bitcoinkernel SHARED IMPORTED )
1114if (DEFINED ENV{BITCOINKERNEL_LIB})
1215 message (STATUS "Using bitcoinkernel library from BITCOINKERNEL_LIB: $ENV{BITCOINKERNEL_LIB} " )
1316 set (BITCOINKERNEL_PATH "$ENV{BITCOINKERNEL_LIB} " )
1417else ()
15- message (STATUS "Building bitcoinkernel from source in depend/bitcoin/" )
16- message (STATUS "Using toolchain for host: ${HOST_TUPLE} " )
18+ set (BITCOIN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /depend/bitcoin" )
19+ message (STATUS "Building bitcoinkernel from source in ${BITCOIN_SOURCE_DIR} " )
20+
21+ if (NOT EXISTS "${BITCOIN_SOURCE_DIR} /CMakeLists.txt" )
22+ message (FATAL_ERROR "Bitcoin source not found in ${BITCOIN_SOURCE_DIR} . Please ensure the submodule is initialized." )
23+ endif ()
1724
18- if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR} /depend/bitcoin/CMakeLists.txt" )
19- message (FATAL_ERROR "Bitcoin source not found in depend/bitcoin/. Please ensure the submodule is initialized." )
25+ if (BITCOIN_TARGET)
26+ set (DEPENDS_DIR "${BITCOIN_SOURCE_DIR} /depends" )
27+ message (STATUS "Building Bitcoin Core dependencies for target: ${BITCOIN_TARGET} " )
28+ ExternalProject_Add(bitcoin_depends
29+ SOURCE_DIR "${DEPENDS_DIR} "
30+ CONFIGURE_COMMAND ""
31+ BUILD_COMMAND make -C "${DEPENDS_DIR} "
32+ NO_QT=1 NO_QR=1 NO_ZMQ=1 NO_WALLET=1 NO_USDT=1
33+ NO_LIBEVENT=1 NO_SQLITE=1 NO_BDB=1
34+ HOST=${BITCOIN_TARGET} -j${CMAKE_BUILD_PARALLEL_LEVEL}
35+ BUILD_IN_SOURCE 1
36+ INSTALL_COMMAND ""
37+ )
38+ set (TOOLCHAIN_ARG "--toolchain" "${DEPENDS_DIR} /${BITCOIN_TARGET} /toolchain.cmake" )
39+ set (BITCOIN_DEPENDS_ARG DEPENDS bitcoin_depends)
2040 endif ()
2141
2242 ExternalProject_Add(bitcoin_core
23- SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /depend/bitcoin"
24- CMAKE_ARGS
43+ ${BITCOIN_DEPENDS_ARG}
44+ SOURCE_DIR "${BITCOIN_SOURCE_DIR} "
45+ CONFIGURE_COMMAND ${CMAKE_COMMAND} ${TOOLCHAIN_ARG} <SOURCE_DIR>
2546 -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
2647 -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
2748 -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
0 commit comments