Skip to content

Commit b0b314c

Browse files
Merge pull request #525 from compnerd/bring-out-your-targets
build: add exports targets
2 parents 2accb0b + c26f435 commit b0b314c

File tree

6 files changed

+34
-8
lines changed

6 files changed

+34
-8
lines changed

CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -276,3 +276,5 @@ add_subdirectory(src)
276276
if(BUILD_TESTING)
277277
add_subdirectory(tests)
278278
endif()
279+
280+
add_subdirectory(cmake/modules)

cmake/modules/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
set(DISPATCH_EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/dispatchExports.cmake)
3+
configure_file(dispatchConfig.cmake.in
4+
${CMAKE_CURRENT_BINARY_DIR}/dispatchConfig.cmake)
5+
6+
get_property(DISPATCH_EXPORTS GLOBAL PROPERTY DISPATCH_EXPORTS)
7+
export(TARGETS ${DISPATCH_EXPORTS} FILE ${DISPATCH_EXPORTS_FILE})

cmake/modules/dispatchConfig.cmake.in

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
set(DISPATCH_HAS_SWIFT_SDK_OVERLAY @ENABLE_SWIFT@)
3+
4+
if(NOT TARGET dispatch)
5+
include(@DISPATCH_EXPORTS_FILE@)
6+
endif()
7+

src/BlocksRuntime/CMakeLists.txt

+7-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ if(CMAKE_SYSTEM_NAME STREQUAL Windows)
1212
endif()
1313
endif()
1414

15-
set_target_properties(BlocksRuntime PROPERTIES
16-
POSITION_INDEPENDENT_CODE TRUE
17-
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR})
15+
target_include_directories(BlocksRuntime PUBLIC
16+
${CMAKE_CURRENT_SOURCE_DIR})
1817
if(HAVE_OBJC AND CMAKE_DL_LIBS)
1918
target_link_libraries(BlocksRuntime PUBLIC
2019
${CMAKE_DL_LIBS})
2120
endif()
2221

22+
set_target_properties(BlocksRuntime PROPERTIES
23+
POSITION_INDEPENDENT_CODE TRUE)
24+
2325
add_library(BlocksRuntime::BlocksRuntime ALIAS BlocksRuntime)
2426

2527
install(FILES Block.h
@@ -28,7 +30,9 @@ if(INSTALL_PRIVATE_HEADERS)
2830
install(FILES Block_private.h
2931
DESTINATION ${INSTALL_BLOCK_HEADERS_DIR})
3032
endif()
33+
set_property(GLOBAL APPEND PROPERTY DISPATCH_EXPORTS BlocksRuntime)
3134
install(TARGETS BlocksRuntime
35+
EXPORT dispatchExports
3236
ARCHIVE DESTINATION ${INSTALL_TARGET_DIR}
3337
LIBRARY DESTINATION ${INSTALL_TARGET_DIR}
3438
RUNTIME DESTINATION bin)

src/CMakeLists.txt

+7-5
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,13 @@ endif()
9595
set_target_properties(dispatch PROPERTIES
9696
POSITION_INDEPENDENT_CODE YES)
9797

98-
target_include_directories(dispatch PRIVATE
98+
target_include_directories(dispatch PUBLIC
9999
${PROJECT_BINARY_DIR}
100100
${PROJECT_SOURCE_DIR}
101101
${CMAKE_CURRENT_SOURCE_DIR}
102-
${CMAKE_CURRENT_BINARY_DIR}
102+
${CMAKE_CURRENT_BINARY_DIR})
103+
target_include_directories(dispatch PRIVATE
103104
${PROJECT_SOURCE_DIR}/private)
104-
target_include_directories(dispatch SYSTEM BEFORE PRIVATE
105-
"${BlocksRuntime_INCLUDE_DIR}")
106105

107106
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
108107
target_compile_definitions(dispatch PRIVATE
@@ -137,7 +136,8 @@ if(LibRT_FOUND)
137136
target_link_libraries(dispatch PRIVATE RT::rt)
138137
endif()
139138
target_link_libraries(dispatch PRIVATE
140-
Threads::Threads
139+
Threads::Threads)
140+
target_link_libraries(dispatch PUBLIC
141141
BlocksRuntime::BlocksRuntime)
142142
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
143143
target_link_libraries(dispatch PRIVATE
@@ -159,7 +159,9 @@ if(ENABLE_SWIFT)
159159
add_subdirectory(swift)
160160
endif()
161161

162+
set_property(GLOBAL APPEND PROPERTY DISPATCH_EXPORTS dispatch)
162163
install(TARGETS dispatch
164+
EXPORT dispatchExports
163165
ARCHIVE DESTINATION ${INSTALL_TARGET_DIR}
164166
LIBRARY DESTINATION ${INSTALL_TARGET_DIR}
165167
RUNTIME DESTINATION bin)

src/swift/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,15 @@ install(FILES
4646
${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftmodule
4747
${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftdoc
4848
DESTINATION ${INSTALL_TARGET_DIR}/${swift_arch})
49+
set_property(GLOBAL APPEND PROPERTY DISPATCH_EXPORTS swiftDispatch)
4950
install(TARGETS swiftDispatch
51+
EXPORT dispatchExports
5052
ARCHIVE DESTINATION ${INSTALL_TARGET_DIR}
5153
LIBRARY DESTINATION ${INSTALL_TARGET_DIR}
5254
RUNTIME DESTINATION bin)
5355
if(NOT BUILD_SHARED_LIBS)
56+
set_property(GLOBAL APPEND PROPERTY DISPATCH_EXPORTS DispatchStubs)
5457
install(TARGETS DispatchStubs
58+
EXPORT dispatchExports
5559
DESTINATION ${INSTALL_TARGET_DIR})
5660
endif()

0 commit comments

Comments
 (0)