mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
CMake supports the notion of installation components. Right now we have some custom code for supporting swift components. I think that for installation purposes, it would be nice to use the CMake component system. This should be a non-functional change. We should still only be generating install rules for targets and files in components we want to install, and we still use the install ninja target to install everything.
64 lines
1.7 KiB
CMake
64 lines
1.7 KiB
CMake
set(datafiles
|
|
macos4.json
|
|
ios4.json
|
|
tvos4.json
|
|
watchos4.json
|
|
overlay4.json
|
|
macos42.json
|
|
ios42.json
|
|
tvos42.json
|
|
watchos42.json
|
|
overlay42.json
|
|
)
|
|
set(SWIFTLIB_DIR
|
|
"${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib/swift")
|
|
set(output_dir "${SWIFTLIB_DIR}/migrator")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${output_dir}"
|
|
COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${output_dir}")
|
|
|
|
set(outputs)
|
|
|
|
foreach(input ${datafiles})
|
|
set(source "${CMAKE_CURRENT_SOURCE_DIR}/${input}")
|
|
set(dest "${output_dir}/${input}")
|
|
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
|
|
set(CMAKE_SYMLINK_COMMAND copy)
|
|
else()
|
|
set(CMAKE_SYMLINK_COMMAND create_symlink)
|
|
endif()
|
|
|
|
add_custom_command(OUTPUT
|
|
"${output_dir}/${input}"
|
|
DEPENDS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${input}"
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "${CMAKE_SYMLINK_COMMAND}" "${source}" "${dest}")
|
|
list(APPEND outputs "${output_dir}/${input}")
|
|
endforeach()
|
|
list(APPEND outputs "${output_dir}")
|
|
|
|
add_custom_target("symlink_migrator_data"
|
|
DEPENDS "${output_dir}" "${outputs}"
|
|
COMMENT "Symlinking migrator data to ${output_dir}")
|
|
|
|
swift_install_in_component(FILES ${datafiles}
|
|
DESTINATION "lib/swift/migrator"
|
|
COMPONENT compiler)
|
|
|
|
add_swift_host_library(swiftMigrator STATIC
|
|
APIDiffMigratorPass.cpp
|
|
EditorAdapter.cpp
|
|
FixitApplyDiagnosticConsumer.cpp
|
|
Migrator.cpp
|
|
MigrationState.cpp
|
|
OptionalTryMigratorPass.cpp
|
|
RewriteBufferEditsReceiver.cpp)
|
|
target_link_libraries(swiftMigrator PRIVATE
|
|
swiftIDE
|
|
swiftSyntax)
|
|
|
|
add_dependencies(swiftMigrator
|
|
"symlink_migrator_data")
|