PIF (Project Interchange Format) is a representation of a project model created by clients (SPM & Xcode) to send to the new build services XCBuild. A more in-depth description can be found in SPM's PIF.swift.
The reason to use PIF over PBXProject comes down to a couple reasons:
Structured and easy to consume
More publicly documented than PBX
We can leverage most of the structures from SPM (with some changes as SPM uses a different internal representation than Xcode)
Solves some existing issues like SPM dependencies, xcconfig naming changes, etc
This change adds a new package PIF with a library PIFSupport (and test executable) which supports the parsing of a PIF cache as it exists in Xcode's Derived Data. This module doesn't attempt to reason about it's contents - it is purely there for discovery and decoding of the cache.
PIFCache therefore exists to handle the reasoning of PIF targets and dependencies in the context of Gen IR.
This change adopts the ideas in and closes #61
PIF (Project Interchange Format) is a representation of a project model created by clients (SPM & Xcode) to send to the new build services XCBuild. A more in-depth description can be found in SPM's PIF.swift.
The reason to use PIF over PBXProject comes down to a couple reasons:
This change adds a new package
PIF
with a libraryPIFSupport
(and test executable) which supports the parsing of a PIF cache as it exists in Xcode's Derived Data. This module doesn't attempt to reason about it's contents - it is purely there for discovery and decoding of the cache.PIFCache
therefore exists to handle the reasoning of PIF targets and dependencies in the context of Gen IR.