# Generate and install swift interface files # TODO: CMake should learn how to model library evolution and generate this # stuff automatically. # Generate a swift interface file for the target if library evolution is enabled function(emit_swift_interface target) # Generate the target-variant binary swift module when performing zippered # build if(SwiftOverlay_VARIANT_MODULE_TRIPLE) set(variant_module_tmp_dir "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftOverlay_VARIANT_MODULE_TRIPLE}") file(MAKE_DIRECTORY "${variant_module_tmp_dir}") target_compile_options(${target} PRIVATE "$<$:SHELL:-emit-variant-module-path ${variant_module_tmp_dir}/${target}.swiftmodule>") endif() # Generate textual swift interfaces is library-evolution is enabled if(SwiftOverlay_ENABLE_LIBRARY_EVOLUTION) target_compile_options(${target} PRIVATE $<$:-emit-module-interface-path$${CMAKE_CURRENT_BINARY_DIR}/$.swiftinterface> $<$:-emit-private-module-interface-path$${CMAKE_CURRENT_BINARY_DIR}/$.private.swiftinterface> $<$:-library-level$api> $<$:-Xfrontend$-require-explicit-availability=ignore>) # Emit catalyst swiftmodules and interfaces if(SwiftOverlay_VARIANT_MODULE_TRIPLE) target_compile_options(${target} PRIVATE "$<$:SHELL:-emit-variant-module-interface-path ${variant_module_tmp_dir}/${target}.swiftinterface>" "$<$:SHELL:-emit-variant-private-module-interface-path ${variant_module_tmp_dir}/${target}.private.swiftinterface>") endif() endif() endfunction() # Install the generated swift interface file for the target if library evolution # is enabled. function(install_swift_interface target) # Install binary swift modules install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$.swiftmodule" RENAME "${SwiftOverlay_MODULE_TRIPLE}.swiftmodule" DESTINATION "${SwiftOverlay_INSTALL_SWIFTMODULEDIR}/$.swiftmodule") if(SwiftOverlay_VARIANT_MODULE_TRIPLE) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftOverlay_VARIANT_MODULE_TRIPLE}/${target}.swiftmodule" RENAME "${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftmodule" DESTINATION "${SwiftOverlay_INSTALL_SWIFTMODULEDIR}/$.swiftmodule") endif() # Install Swift interfaces if library-evolution is enabled if(SwiftOverlay_ENABLE_LIBRARY_EVOLUTION) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$.swiftinterface" RENAME "${SwiftOverlay_MODULE_TRIPLE}.swiftinterface" DESTINATION "${SwiftOverlay_INSTALL_SWIFTMODULEDIR}/$.swiftmodule") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$.private.swiftinterface" RENAME "${SwiftOverlay_MODULE_TRIPLE}.private.swiftinterface" DESTINATION "${SwiftOverlay_INSTALL_SWIFTMODULEDIR}/$.swiftmodule") # Install catalyst interface files if(SwiftOverlay_VARIANT_MODULE_TRIPLE) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftOverlay_VARIANT_MODULE_TRIPLE}/${target}.swiftinterface" RENAME "${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftinterface" DESTINATION "${SwiftOverlay_INSTALL_SWIFTMODULEDIR}/$.swiftmodule") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}-${SwiftOverlay_VARIANT_MODULE_TRIPLE}/${target}.private.swiftinterface" RENAME "${SwiftOverlay_VARIANT_MODULE_TRIPLE}.private.swiftinterface" DESTINATION "${SwiftOverlay_INSTALL_SWIFTMODULEDIR}/$.swiftmodule") endif() endif() endfunction()