@@ -5,18 +5,12 @@ project(py-bitcoinkernel
55# Set install prefix to be relative to the build directory
66set (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR} " )
77
8+ include (ExternalProject)
9+
10+ add_library (bitcoinkernel SHARED IMPORTED )
811if (DEFINED ENV{BITCOINKERNEL_LIB})
912 message (STATUS "Using bitcoinkernel library from BITCOINKERNEL_LIB: $ENV{BITCOINKERNEL_LIB} " )
10- add_library (bitcoinkernel SHARED IMPORTED )
11- set_target_properties (bitcoinkernel PROPERTIES
12- IMPORTED_LOCATION "$ENV{BITCOINKERNEL_LIB} "
13- )
14-
15- # Install the imported library to _libs
16- install (FILES "$ENV{BITCOINKERNEL_LIB} "
17- DESTINATION "_libs"
18- COMPONENT Kernel
19- )
13+ set (BITCOINKERNEL_PATH "$ENV{BITCOINKERNEL_LIB} " )
2014else ()
2115 message (STATUS "Building bitcoinkernel from source in depend/bitcoin/" )
2216 message (STATUS "Using toolchain for host: ${HOST_TUPLE} " )
@@ -25,34 +19,51 @@ else()
2519 message (FATAL_ERROR "Bitcoin source not found in depend/bitcoin/. Please ensure the submodule is initialized." )
2620 endif ()
2721
28- # Configure Bitcoin build options
29- set (BUILD_SHARED_LIBS ON )
30- set (BUILD_KERNEL_LIB ON )
31- set (BUILD_BENCH OFF )
32- set (BUILD_CLI OFF )
33- set (BUILD_DAEMON OFF )
34- set (BUILD_FOR_FUZZING OFF )
35- set (BUILD_FUZZ_BINARY OFF )
36- set (BUILD_GUI OFF )
37- set (BUILD_KERNEL_TEST OFF )
38- set (BUILD_TESTS OFF )
39- set (BUILD_TX OFF )
40- set (BUILD_UTIL OFF )
41- set (BUILD_UTIL_CHAINSTATE OFF )
42- set (BUILD_WALLET_TOOL OFF )
43- set (ENABLE_WALLET OFF )
44- set (WITH_SQLITE OFF )
45-
46- add_subdirectory (depend/bitcoin EXCLUDE_FROM_ALL )
47-
48- # Make bitcoinkernel part of the default build
49- set_target_properties (bitcoinkernel PROPERTIES
50- EXCLUDE_FROM_ALL FALSE
22+ ExternalProject_Add(bitcoin_core
23+ SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /depend/bitcoin"
24+ CMAKE_ARGS
25+ -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
26+ -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
27+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
28+ -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
29+ -DBUILD_SHARED_LIBS=ON
30+ -DBUILD_KERNEL_LIB=ON
31+ -DBUILD_BENCH=OFF
32+ -DBUILD_CLI=OFF
33+ -DBUILD_DAEMON=OFF
34+ -DBUILD_FOR_FUZZING=OFF
35+ -DBUILD_FUZZ_BINARY=OFF
36+ -DBUILD_GUI=OFF
37+ -DBUILD_KERNEL_TEST=OFF
38+ -DBUILD_TESTS=OFF
39+ -DBUILD_TX=OFF
40+ -DBUILD_UTIL=OFF
41+ -DBUILD_UTIL_CHAINSTATE=OFF
42+ -DBUILD_WALLET_TOOL=OFF
43+ -DENABLE_WALLET=OFF
44+ -DWITH_SQLITE=OFF
45+ BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target bitcoinkernel
46+ INSTALL_COMMAND
47+ ${CMAKE_COMMAND} --install <BINARY_DIR> --strip --component Kernel
5148 )
5249
53- install (TARGETS bitcoinkernel
54- COMPONENT Kernel
55- LIBRARY DESTINATION "_libs"
56- RUNTIME DESTINATION "_libs"
57- )
50+ # Create imported target for bitcoinkernel
51+ add_dependencies (bitcoinkernel bitcoin_core)
52+
53+ ExternalProject_Get_Property(bitcoin_core INSTALL_DIR)
54+ set (RELATIVE_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR} /libbitcoinkernel${CMAKE_SHARED_LIBRARY_SUFFIX} " )
55+ if (BITCOIN_TARGET MATCHES ".*mingw.*" OR BITCOIN_TARGET MATCHES ".*windows.*" )
56+ set (RELATIVE_INSTALL_PATH "bin/libbitcoinkernel.dll" )
57+ endif ()
58+ set (BITCOINKERNEL_PATH "${INSTALL_DIR} /${RELATIVE_INSTALL_PATH} " )
59+
5860endif ()
61+
62+ set_target_properties (bitcoinkernel PROPERTIES
63+ IMPORTED_LOCATION "${BITCOINKERNEL_PATH} "
64+ )
65+
66+ install (FILES "${BITCOINKERNEL_PATH} "
67+ DESTINATION "_libs"
68+ COMPONENT Kernel
69+ )
0 commit comments