blob: e0dda69ce2c179cce9fd530d68697d8e4e31d3bb [file] [log] [blame]
{
"description": "Schema for a build-generated SDK manifest",
"type": "object",
"properties": {
"atoms": {
"description": "The set of all atoms in the current manifest, forming a complete dependency graph",
"type": "array",
"items": {
"$ref": "#/definitions/atom"
}
},
"ids": {
"description": "IDs of the main atoms in this manifest (as opposed to dependencies)",
"type": "array",
"items": {
"$ref": "#/definitions/atomId"
}
},
"meta": {
"description": "A collection of metadata about the SDK",
"$ref": "#/definitions/sdkMetadata"
}
},
"required": [
"atoms",
"ids",
"meta"
],
"additionalProperties": false,
"definitions": {
"atomId": {
"description": "Unique identifier for an atom",
"type": "object",
"properties": {
"domain": {
"description": "The group of atoms this atom belongs to",
"type": "string",
"enum": [
"cpp",
"dart",
"exe",
"fidl",
"image"
]
},
"name": {
"description": "The name of this atom, unique within its domain",
"type": "string"
}
},
"required": [
"domain",
"name"
],
"additionalProperties": false
},
"atom": {
"description": "An SDK artifact",
"type": "object",
"properties": {
"id": {
"description": "The atom's unique identifier",
"$ref": "#/definitions/atomId"
},
"gn-label": {
"description": "Label of the GN target which generated the atom",
"type": "string"
},
"category": {
"description": "Publication level of this atom",
"type": "string",
"enum": [
"excluded",
"experimental",
"internal",
"partner",
"public"
]
},
"files": {
"description": "The files making up the atom",
"type": "array",
"items": {
"$ref": "#/definitions/atomFile"
}
},
"deps": {
"description": "The ids of the atoms this atom directly depends on",
"type": "array",
"items": {
"$ref": "#/definitions/atomId"
}
},
"package-deps": {
"description": "The ids of the atoms this atom needs at runtime",
"type": "array",
"items": {
"$ref": "#/definitions/atomId"
}
},
"tags": {
"description": "A collection of potentially domain-specific metadata",
"oneOf": [
{
"$ref": "#/definitions/cppTags"
},
{
"$ref": "#/definitions/dartTags"
},
{
"$ref": "#/definitions/exeTags"
},
{
"$ref": "#/definitions/fidlTags"
},
{
"$ref": "#/definitions/imageTags"
}
]
}
},
"required": [
"category",
"deps",
"files",
"id",
"tags",
"gn-label",
"package-deps"
],
"additionalProperties": false
},
"atomFile": {
"description": "Description of a file pertaining to an atom",
"type": "object",
"properties": {
"source": {
"description": "Path to the source file",
"type": "string"
},
"destination": {
"description": "Destination path of the file relative to the root of the atom",
"type": "string"
},
"packaged": {
"description": "Whether this file should be included in a Fuchsia package containing this atom",
"type": "boolean"
}
},
"required": [
"source",
"destination",
"packaged"
],
"additionalProperties": false
},
"sdkMetadata": {
"description": "Additional information about an SDK",
"type": "object",
"properties": {
"target-arch": {
"description": "The architecture for target binaries referenced in this manifest, expressed as a compiler triple",
"type": "string"
},
"host-arch": {
"description": "The architecture for host binaries referenced in this manifest, expressed as a compiler triple",
"type": "string"
}
},
"required": [
"host-arch",
"target-arch"
],
"additionalProperties": false
},
"cppTags": {
"description": "Tag definitions for the 'cpp' domain",
"type": "object",
"properties": {
"domain": {
"description": "Marker for this type of tags",
"type": "string",
"enum": [
"cpp"
]
},
"type": {
"description": "The type of C/C++ artifact represented by this atom",
"type": "string",
"enum": [
"compiled_shared",
"compiled_static",
"sources",
"sysroot"
]
},
"arch": {
"description": "Architecture for prebuilt types",
"$ref": "#/definitions/prebuiltArch"
}
},
"required": [
"domain",
"type"
],
"additionalProperties": false
},
"dartTags": {
"description": "Tag definitions for the 'dart' domain",
"type": "object",
"properties": {
"domain": {
"description": "Marker for this type of tags",
"type": "string",
"enum": [
"dart"
]
}
},
"required": [
"domain"
],
"additionalProperties": false
},
"exeTags": {
"description": "Tag definitions for the 'exe' domain",
"type": "object",
"properties": {
"domain": {
"description": "Marker for this type of tags",
"type": "string",
"enum": [
"exe"
]
},
"arch": {
"description": "Architecture for prebuilt types",
"$ref": "#/definitions/prebuiltArch"
}
},
"required": [
"domain",
"arch"
],
"additionalProperties": false
},
"fidlTags": {
"description": "Tag definitions for the 'fidl' domain",
"type": "object",
"properties": {
"domain": {
"description": "Marker for this type of tags",
"type": "string",
"enum": [
"fidl"
]
}
},
"required": [
"domain"
],
"additionalProperties": false
},
"imageTags": {
"description": "Tag definitions for the 'image' domain",
"type": "object",
"properties": {
"domain": {
"description": "Marker for this type of tags",
"type": "string",
"enum": [
"image"
]
}
},
"required": [
"domain"
],
"additionalProperties": false
},
"prebuiltArch": {
"description": "For prebuilt artifacts, whether this was built for host or target",
"type": "string",
"enum": [
"host",
"target"
]
}
}
}