Skip to content

Commit a5167e2

Browse files
authored
Merge pull request #785 from compnerd/references-available-upon-request
build: slightly improve the build for libdispatch
2 parents fa1b4ae + ed909bb commit a5167e2

File tree

5 files changed

+27
-33
lines changed

5 files changed

+27
-33
lines changed

.gitignore

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

CMakeLists.txt

+4-18
Original file line numberDiff line numberDiff line change
@@ -261,26 +261,12 @@ endif()
261261

262262

263263
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
264-
add_custom_command(OUTPUT
265-
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
266-
"${PROJECT_SOURCE_DIR}/private/module.modulemap"
267-
COMMAND
268-
${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/dispatch/darwin/module.modulemap" "${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
269-
COMMAND
270-
${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/private/darwin/module.modulemap" "${PROJECT_SOURCE_DIR}/private/module.modulemap")
264+
add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-fmodule-map-file=${PROJECT_SOURCE_DIR}/dispatch/darwin/module.modulemap>
265+
$<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-fmodule-map-file=${PROJECT_SOURCE_DIR}/private/darwin/module.modulemap>)
271266
else()
272-
add_custom_command(OUTPUT
273-
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
274-
"${PROJECT_SOURCE_DIR}/private/module.modulemap"
275-
COMMAND
276-
${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/dispatch/generic/module.modulemap" "${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
277-
COMMAND
278-
${CMAKE_COMMAND} -E copy_if_different "${PROJECT_SOURCE_DIR}/private/generic/module.modulemap" "${PROJECT_SOURCE_DIR}/private/module.modulemap")
267+
add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-fmodule-map-file=${PROJECT_SOURCE_DIR}/dispatch/generic/module.modulemap>
268+
$<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-fmodule-map-file=${PROJECT_SOURCE_DIR}/private/generic/module.modulemap>)
279269
endif()
280-
add_custom_target(module-maps ALL
281-
DEPENDS
282-
"${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
283-
"${PROJECT_SOURCE_DIR}/private/module.modulemap")
284270

285271
configure_file("${PROJECT_SOURCE_DIR}/cmake/config.h.in"
286272
"${PROJECT_BINARY_DIR}/config/config_ac.h")

dispatch/CMakeLists.txt

+10-12
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
@@ -16,19 +25,8 @@ install(FILES
1625
DESTINATION
1726
"${INSTALL_DISPATCH_HEADERS_DIR}")
1827
if(ENABLE_SWIFT)
19-
set(base_dir "${CMAKE_CURRENT_SOURCE_DIR}")
20-
if(NOT BUILD_SHARED_LIBS)
21-
set(base_dir "${CMAKE_CURRENT_SOURCE_DIR}/generic_static")
22-
endif()
23-
24-
get_filename_component(
25-
MODULE_MAP
26-
module.modulemap
27-
REALPATH
28-
BASE_DIR "${base_dir}")
29-
3028
install(FILES
31-
${MODULE_MAP}
29+
${DISPATCH_MODULE_MAP}
3230
DESTINATION
3331
"${INSTALL_DISPATCH_HEADERS_DIR}")
3432
endif()

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-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ target_compile_options(swiftDispatch PRIVATE
3333
"SHELL:-Xcc -fmodule-map-file=${PROJECT_SOURCE_DIR}/dispatch/module.modulemap"
3434
"SHELL:-Xcc -I${PROJECT_SOURCE_DIR}"
3535
"SHELL:-Xcc -I${PROJECT_SOURCE_DIR}/src/swift/shims")
36+
target_compile_options(swiftDispatch PUBLIC
37+
"SHELL:-vfsoverlay ${CMAKE_BINARY_DIR}/dispatch-vfs-overlay.yaml")
3638
set_target_properties(swiftDispatch PROPERTIES
3739
Swift_MODULE_NAME Dispatch
3840
Swift_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/swift
@@ -42,7 +44,6 @@ target_link_libraries(swiftDispatch PRIVATE
4244
BlocksRuntime::BlocksRuntime)
4345
target_link_libraries(swiftDispatch PUBLIC
4446
dispatch)
45-
add_dependencies(swiftDispatch module-maps)
4647

4748
get_swift_host_arch(swift_arch)
4849
install(FILES

0 commit comments

Comments
 (0)