Skip to content

Commit 003eb04

Browse files
committed
Merge #96: cmake: Introduce packages
4e70ad4 cmake, refactor: Rename target export files (Hennadii Stepanov) 694b6b1 cmake: Configure `LibmultiprocessGen` package (Hennadii Stepanov) 3b20e35 cmake: Configure `Libmultiprocess` package (Hennadii Stepanov) Pull request description: This PR adds configurations for the `Libmultiprocess` and `LibmultiprocessGen` packages. The Bitcoin Core branch, with uses this PR branch, is available [here](https://github.com/hebasto/bitcoin/tree/240329-cmake-CI-mpgen). As a suggestion for a follow-up, it seems worth disabling `mpgen` target for cross-compiling (see bitcoin/bitcoin#29665 (comment) and CMake [docs](https://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html#running-executables-built-in-the-project)). Based on #95. ACKs for top commit: ryanofsky: Code review ACK 4e70ad4. This should make it easier to depend on libmultprocess in cmake projects, using a find_package call and not having to include files directly. Tree-SHA512: 231d00fd3b03bff40d010d39636a4c6b26e071a1d2c220f204ef536d6f3f7b3c81d2d05a16e3bb23f405a45e2b763cd88344cabd9eb407f1967b766b328815a4
2 parents 19dea85 + 4e70ad4 commit 003eb04

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

CMakeLists.txt

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,24 @@ target_link_libraries(multiprocess PRIVATE CapnProto::kj)
8989
target_link_libraries(multiprocess PRIVATE CapnProto::kj-async)
9090
set_target_properties(multiprocess PROPERTIES
9191
PUBLIC_HEADER "${MP_PUBLIC_HEADERS}")
92-
install(TARGETS multiprocess EXPORT libmultiprocess-lib
92+
install(TARGETS multiprocess EXPORT LibmultiprocessTargets
9393
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib
9494
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mp COMPONENT lib)
9595
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libmultiprocess.pc"
9696
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT lib)
97-
install(EXPORT libmultiprocess-lib
97+
install(EXPORT LibmultiprocessTargets
9898
NAMESPACE Libmultiprocess::
99-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake COMPONENT lib)
99+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Libmultiprocess COMPONENT lib)
100+
include(CMakePackageConfigHelpers)
101+
configure_package_config_file(
102+
${PROJECT_SOURCE_DIR}/cmake/LibmultiprocessConfig.cmake.in
103+
LibmultiprocessConfig.cmake
104+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Libmultiprocess
105+
NO_SET_AND_CHECK_MACRO)
106+
install(
107+
FILES
108+
${CMAKE_CURRENT_BINARY_DIR}/LibmultiprocessConfig.cmake
109+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Libmultiprocess COMPONENT lib)
100110
add_custom_target(install-lib
101111
COMMAND ${CMAKE_COMMAND} -DCOMPONENT=lib -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake
102112
VERBATIM)
@@ -115,14 +125,25 @@ set_target_properties(mpgen PROPERTIES
115125
INSTALL_RPATH_USE_LINK_PATH TRUE)
116126
set_target_properties(mpgen PROPERTIES
117127
PUBLIC_HEADER include/mp/proxy.capnp)
118-
install(TARGETS mpgen EXPORT libmultiprocess-bin
128+
install(TARGETS mpgen EXPORT LibmultiprocessGenTargets
119129
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin
120130
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mp COMPONENT bin)
121131
install(FILES "include/mpgen.mk"
122132
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT bin)
123-
install(EXPORT libmultiprocess-bin
133+
install(EXPORT LibmultiprocessGenTargets
124134
NAMESPACE Libmultiprocess::
125-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake COMPONENT bin)
135+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LibmultiprocessGen COMPONENT bin)
136+
include(CMakePackageConfigHelpers)
137+
configure_package_config_file(
138+
${PROJECT_SOURCE_DIR}/cmake/LibmultiprocessGenConfig.cmake.in
139+
LibmultiprocessGenConfig.cmake
140+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LibmultiprocessGen
141+
NO_SET_AND_CHECK_MACRO)
142+
install(
143+
FILES
144+
${CMAKE_CURRENT_BINARY_DIR}/LibmultiprocessGenConfig.cmake
145+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibmultiprocessMacros.cmake
146+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LibmultiprocessGen COMPONENT bin)
126147
add_custom_target(install-bin
127148
COMMAND ${CMAKE_COMMAND} -DCOMPONENT=bin -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake
128149
VERBATIM)

cmake/LibmultiprocessConfig.cmake.in

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@PACKAGE_INIT@
2+
3+
include(CMakeFindDependencyMacro)
4+
find_dependency(CapnProto)
5+
6+
include("${CMAKE_CURRENT_LIST_DIR}/LibmultiprocessTargets.cmake")
7+
8+
check_required_components(Libmultiprocess)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/LibmultiprocessGenTargets.cmake")
4+
include("${CMAKE_CURRENT_LIST_DIR}/LibmultiprocessMacros.cmake")
5+
6+
check_required_components(LibmultiprocessGen)

0 commit comments

Comments
 (0)