Skip to content

Commit 80dc922

Browse files
committed
Merge #72: Make mpgen target independent from multiprocess one
665d1fd Make `mpgen` target independent from `multiprocess` one (Hennadii Stepanov) Pull request description: Instead of dependency `mpgen` on `multiprocess`, both of them can share the `util` object library. This is a step towards ability to build and install `mpgen` and `multiprocess` independently, especially when [cross](bitcoin/bitcoin#25941) building. ACKs for top commit: ryanofsky: Code review ACK 665d1fd. I like this change. No reason the code generator and runtime need to share all the same dependencies. Tree-SHA512: 3194f66a0a62c7ec006ba4894ded2489da2fe08371d69eb9b74e210e3499c1231944690b3509955ef2e8d25ae0c9e88301ae8164732077b5236003f7b2e0627e
2 parents d321ef8 + 665d1fd commit 80dc922

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

CMakeLists.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ cmake_pop_check_state()
4949

5050
capnp_generate_cpp(MP_PROXY_SRCS MP_PROXY_HDRS include/mp/proxy.capnp)
5151

52+
add_library(util OBJECT src/mp/util.cpp)
53+
target_include_directories(util PRIVATE
54+
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
55+
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
56+
5257
set(MP_PUBLIC_HEADERS
5358
${MP_PROXY_HDRS}
5459
include/mp/proxy-io.h
@@ -61,7 +66,7 @@ add_library(multiprocess STATIC
6166
${MP_PROXY_SRCS}
6267
${MP_PUBLIC_HEADERS}
6368
src/mp/proxy.cpp
64-
src/mp/util.cpp)
69+
$<TARGET_OBJECTS:util>)
6570
target_include_directories(multiprocess PUBLIC
6671
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
6772
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
@@ -76,15 +81,14 @@ set_target_properties(multiprocess PROPERTIES
7681
PUBLIC_HEADER "${MP_PUBLIC_HEADERS}")
7782
install(TARGETS multiprocess EXPORT Multiprocess ARCHIVE DESTINATION lib PUBLIC_HEADER DESTINATION include/mp)
7883

79-
add_executable(mpgen src/mp/gen.cpp)
84+
add_executable(mpgen src/mp/gen.cpp $<TARGET_OBJECTS:util>)
8085
target_include_directories(mpgen PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
8186
target_include_directories(mpgen PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
8287
target_link_libraries(mpgen PRIVATE CapnProto::capnp)
8388
target_link_libraries(mpgen PRIVATE CapnProto::capnp-rpc)
8489
target_link_libraries(mpgen PRIVATE CapnProto::capnpc)
8590
target_link_libraries(mpgen PRIVATE CapnProto::kj)
8691
target_link_libraries(mpgen PRIVATE Threads::Threads)
87-
target_link_libraries(mpgen PRIVATE multiprocess)
8892
set_target_properties(mpgen PROPERTIES
8993
INSTALL_RPATH_USE_LINK_PATH TRUE)
9094
install(TARGETS mpgen EXPORT Multiprocess RUNTIME DESTINATION bin)

0 commit comments

Comments
 (0)