Skip to content

Commit 39dc989

Browse files
committed
build: install cmake config
This makes it easier to consume dispatch via package managers such as vcpkg or Linux system ones
1 parent 8b61977 commit 39dc989

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

cmake/modules/CMakeLists.txt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11

22
set(DISPATCH_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/dispatchExports.cmake)
33
configure_file(dispatchConfig.cmake.in
4-
${CMAKE_CURRENT_BINARY_DIR}/dispatchConfig.cmake)
4+
${CMAKE_CURRENT_BINARY_DIR}/dispatchConfig.cmake
5+
@ONLY)
6+
7+
if(LibRT_FOUND)
8+
file(COPY FindLibRT.cmake DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
9+
endif()
510

611
get_property(DISPATCH_EXPORTS GLOBAL PROPERTY DISPATCH_EXPORTS)
712
export(TARGETS ${DISPATCH_EXPORTS} FILE ${DISPATCH_EXPORTS_FILE})
13+
14+
if(NOT ENABLE_SWIFT)
15+
install(EXPORT dispatchExports DESTINATION ${INSTALL_TARGET_DIR}/cmake/dispatch)
16+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dispatchConfig.cmake
17+
DESTINATION ${INSTALL_TARGET_DIR}/cmake/dispatch)
18+
19+
if(LibRT_FOUND)
20+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindLibRT.cmake
21+
DESTINATION ${INSTALL_TARGET_DIR}/cmake/dispatch)
22+
endif()
23+
endif()

cmake/modules/dispatchConfig.cmake.in

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
include(CMakeFindDependencyMacro)
2+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
3+
4+
if(@LibRT_FOUND@)
5+
find_dependency(LibRT)
6+
endif()
17

28
set(DISPATCH_HAS_SWIFT_SDK_OVERLAY @ENABLE_SWIFT@)
39

410
if(NOT TARGET dispatch)
5-
include(@DISPATCH_EXPORTS_FILE@)
11+
include("${CMAKE_CURRENT_LIST_DIR}/dispatchExports.cmake")
612
endif()
713

src/BlocksRuntime/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ if(WIN32)
1313
endif()
1414

1515
target_include_directories(BlocksRuntime PUBLIC
16-
${CMAKE_CURRENT_SOURCE_DIR})
16+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
17+
$<INSTALL_INTERFACE:${INSTALL_BLOCK_HEADERS_DIR}>)
1718
if(HAVE_OBJC AND CMAKE_DL_LIBS)
1819
target_link_libraries(BlocksRuntime PUBLIC
1920
${CMAKE_DL_LIBS})

src/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,11 @@ if(HAVE_OBJC)
8989
endif()
9090

9191
target_include_directories(dispatch PUBLIC
92-
${PROJECT_BINARY_DIR}
93-
${PROJECT_SOURCE_DIR}
94-
${CMAKE_CURRENT_SOURCE_DIR}
95-
${CMAKE_CURRENT_BINARY_DIR})
92+
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
93+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
94+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
95+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
96+
$<INSTALL_INTERFACE:${INSTALL_DISPATCH_HEADERS_DIR}/..>)
9697
target_include_directories(dispatch PRIVATE
9798
${PROJECT_SOURCE_DIR}/private)
9899

0 commit comments

Comments
 (0)