Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ba74b6a

Browse files
authoredAug 20, 2018
Merge pull request #382 from adierking/cmake
build: support embedding in other CMake projects
2 parents 57139c6 + cffa6f0 commit ba74b6a

File tree

4 files changed

+37
-37
lines changed

4 files changed

+37
-37
lines changed
 

‎CMakeLists.txt

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
cmake_minimum_required(VERSION 3.4.3)
33

4-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
4+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
55

66
project(dispatch
77
VERSION 1.3
@@ -134,12 +134,12 @@ option(INSTALL_PRIVATE_HEADERS "installs private headers in the same location as
134134

135135
find_package(BlocksRuntime QUIET)
136136
if(NOT BlocksRuntime_FOUND)
137-
set(BlocksRuntime_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/BlocksRuntime)
137+
set(BlocksRuntime_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/src/BlocksRuntime)
138138

139139
add_library(BlocksRuntime
140140
STATIC
141-
${CMAKE_SOURCE_DIR}/src/BlocksRuntime/data.c
142-
${CMAKE_SOURCE_DIR}/src/BlocksRuntime/runtime.c)
141+
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/data.c
142+
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/runtime.c)
143143
set_target_properties(BlocksRuntime
144144
PROPERTIES
145145
POSITION_INDEPENDENT_CODE TRUE)
@@ -152,12 +152,12 @@ if(NOT BlocksRuntime_FOUND)
152152
add_library(BlocksRuntime::BlocksRuntime ALIAS BlocksRuntime)
153153

154154
install(FILES
155-
${CMAKE_SOURCE_DIR}/src/BlocksRuntime/Block.h
155+
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/Block.h
156156
DESTINATION
157157
"${INSTALL_BLOCK_HEADERS_DIR}")
158158
if(INSTALL_PRIVATE_HEADERS)
159159
install(FILES
160-
${CMAKE_SOURCE_DIR}/src/BlocksRuntime/Block_private.h
160+
${PROJECT_SOURCE_DIR}/src/BlocksRuntime/Block_private.h
161161
DESTINATION
162162
"${INSTALL_BLOCK_HEADERS_DIR}")
163163
endif()
@@ -300,35 +300,35 @@ endif()
300300

301301
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
302302
add_custom_command(OUTPUT
303-
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
304-
"${CMAKE_SOURCE_DIR}/private/module.modulemap"
303+
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
304+
"${PROJECT_SOURCE_DIR}/private/module.modulemap"
305305
COMMAND
306-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/dispatch/darwin/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
306+
${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/dispatch/darwin/module.modulemap" "${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
307307
COMMAND
308-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/private/darwin/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
308+
${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/private/darwin/module.modulemap" "${PROJECT_SOURCE_DIR}/private/module.modulemap")
309309
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows)
310310
add_custom_command(OUTPUT
311-
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
312-
"${CMAKE_SOURCE_DIR}/private/module.modulemap"
311+
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
312+
"${PROJECT_SOURCE_DIR}/private/module.modulemap"
313313
COMMAND
314-
${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/dispatch/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
314+
${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/dispatch/generic/module.modulemap" "${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
315315
COMMAND
316-
${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/private/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
316+
${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/private/generic/module.modulemap" "${PROJECT_SOURCE_DIR}/private/module.modulemap")
317317
else()
318318
add_custom_command(OUTPUT
319-
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
320-
"${CMAKE_SOURCE_DIR}/private/module.modulemap"
319+
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
320+
"${PROJECT_SOURCE_DIR}/private/module.modulemap"
321321
COMMAND
322-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/dispatch/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
322+
${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/dispatch/generic/module.modulemap" "${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
323323
COMMAND
324-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/private/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
324+
${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/private/generic/module.modulemap" "${PROJECT_SOURCE_DIR}/private/module.modulemap")
325325
endif()
326326
add_custom_target(module-map-symlinks
327327
DEPENDS
328-
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
329-
"${CMAKE_SOURCE_DIR}/private/module.modulemap")
330-
configure_file("${CMAKE_SOURCE_DIR}/cmake/config.h.in"
331-
"${CMAKE_BINARY_DIR}/config/config_ac.h")
328+
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
329+
"${PROJECT_SOURCE_DIR}/private/module.modulemap")
330+
configure_file("${PROJECT_SOURCE_DIR}/cmake/config.h.in"
331+
"${PROJECT_BINARY_DIR}/config/config_ac.h")
332332
add_definitions(-DHAVE_CONFIG_H)
333333

334334
if(CMAKE_SYSTEM_NAME STREQUAL Windows)

‎cmake/modules/DispatchWindowsSupport.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ function(dispatch_windows_generate_sdk_vfs_overlay flags)
6464
set(UCRTVersion $ENV{UCRTVersion})
6565

6666
# TODO(compnerd) use a target to avoid re-creating this file all the time
67-
configure_file("${CMAKE_SOURCE_DIR}/utils/WindowsSDKVFSOverlay.yaml.in"
68-
"${CMAKE_BINARY_DIR}/windows-sdk-vfs-overlay.yaml"
67+
configure_file("${PROJECT_SOURCE_DIR}/utils/WindowsSDKVFSOverlay.yaml.in"
68+
"${PROJECT_BINARY_DIR}/windows-sdk-vfs-overlay.yaml"
6969
@ONLY)
7070

7171
set(${flags}
72-
-ivfsoverlay;"${CMAKE_BINARY_DIR}/windows-sdk-vfs-overlay.yaml"
72+
-ivfsoverlay;"${PROJECT_BINARY_DIR}/windows-sdk-vfs-overlay.yaml"
7373
PARENT_SCOPE)
7474
endfunction()

‎src/CMakeLists.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,13 @@ if(ENABLE_SWIFT)
105105
${CMAKE_C_COMPILER_TARGET}
106106
CFLAGS
107107
-fblocks
108-
-fmodule-map-file=${CMAKE_SOURCE_DIR}/dispatch/module.modulemap
108+
-fmodule-map-file=${PROJECT_SOURCE_DIR}/dispatch/module.modulemap
109109
SWIFT_FLAGS
110-
-I ${CMAKE_SOURCE_DIR}
110+
-I ${PROJECT_SOURCE_DIR}
111111
-I/usr/include
112112
${swift_optimization_flags}
113113
DEPENDS
114-
${CMAKE_SOURCE_DIR}/dispatch/module.modulemap)
114+
${PROJECT_SOURCE_DIR}/dispatch/module.modulemap)
115115
target_sources(dispatch
116116
PRIVATE
117117
swift/DispatchStubs.cc
@@ -132,11 +132,11 @@ if(ENABLE_DTRACE)
132132
endif()
133133
target_include_directories(dispatch
134134
PRIVATE
135-
${CMAKE_BINARY_DIR}
136-
${CMAKE_SOURCE_DIR}
135+
${PROJECT_BINARY_DIR}
136+
${PROJECT_SOURCE_DIR}
137137
${CMAKE_CURRENT_SOURCE_DIR}
138138
${CMAKE_CURRENT_BINARY_DIR}
139-
${CMAKE_SOURCE_DIR}/private)
139+
${PROJECT_SOURCE_DIR}/private)
140140
target_include_directories(dispatch
141141
SYSTEM BEFORE PRIVATE
142142
"${BlocksRuntime_INCLUDE_DIR}")
@@ -212,7 +212,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
212212
"-Xlinker -compatibility_version -Xlinker 1"
213213
"-Xlinker -current_version -Xlinker ${VERSION}"
214214
"-Xlinker -dead_strip"
215-
"-Xlinker -alias_list -Xlinker ${CMAKE_SOURCE_DIR}/xcodeconfig/libdispatch.aliases")
215+
"-Xlinker -alias_list -Xlinker ${PROJECT_SOURCE_DIR}/xcodeconfig/libdispatch.aliases")
216216
endif()
217217
dispatch_set_linker(dispatch)
218218

‎tests/CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11

22
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
33
execute_process(COMMAND
4-
"${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/private"
4+
"${CMAKE_COMMAND}" -E copy "${PROJECT_SOURCE_DIR}/private"
55
"${CMAKE_CURRENT_BINARY_DIR}/dispatch")
66
execute_process(COMMAND
77
"${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/leaks-wrapper.sh"
88
"${CMAKE_CURRENT_BINARY_DIR}/leaks-wrapper")
99
else()
1010
execute_process(COMMAND
11-
"${CMAKE_COMMAND}" -E create_symlink "${CMAKE_SOURCE_DIR}/private"
11+
"${CMAKE_COMMAND}" -E create_symlink "${PROJECT_SOURCE_DIR}/private"
1212
"${CMAKE_CURRENT_BINARY_DIR}/dispatch")
1313
execute_process(COMMAND
1414
"${CMAKE_COMMAND}" -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/leaks-wrapper.sh"
@@ -27,7 +27,7 @@ target_include_directories(bsdtests
2727
PRIVATE
2828
${CMAKE_CURRENT_BINARY_DIR}
2929
${CMAKE_CURRENT_SOURCE_DIR}
30-
${CMAKE_SOURCE_DIR})
30+
${PROJECT_SOURCE_DIR})
3131
if(BSD_OVERLAY_FOUND)
3232
target_compile_options(bsdtests
3333
PRIVATE
@@ -41,7 +41,7 @@ target_include_directories(bsdtestharness
4141
PRIVATE
4242
${CMAKE_CURRENT_BINARY_DIR}
4343
${CMAKE_CURRENT_SOURCE_DIR}
44-
${CMAKE_SOURCE_DIR})
44+
${PROJECT_SOURCE_DIR})
4545
if(BSD_OVERLAY_FOUND)
4646
target_compile_options(bsdtestharness
4747
PRIVATE
@@ -78,7 +78,7 @@ function(add_unit_test name)
7878
PRIVATE
7979
${CMAKE_CURRENT_BINARY_DIR}
8080
${CMAKE_CURRENT_SOURCE_DIR}
81-
${CMAKE_SOURCE_DIR})
81+
${PROJECT_SOURCE_DIR})
8282
if(ENABLE_SWIFT)
8383
# For testing in swift.org CI system; make deadlines lenient by default
8484
# to reduce probability of test failures due to machine load.

0 commit comments

Comments
 (0)
Please sign in to comment.