I'm trying to build a project following the XCFramework + TBD suggestion, but the linker refuses to work.
% swift build
Building for debugging...
error: link command failed with exit code 1 (use -v to see invocation)
ld: unknown file type in '/Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug/StoreFoundation.framework/StoreFoundation.tbd'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: fatalError
[6/12] Linking libMASDownloadMetadata.dylib
% "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -dylib -arch x86_64 -platform_version macos 10.13.0 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk -o /Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug/libMASDownloadMetadata.dylib -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/usr/lib/swift -L/Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib /Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug/MASDownloadMetadataLib.build/MASDownloadMetadata.m.o -rpath /usr/lib/swift -framework StoreFoundation -install_name @rpath/libMASDownloadMetadata.dylib -rpath @loader_path -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a -F/Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -v
@(#)PROGRAM:ld PROJECT:ld-1053.12
BUILD 15:44:24 Feb 3 2024
configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
will use ld-classic for: armv6 armv7 armv7s arm64_32 i386 armv6m armv7k armv7m armv7em
LTO support using: LLVM version 15.0.0 (static support for 29, runtime is 29)
TAPI support using: Apple TAPI version 15.0.0 (tapi-1500.3.2.2)
Library search paths:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/usr/lib/swift
/Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/usr/lib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/usr/lib/swift
Framework search paths:
/Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/System/Library/Frameworks
ld: unknown file type in '/Users/user/Documents/MyTool/.build/x86_64-apple-macosx/debug/StoreFoundation.framework/StoreFoundation.tbd'
The structure of the XCFramework seems to be okay and so does the TBD file.
% tree StoreFoundation.xcframework
StoreFoundation.xcframework
├── Info.plist
└── macos-arm64_x86_64
└── StoreFoundation.framework
├── Headers
│ └── StoreFoundation
│ ├── ASDNotificationCenterDialogObserver-Protocol.h
│ ├── ...
│ └── StoreFoundation.h
├── Info.plist
├── Modules
│ └── module.modulemap
└── StoreFoundation.tbd
6 directories, 99 files
--- !tapi-tbd
tbd-version: 4
targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst, armv7-ios, armv7s-ios, arm64-ios, arm64e-ios ]
install-name: '/System/Library/PrivateFrameworks/StoreFoundation.framework/Versions/A/StoreFoundation'
exports:
- targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst, armv7-ios, armv7s-ios, arm64-ios, arm64e-ios ]
symbols: [ OBJC_IVAR_$_CKDockMessaging._cachedIconPaths,
...,
_markMainQueue ]
objc-classes: [ CKBook,
...,
SSRequest ]
objc-ivars: [ CKBook._author,
...,
SSRequest._state ]
This is the Package.swift for the project:
// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "MASDownloadMetadata",
products: [
.executable(name: "masdownloadmetadata", targets: ["MASDownloadMetadataBin"]),
.library(name: "MASDownloadMetadata", type: .dynamic, targets: ["MASDownloadMetadataLib"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0"),
],
targets: [
.executableTarget(
name: "MASDownloadMetadataBin",
dependencies: [
.product(name: "ArgumentParser", package: "swift-argument-parser"),
.target(name: "MASDownloadMetadataLib"),
]
),
.target(
name: "MASDownloadMetadataLib",
dependencies: [
.target(name: "StoreFoundation"),
]
),
.binaryTarget(
name: "StoreFoundation",
path: "StoreFoundation.xcframework"
)
]
)
Do you have any idea of what could be wrong with this configuration?