build: adjust linking visibility for exported targets
Make BlocksRuntime public rather than private since the public headers reference
`Blocks.h` making the users dependent on BlocksRuntime, requiring the explicit
link. This also enables the use of the export targets to automatically setup
the include paths for users.
diff --git a/src/BlocksRuntime/CMakeLists.txt b/src/BlocksRuntime/CMakeLists.txt
index 4c8fa99..1bed202 100644
--- a/src/BlocksRuntime/CMakeLists.txt
+++ b/src/BlocksRuntime/CMakeLists.txt
@@ -12,14 +12,16 @@
endif()
endif()
-set_target_properties(BlocksRuntime PROPERTIES
- POSITION_INDEPENDENT_CODE TRUE
- INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(BlocksRuntime PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR})
if(HAVE_OBJC AND CMAKE_DL_LIBS)
target_link_libraries(BlocksRuntime PUBLIC
${CMAKE_DL_LIBS})
endif()
+set_target_properties(BlocksRuntime PROPERTIES
+ POSITION_INDEPENDENT_CODE TRUE)
+
add_library(BlocksRuntime::BlocksRuntime ALIAS BlocksRuntime)
install(FILES Block.h
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c401758..c88b430 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -95,14 +95,13 @@
set_target_properties(dispatch PROPERTIES
POSITION_INDEPENDENT_CODE YES)
-target_include_directories(dispatch PRIVATE
+target_include_directories(dispatch PUBLIC
${PROJECT_BINARY_DIR}
${PROJECT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR})
+target_include_directories(dispatch PRIVATE
${PROJECT_SOURCE_DIR}/private)
-target_include_directories(dispatch SYSTEM BEFORE PRIVATE
- "${BlocksRuntime_INCLUDE_DIR}")
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
target_compile_definitions(dispatch PRIVATE
@@ -137,7 +136,8 @@
target_link_libraries(dispatch PRIVATE RT::rt)
endif()
target_link_libraries(dispatch PRIVATE
- Threads::Threads
+ Threads::Threads)
+target_link_libraries(dispatch PUBLIC
BlocksRuntime::BlocksRuntime)
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
target_link_libraries(dispatch PRIVATE