Xcode 12.5 fail resolving SwiftPackageDependency with .systemLibrary target on M1

Xcode 12.5 on MBP with M1 fails resolving package dependency with .systemLibrary target. Running Xcode without Rosseta.

The project is setup with 2 spm packages. Both of them added to the project .xcworkspace and only one of them linked within the app. Both packages are local dependencies. A package has B package as dependency and B package has libgit2 as .systemLibrary dependency. Then, if I open the project, Xcode can't find pkg-config and then not resolves libgit2 dependency.

This doesn't happens if I generate the A pbxproj with swift package generate-xcodeproj , in this case, the project resolves fine and I can build it without any problem.

The A Package.swift is:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "A",
    platforms: [
        .macOS(.v11)
    ],
    products: [
        .library(
            name: "A",
            targets: ["A"]
        ),
    ],
    dependencies: [
        .package(path: "../B")
    ],
    targets: [
        .target(
            name: "A",
            dependencies: ["B"]
        ),
        .testTarget(
            name: "ATests",
            dependencies: ["A"]
        ),
    ]
)

The B Package.swift is:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "B",
    platforms: [
        .macOS(.v11)
    ],
    products: [
        .library(
            name: "B",
            targets: ["B"]
        )
    ],
    dependencies: [],
    targets: [
        .systemLibrary(
            name: "Clibgit2",
            pkgConfig: "libgit2",
            providers: [
                .brew(["libgit2"])
            ]
        ),
        .target(
            name: "B",
            dependencies: [
                .target(name: "Clibgit2")
            ]
        ),
        .testTarget(
            name: "BTests",
            dependencies: ["B"]
        )
    ]
)

The Clibgit2 target is well configured with the module.modulemap and shim.h files.

Screenshot 2021-07-05 at 15.15.53

I checked pkg-config is installed and has the libgit2 package info with pkg-config --list Also I opened the project on an intel mac and is working fine.

libgit2 is installed by brew.

Thanks to @NeoNacho !!
Xcode is only looking at /opt/brew and /usr/local. The homebrew location for M1 chips is on /opt/homebrew so you can set a custom path using com.apple.dt.Xcode.IDEHombrePrefixPath.

defaults write com.apple.dt.Xcode IDEHomebrewPrefixPath /opt/homebrew

Tweet ref: https://twitter.com/NeoNacho/status/1412514541343166467

2 Likes