Skip to content

Commit e0517b6

Browse files
committed
dispatch: attempt to use a VFS overlay
Use a VFS overlay to avoid polluting the source tree.
1 parent 4fa1a30 commit e0517b6

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,3 @@ config
2929
configure
3030
libtool
3131
.dirstamp
32-
/dispatch/module.modulemap

dispatch/CMakeLists.txt

+9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11

2+
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
3+
set(DISPATCH_MODULE_MAP ${PROJECT_SOURCE_DIR}/dispatch/darwin/module.modulemap)
4+
else()
5+
set(DISPATCH_MODULE_MAP ${PROJECT_SOURCE_DIR}/dispatch/generic/module.modulemap)
6+
endif()
7+
configure_file(dispatch-vfs.yaml.in
8+
${CMAKE_BINARY_DIR}/dispatch-vfs-overlay.yaml
9+
@ONLY)
10+
211
install(FILES
312
base.h
413
block.h

dispatch/dispatch-vfs.yaml.in

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
version: 0
3+
case-sensitive: false
4+
use-external-names: false
5+
roots:
6+
- name: "@CMAKE_CURRENT_SOURCE_DIR@"
7+
type: directory
8+
contents:
9+
- name: module.modulemap
10+
type: file
11+
external-contents: "@DISPATCH_MODULE_MAP@"

src/swift/CMakeLists.txt

+2-14
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,6 @@ target_include_directories(DispatchStubs PRIVATE
1818
set_target_properties(DispatchStubs PROPERTIES
1919
POSITION_INDEPENDENT_CODE YES)
2020

21-
22-
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
23-
add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/dispatch/module.modulemap
24-
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/dispatch/darwin/module.modulemap ${PROJECT_SOURCE_DIR}/dispatch/module.modulemap)
25-
else()
26-
add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/dispatch/module.modulemap
27-
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/dispatch/generic/module.modulemap ${PROJECT_SOURCE_DIR}/dispatch/module.modulemap)
28-
endif()
29-
add_custom_target(module-map ALL
30-
DEPENDS ${PROJECT_SOURCE_DIR}/dispatch/module.modulemap)
31-
32-
3321
add_library(swiftDispatch
3422
Block.swift
3523
Data.swift
@@ -44,7 +32,8 @@ target_compile_options(swiftDispatch PRIVATE
4432
"SHELL:-Xcc -fblocks"
4533
"SHELL:-Xcc -fmodule-map-file=${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
4634
"SHELL:-Xcc -I${PROJECT_SOURCE_DIR}"
47-
"SHELL:-Xcc -I${PROJECT_SOURCE_DIR}/src/swift/shims")
35+
"SHELL:-Xcc -I${PROJECT_SOURCE_DIR}/src/swift/shims"
36+
"SHELL:-vfsoverlay ${CMAKE_BINARY_DIR}/dispatch-vfs-overlay.yaml")
4837
set_target_properties(swiftDispatch PROPERTIES
4938
Swift_MODULE_NAME Dispatch
5039
Swift_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/swift
@@ -54,7 +43,6 @@ target_link_libraries(swiftDispatch PRIVATE
5443
BlocksRuntime::BlocksRuntime)
5544
target_link_libraries(swiftDispatch PUBLIC
5645
dispatch)
57-
add_dependencies(swiftDispatch module-map)
5846

5947
get_swift_host_arch(swift_arch)
6048
install(FILES

0 commit comments

Comments
 (0)