Compilation extremely slow since macros adoption

Yes, it can be copied over:

name="SwiftSyntaxMacros"
platform="macos"

xcodebuild archive -scheme ${name} -quiet -configuration Release -destination 'generic/platform=macOS' -archivePath /private/tmp/swift-syntax/${name}-${platform}.xcarchive -derivedDataPath /private/tmp/swift-syntax/${name}-${platform}.derived SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO

mkdir -p /private/tmp/swift-syntax/${name}-${platform}.xcarchive/Products/usr/local/lib/${name}.framework/Modules

find /private/tmp/swift-syntax/${name}-${platform}.derived/Build -type d -name ${name}.swiftmodule | xargs -I {} cp -r {} /private/tmp/swift-syntax/${name}-${platform}.xcarchive/Products/usr/local/lib/${name}.framework/Modules

xcodebuild -create-xcframework -framework /private/tmp/swift-syntax/${name}-macos.xcarchive/Products/usr/local/lib/${name}.framework -output /private/tmp/${name}.xcframework

Creates:

/private/tmp/SwiftSyntaxMacros.xcframework
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Resources
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Versions
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Versions/A
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Versions/A/Resources
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Versions/A/Resources/Info.plist
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Versions/A/SwiftSyntaxMacros
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Versions/Current
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/SwiftSyntaxMacros
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/x86_64-apple-macos.private.swiftinterface
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/arm64-apple-macos.swiftinterface
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/arm64-apple-macos.swiftdoc
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/x86_64-apple-macos.swiftdoc
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/arm64-apple-macos.abi.json
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/x86_64-apple-macos.abi.json
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/x86_64-apple-macos.swiftinterface
/private/tmp/SwiftSyntaxMacros.xcframework/macos-arm64_x86_64/SwiftSyntaxMacros.framework/Modules/SwiftSyntaxMacros.swiftmodule/arm64-apple-macos.private.swiftinterface
/private/tmp/SwiftSyntaxMacros.xcframework/Info.plist

As for correct dynamic linking in SPM, this is not supported: Inter dynamic library dependencies · Issue #7327 · apple/swift-package-manager · GitHub

SwiftSyntax does have experimental Bazel build rules; and they do work but there is a limitation that they can only generate xcframeworks for macOS as Linux is statically linked as well: How to build shared libraries using rule_swift (.so)? · Issue #1141 · bazelbuild/rules_swift · GitHub

2 Likes