This makes it explicit how the child processes will operate, rather
than always inheriting global state from the parent process. Also,
remove the unused convenience methods from the subprocess launcher.
This avoids requiring filesystem access to compute the target environment,
and fixes the layering of build configurations when determining the target
SDK for the build.
Frameworks expect that their underlying Objective-C module is available
in Swift without an explicit bridging header. In order to support that,
a custom module map is needed at build time and an additional flag tells
the Swift compiler to import the underlying module automatically.
Like with header map information, compiler invocations can require
the module map information. Generate it before compile invocations
and store it in the tool context.
This allows Ninja to track dependencies properly for auxiliary files,
especially ones that are copied from source files rather than static.
Static auxiliary files are stored in the Ninja using Base64, since
some auxiliary files (e.g. header maps) are binary and thus are not
representable in shell scripts otherwise.
Explicit dependencies of invocations on their auxiliary files are
incomplete to that point that ordering between writing the auxiliary
files and the invocations is required; this is implemented with a
new barrier rule in Ninja between auxiliary files and invocations.
Sometimes, auxiliary file content comes from another file, rather than
being defined entirely in code. In that case, delay reading the file to
the execution phase in order to let executors handle that as required.
Use a single reserve method to reserve space in BOM indexes or in a
BOM tree's entry index, rather than specifying on initialization.
This better supports reserving additional space after allocation,
which is needed in any case, without sacrificing performance.
* Support faster writes by preallocating indexes
* Allow reading and writing raw key value pairs in libcar
* Remove bom_alloc_empty and bom_tree_alloc_empty
* Keep space for two extra indexes for compatibility
* Include struct bom_variables when checking minimum size of BOM memory
* Remove preallocated_index_count
* Refactor resizing code
* Add API to increase the size of the BOM index free list
* Optimize CAR write by pre-allocting BOM indexes
Print the set of output files, as expected, and output dependency info
as requested by the command line options. The dependency info contains
the full set of inputs and outputs used during compilation.
* Parse minimum system version for launch image assets.
A system version has at least two components separated by dots, with
an optional third component separated by an additional dot.
* Compile launch image assets.
Launch images are copied to the output, and metadata is added to the
partial info plist to describe the launch images.