mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
We are no longer using these Python files to generate anything in SwiftSyntax. We can just remove them and instead commit the generated `.def` files.
147 lines
5.3 KiB
CMake
147 lines
5.3 KiB
CMake
# In the absence of fine grained tablegen dependencies we need to ensure that
|
|
# Swift's libraries all build after the LLVM & Clang tablegen-generated headers
|
|
# are generated. When building out-of-tree (as with build-script) LLVM & Clang's
|
|
# CMake configuration files create these targets as dummies so we can safely
|
|
# depend on them directly here.
|
|
# See https://github.com/apple/swift/issues/48583.
|
|
#
|
|
# LLVM_COMMON_DEPENDS is a construct from the LLVM build system. It is a special
|
|
# purpose variable that provides common dependencies for all libraries, and
|
|
# executables generated when it is set. CMake's scoping rules enforce that these
|
|
# new dependencies will only be added to targets created under Swift's lib
|
|
# directory.
|
|
list(APPEND LLVM_COMMON_DEPENDS intrinsics_gen clang-tablegen-targets)
|
|
|
|
# Set up for linking against swift-syntax.
|
|
if (SWIFT_SWIFT_PARSER)
|
|
# Set up linking against the swift-syntax modules.
|
|
# Link against the swift-syntax modules.
|
|
set(SWIFT_SYNTAX_MODULES
|
|
SwiftBasicFormat
|
|
SwiftParser
|
|
SwiftParserDiagnostics
|
|
SwiftDiagnostics
|
|
SwiftSyntax
|
|
SwiftOperators
|
|
SwiftSyntaxBuilder
|
|
SwiftSyntaxMacros
|
|
SwiftSyntaxMacroExpansion
|
|
SwiftCompilerPluginMessageHandling
|
|
)
|
|
|
|
# Compute the list of SwiftSyntax targets that we will link against.
|
|
list(TRANSFORM SWIFT_SYNTAX_MODULES PREPEND "SwiftSyntax::"
|
|
OUTPUT_VARIABLE SWIFT_SYNTAX_TARGETS)
|
|
|
|
set(SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR
|
|
"${SWIFT_PATH_TO_EARLYSWIFTSYNTAX_BUILD_DIR}/lib/swift/host")
|
|
set(SWIFT_HOST_LIBRARIES_DEST_DIR
|
|
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/swift/host")
|
|
|
|
# Determine the SwiftSyntax shared library files that were built as
|
|
# part of earlyswiftsyntax.
|
|
list(TRANSFORM SWIFT_SYNTAX_MODULES PREPEND ${CMAKE_SHARED_LIBRARY_PREFIX}
|
|
OUTPUT_VARIABLE SWIFT_SYNTAX_SHARED_LIBRARIES)
|
|
list(TRANSFORM SWIFT_SYNTAX_SHARED_LIBRARIES APPEND
|
|
${CMAKE_SHARED_LIBRARY_SUFFIX}
|
|
OUTPUT_VARIABLE SWIFT_SYNTAX_SHARED_LIBRARIES)
|
|
|
|
# Interface library to collect swiftinterfaces and swiftmodules from
|
|
# SwiftSyntax
|
|
add_library(swiftSyntaxLibraries INTERFACE)
|
|
|
|
# Copy over all of the shared libraries from earlyswiftsyntax so they can
|
|
# be found via RPATH.
|
|
foreach (sharedlib ${SWIFT_SYNTAX_SHARED_LIBRARIES})
|
|
add_custom_command(
|
|
OUTPUT "${SWIFT_HOST_LIBRARIES_DEST_DIR}/${sharedlib}"
|
|
DEPENDS "${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR}/${sharedlib}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR}/${sharedlib} ${SWIFT_HOST_LIBRARIES_DEST_DIR}/${sharedlib}
|
|
)
|
|
|
|
add_custom_target(copy_swiftSyntaxLibrary_${sharedlib}
|
|
DEPENDS "${SWIFT_HOST_LIBRARIES_DEST_DIR}/${sharedlib}"
|
|
COMMENT "Copying ${sharedlib}"
|
|
)
|
|
|
|
add_dependencies(swiftSyntaxLibraries copy_swiftSyntaxLibrary_${sharedlib})
|
|
endforeach()
|
|
|
|
# Copy all of the Swift modules from earlyswiftsyntax so they can be found
|
|
# in the same relative place within the build directory as in the final
|
|
# toolchain.
|
|
list(TRANSFORM SWIFT_SYNTAX_MODULES APPEND ".swiftmodule"
|
|
OUTPUT_VARIABLE SWIFT_SYNTAX_MODULE_DIRS)
|
|
|
|
foreach(module_dir ${SWIFT_SYNTAX_MODULE_DIRS})
|
|
# Find all of the source module files.
|
|
file(GLOB module_files
|
|
"${SWIFT_SYNTAX_LIBRARIES_SOURCE_DIR}/${module_dir}/*.swiftinterface")
|
|
|
|
# Determine the destination module files.
|
|
set(dest_module_files)
|
|
foreach(full_module_file ${module_files})
|
|
get_filename_component(module_file ${full_module_file} NAME)
|
|
list(APPEND dest_module_files
|
|
"${SWIFT_HOST_LIBRARIES_DEST_DIR}/${module_dir}/${module_file}")
|
|
endforeach()
|
|
|
|
add_custom_command(
|
|
OUTPUT ${dest_module_files}
|
|
DEPENDS ${module_files}
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${SWIFT_HOST_LIBRARIES_DEST_DIR}/${module_dir}
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${module_files} ${SWIFT_HOST_LIBRARIES_DEST_DIR}/${module_dir}/
|
|
)
|
|
|
|
add_custom_target(copy_swiftSyntaxModule_${module_dir}
|
|
DEPENDS ${dest_module_files}
|
|
COMMENT "Copying ${module_dir}"
|
|
)
|
|
|
|
add_dependencies(swiftSyntaxLibraries copy_swiftSyntaxModule_${module_dir})
|
|
endforeach()
|
|
|
|
# Add copied SwiftSyntax libraries to global dependencies.
|
|
list(APPEND LLVM_COMMON_DEPENDS swiftSyntaxLibraries)
|
|
endif()
|
|
|
|
add_subdirectory(APIDigester)
|
|
add_subdirectory(AST)
|
|
add_subdirectory(ASTGen)
|
|
add_subdirectory(ASTSectionImporter)
|
|
add_subdirectory(Basic)
|
|
add_subdirectory(ConstExtract)
|
|
add_subdirectory(ClangImporter)
|
|
add_subdirectory(Demangling)
|
|
add_subdirectory(DependencyScan)
|
|
add_subdirectory(Driver)
|
|
add_subdirectory(DriverTool)
|
|
add_subdirectory(Frontend)
|
|
add_subdirectory(FrontendTool)
|
|
add_subdirectory(Index)
|
|
add_subdirectory(IDE)
|
|
add_subdirectory(IDETool)
|
|
add_subdirectory(Immediate)
|
|
add_subdirectory(IRGen)
|
|
add_subdirectory(LLVMPasses)
|
|
add_subdirectory(Localization)
|
|
add_subdirectory(Macros)
|
|
add_subdirectory(Markup)
|
|
add_subdirectory(Migrator)
|
|
add_subdirectory(Option)
|
|
add_subdirectory(Parse)
|
|
add_subdirectory(PrintAsClang)
|
|
add_subdirectory(Refactoring)
|
|
add_subdirectory(RemoteAST)
|
|
add_subdirectory(Sema)
|
|
add_subdirectory(Serialization)
|
|
add_subdirectory(SwiftDemangle)
|
|
add_subdirectory(SwiftRemoteInspection)
|
|
add_subdirectory(SwiftRemoteMirror)
|
|
add_subdirectory(SIL)
|
|
add_subdirectory(SILGen)
|
|
add_subdirectory(SILOptimizer)
|
|
add_subdirectory(StaticMirror)
|
|
add_subdirectory(SymbolGraphGen)
|
|
add_subdirectory(Threading)
|