veracode / gen-ir

Generates LLVM IR for Xcode Projects
MIT License
8 stars 4 forks source link

Adopt PIF cache as a means for determining targets and relationships #62

Closed NinjaLikesCheez closed 3 months ago

NinjaLikesCheez commented 5 months ago

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 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.