Skip to content

Commit 2a539d6

Browse files
authored
Merge pull request swiftlang#324 from compnerd/command-target
build: ensure that dependencies are tracked properly
2 parents e245cbe + 1db5a9a commit 2a539d6

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

CMakeLists.txt

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -247,20 +247,26 @@ if(leaks_EXECUTABLE)
247247
endif()
248248

249249
if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
250-
add_custom_target(module-map-symlinks
251-
ALL
252-
COMMAND
253-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/dispatch/darwin/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
254-
COMMAND
255-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/private/darwin/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
250+
add_custom_command(OUTPUT
251+
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
252+
"${CMAKE_SOURCE_DIR}/private/module.modulemap"
253+
COMMAND
254+
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/dispatch/darwin/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
255+
COMMAND
256+
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/private/darwin/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
256257
else()
257-
add_custom_target(module-map-symlinks
258-
ALL
259-
COMMAND
260-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/dispatch/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
261-
COMMAND
262-
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/private/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
258+
add_custom_command(OUTPUT
259+
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
260+
"${CMAKE_SOURCE_DIR}/private/module.modulemap"
261+
COMMAND
262+
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/dispatch/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
263+
COMMAND
264+
${CMAKE_COMMAND} -E create_symlink "${CMAKE_SOURCE_DIR}/private/generic/module.modulemap" "${CMAKE_SOURCE_DIR}/private/module.modulemap")
263265
endif()
266+
add_custom_target(module-map-symlinks
267+
DEPENDS
268+
"${CMAKE_SOURCE_DIR}/dispatch/module.modulemap"
269+
"${CMAKE_SOURCE_DIR}/private/module.modulemap")
264270
configure_file("${CMAKE_SOURCE_DIR}/cmake/config.h.in"
265271
"${CMAKE_BINARY_DIR}/config/config_ac.h")
266272
add_definitions(-DHAVE_CONFIG_H)

cmake/modules/SwiftSupport.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ include(CMakeParseArguments)
44
function(add_swift_library library)
55
set(options)
66
set(single_value_options MODULE_NAME;MODULE_LINK_NAME;MODULE_PATH;MODULE_CACHE_PATH;OUTPUT;TARGET)
7-
set(multiple_value_options SOURCES;SWIFT_FLAGS;CFLAGS)
7+
set(multiple_value_options SOURCES;SWIFT_FLAGS;CFLAGS;DEPENDS)
88

99
cmake_parse_arguments(ASL "${options}" "${single_value_options}" "${multiple_value_options}" ${ARGN})
1010

@@ -61,6 +61,7 @@ function(add_swift_library library)
6161
DEPENDS
6262
${ASL_SOURCES}
6363
${CMAKE_SWIFT_COMPILER}
64+
${ASL_DEPENDS}
6465
COMMAND
6566
${CMAKE_COMMAND} -E make_directory ${module_directory}
6667
COMMAND

src/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ if(ENABLE_SWIFT)
100100
-fmodule-map-file=${CMAKE_SOURCE_DIR}/dispatch/module.modulemap
101101
SWIFT_FLAGS
102102
-I ${CMAKE_SOURCE_DIR}
103-
${swift_optimization_flags})
104-
add_dependencies(swiftDispatch
105-
module-map-symlinks)
103+
${swift_optimization_flags}
104+
DEPENDS
105+
${CMAKE_SOURCE_DIR}/dispatch/module.modulemap)
106106
target_sources(dispatch
107107
PRIVATE
108108
swift/DispatchStubs.cc

0 commit comments

Comments
 (0)