Skip to content

Commit 7a257d0

Browse files
committed
build: de-GYB_SOURCES the host tools
Use a newly introduced `swift_gyb_target_sources` to gyb and use the generated sources when building. Let CMake figure out when to run the command, let it invoke the command properly, and indicate that the sources being added to the target are generated.
1 parent ea142db commit 7a257d0

File tree

4 files changed

+28
-18
lines changed

4 files changed

+28
-18
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,27 @@ include(SwiftXcodeSupport)
44
include(SwiftWindowsSupport)
55
include(SwiftAndroidSupport)
66

7+
function(_swift_gyb_target_sources target scope)
8+
foreach(source ${ARGN})
9+
get_filename_component(generated ${source} NAME_WLE)
10+
get_filename_component(absolute ${source} REALPATH)
11+
12+
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${generated}
13+
COMMAND
14+
$<TARGET_FILE:Python2::Interpreter> ${SWIFT_SOURCE_DIR}/utils/gyb -D CMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P} ${SWIFT_GYB_FLAGS} -o ${CMAKE_CURRENT_BINARY_DIR}/${generated}.tmp ${absolute}
15+
COMMAND
16+
${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/${generated}.tmp ${CMAKE_CURRENT_BINARY_DIR}/${generated}
17+
COMMAND
18+
${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/${generated}.tmp
19+
DEPENDS
20+
${absolute})
21+
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${generated} PROPERTIES
22+
GENERATED TRUE)
23+
target_sources(${target} ${scope}
24+
${CMAKE_CURRENT_BINARY_DIR}/${generated})
25+
endforeach()
26+
endfunction()
27+
728
# SWIFTLIB_DIR is the directory in the build tree where Swift resource files
829
# should be placed. Note that $CMAKE_CFG_INTDIR expands to "." for
930
# single-configuration builds.
@@ -532,7 +553,6 @@ function(_add_swift_host_library_single target)
532553
STATIC)
533554
set(single_parameter_options)
534555
set(multiple_parameter_options
535-
GYB_SOURCES
536556
LLVM_LINK_COMPONENTS)
537557

538558
cmake_parse_arguments(ASHLS
@@ -582,14 +602,6 @@ function(_add_swift_host_library_single target)
582602
set(libkind STATIC)
583603
endif()
584604

585-
if(ASHLS_GYB_SOURCES)
586-
handle_gyb_sources(
587-
gyb_dependency_targets
588-
ASHLS_GYB_SOURCES
589-
"${SWIFT_HOST_VARIANT_ARCH}")
590-
set(ASHLS_SOURCES ${ASHLS_SOURCES} ${ASHLS_GYB_SOURCES})
591-
endif()
592-
593605
add_library("${target}" ${libkind} ${ASHLS_SOURCES})
594606
_set_target_prefix_and_suffix("${target}" "${libkind}" "${SWIFT_HOST_VARIANT_SDK}")
595607

lib/Basic/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ add_swift_host_library(swiftBasic STATIC
7878
# Platform-agnostic fallback TaskQueue implementation
7979
Default/TaskQueue.inc
8080

81-
GYB_SOURCES
82-
UnicodeExtendedGraphemeClusters.cpp.gyb
83-
8481
LLVM_LINK_COMPONENTS support)
82+
_swift_gyb_target_sources(swiftBasic PRIVATE
83+
UnicodeExtendedGraphemeClusters.cpp.gyb)
84+
8585
target_include_directories(swiftBasic PRIVATE
8686
${UUID_INCLUDE})
8787

lib/Parse/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ add_swift_host_library(swiftParse STATIC
2222
PersistentParserState.cpp
2323
Scope.cpp
2424
SyntaxParsingCache.cpp
25-
SyntaxParsingContext.cpp
26-
27-
GYB_SOURCES
25+
SyntaxParsingContext.cpp)
26+
_swift_gyb_target_sources(swiftParse PRIVATE
2827
ParsedSyntaxBuilders.cpp.gyb
2928
ParsedSyntaxNodes.cpp.gyb
3029
ParsedSyntaxRecorder.cpp.gyb)

lib/Syntax/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ add_swift_host_library(swiftSyntax STATIC
88
RawSyntax.cpp
99
Syntax.cpp
1010
SyntaxData.cpp
11-
UnknownSyntax.cpp
12-
13-
GYB_SOURCES
11+
UnknownSyntax.cpp)
12+
_swift_gyb_target_sources(swiftSyntax PRIVATE
1413
SyntaxNodes.cpp.gyb
1514
SyntaxBuilders.cpp.gyb
1615
SyntaxKind.cpp.gyb

0 commit comments

Comments
 (0)