Skip to content

Commit 4a890d0

Browse files
committed
build: honour BUILD_SHARED_LIBS
This is needed for proper shared linkage to the BlocksRuntime (e.g. when building SourceKit). We now build BlocksRuntime shared or static as requested.
1 parent 6162a1d commit 4a890d0

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

CMakeLists.txt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,22 @@ endif()
132132

133133
option(INSTALL_PRIVATE_HEADERS "installs private headers in the same location as the public ones" OFF)
134134

135-
find_package(BlocksRuntime QUIET)
136-
if(NOT BlocksRuntime_FOUND)
135+
if(NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
137136
set(BlocksRuntime_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/src/BlocksRuntime)
138137

138+
# NOTE(compnerd) use the `BUILD_SHARED_LIBS` variable to determine what type
139+
# of library to build. If it is true, we will generate shared libraries,
140+
# otherwise we will generate static libraries.
139141
add_library(BlocksRuntime
140-
STATIC
141-
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/data.c
142-
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/runtime.c)
142+
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/data.c
143+
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/runtime.c)
143144
set_target_properties(BlocksRuntime
144145
PROPERTIES
145146
POSITION_INDEPENDENT_CODE TRUE)
146147
if(HAVE_OBJC AND CMAKE_DL_LIBS)
147-
set_target_properties(BlocksRuntime
148-
PROPERTIES
149-
INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS})
148+
target_link_libraries(BlocksRuntime
149+
PUBLIC
150+
${CMAKE_DL_LIBS})
150151
endif()
151152

152153
add_library(BlocksRuntime::BlocksRuntime ALIAS BlocksRuntime)
@@ -161,6 +162,10 @@ if(NOT BlocksRuntime_FOUND)
161162
DESTINATION
162163
"${INSTALL_BLOCK_HEADERS_DIR}")
163164
endif()
165+
install(TARGETS
166+
BlocksRuntime
167+
DESTINATION
168+
${INSTALL_TARGET_DIR})
164169
endif()
165170

166171
check_symbol_exists(__GNU_LIBRARY__ "features.h" _GNU_SOURCE)

dispatch/generic/module.modulemap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Dispatch {
22
requires blocks
33
export *
44
link "dispatch"
5+
link "BlocksRuntime"
56
}
67

78
module DispatchIntrospection [system] [extern_c] {

0 commit comments

Comments
 (0)