blob: e36fddc8fa67bee6aaf95eb8dc02838d8470ca84 [file] [log] [blame] [view]
# Integrator Development Kit (IDK) layout
The Integrator Development Kit (IDK) archive contains the
Fuchsia-specific libraries, FIDL interfaces, and tools required to start building and running
programs for Fuchsia.
This IDK is the public definition of the Fuchsia platform. It is intentionally
independent from specific build environment and targets integration and engprod teams
integrating Fuchsia into specific developer environments.
For example, it does not contain any build system, favor any
toolchain, or provide standard non-Fuchsia libraries such as for crypto or
graphics.
Instead, it provides metadata accurately describing its various
parts, so that the IDK is processed and augmented with specific tooling
and support libraries to create the end-to-end development experience.
Most developers who wish to build something for Fuchsia should not need to
deal directly with the IDK.
They will instead consume a transformed version of it, for instance within the
development environment and ecosystem supporting a given language runtime.
Maintainers of development environments who wish to add support for Fuchsia are
the main audience for the IDK.
See [Integrating the Core SDK](integrating.md) for a description of how to process this
IDK.
As such, the Fuchsia IDK is the representation of the Fuchsia platform developers'
contract with other developers who work with Fuchsia.
While that contract is absolutely necessary, as this IDK contains the very bits
that are unique to Fuchsia, it is not sufficient and will be complemented by
other "contracts".
The Fuchsia IDK is mirroring the Fuchsia platform in that respect: highly
composable and extensible, with a clear separation of concerns.
## Structure
From this point on, the root of the IDK archive will be referred to as `//`.
### Metadata
Metadata is present throughout this IDK in the form of JSON files.
Every element in this IDK has its own metadata file: for example, a FIDL library
`//fidl/fuchsia.foobar` has its metadata encoded in
`//fidl/fuchsia.foobar/meta.json`.
Every metadata file follows a JSON schema available under `//meta/schemas`: for
example, a FIDL library's metadata file conforms to
`//meta/schemas/fidl_library.json`.
Schemas act as the documentation for the metadata and may be used to facilitate
the IDK ingestion process. See [understanding metadata](understanding_metadata.md).
### Documentation
General documentation is available under `//docs` in the IDK distribution, or
online at [fuchsia.dev/fuchsia-src/docs/development/idk](/docs/development/idk).
Some individual IDK elements will also provide documentation directly under the
path where they are hosted in the IDK.
### Target prebuilts
Target prebuilts are hosted under `//arch/<architecture>`.
This includes a full-fledged sysroot for each available architecture.
### Source libraries
The IDK contains sources for a large number of FIDL libraries (under
`//fidl`) as well as a few C/C++ libraries (under `//pkg`). See [compiling C/C++](documentation/compilation.md)
for details.
### Host tools
Multiple host-side tools can be found under `//tools`.
This includes tools for building programs, deploying to a device, debugging,
etc...
Some information about how to use these tools can be found under `//docs`.
Specifically:
* [bootserver](documentation/bootserver.md)
* [zxdb](documentation/debugger.md)
* [ssh](documentation/ssh.md)
* [logging and symbolizer](documentation/logging.md)
* [package manager](documentation/packages.md)
### Images
`//device` contains metadata describing device configurations matching a given
version of the IDK.
This metadata contains pointers to images that can be paved onto said devices.
See [working with devices](documentation/devices.md) for how to interact with a device
running Fuchsia.