112typedef enum loomc_link_flag_bits_e {
134#define LOOMC_ARTIFACT_FORMAT_LINK_PLAN_TEXT "loom-link-plan-text"
137typedef enum loomc_link_artifact_flag_bits_e {
147typedef enum loomc_link_mode_e {
#define LOOMC_API_EXPORT
Exports a public Loom C API symbol from a shared library build.
Definition base.h:34
size_t loomc_host_size_t
Host allocation and container size type.
Definition base.h:45
loomc_structure_type_t
Structure type values used by extensible public descriptors.
Definition base.h:181
struct iree_status_handle_t * loomc_status_t
Opaque status handle.
Definition base.h:55
Text and JSON configuration bindings.
struct loomc_context_t loomc_context_t
Immutable Loom API context.
Definition context.h:63
loomc_link_flag_bits_t
Link operation flags.
Definition link.h:112
@ LOOMC_LINK_FLAG_INCLUDE_INPUT_TESTS
Select test/benchmark-only INPUT symbols as link roots.
Definition link.h:127
@ LOOMC_LINK_FLAG_INCLUDE_INPUT_EXPORTS
Select exported INPUT-provider symbols as roots and compute their closure.
Definition link.h:114
@ LOOMC_LINK_FLAG_STRIP_TEST_SYMBOLS
Strip symbols used only by test or benchmark tooling.
Definition link.h:122
@ LOOMC_LINK_FLAG_ALLOW_UNRESOLVED_SYMBOLS
Preserve reachable unresolved symbol references for a later link.
Definition link.h:119
void loomc_linker_retain(loomc_linker_t *linker)
Retains a prepared linker for another owner.
loomc_link_artifact_flag_bits_t
Optional link-result artifact flags.
Definition link.h:137
@ LOOMC_LINK_ARTIFACT_FLAG_PLAN_TEXT
Attach a REPORT artifact named link-plan.txt containing the selected symbols, their providers,...
Definition link.h:140
loomc_status_t loomc_link_request(loomc_linker_t *linker, loomc_workspace_t *workspace, const loomc_request_t *input_request, const loomc_link_request_options_t *options, loomc_allocator_t allocator, loomc_request_t **out_request, loomc_result_t **out_result)
Seals an ordinary request against an optional frozen library index.
uint32_t loomc_link_flags_t
Bitmask of loomc_link_flag_bits_t values.
Definition link.h:131
void loomc_linker_release(loomc_linker_t *linker)
Releases a prepared linker from one owner.
struct loomc_linker_t loomc_linker_t
Prepared immutable linker.
Definition link.h:89
loomc_status_t loomc_link_module(loomc_linker_t *linker, loomc_workspace_t *workspace, const loomc_link_options_t *options, loomc_module_t **out_module, loomc_result_t **out_result)
Links frozen and invocation-local providers into an opaque module.
loomc_link_mode_t
Link product selection mode.
Definition link.h:147
@ LOOMC_LINK_MODE_MERGE
Merge every primary-input symbol into one relocatable module.
Definition link.h:150
@ LOOMC_LINK_MODE_LINK
Retain explicit roots or exported primary-input roots and their reachable closure through the complet...
Definition link.h:156
uint32_t loomc_link_artifact_flags_t
Bitmask of loomc_link_artifact_flag_bits_t values.
Definition link.h:144
loomc_status_t loomc_linker_create(loomc_context_t *context, const loomc_linker_options_t *options, loomc_allocator_t allocator, loomc_linker_t **out_linker)
Creates a prepared immutable linker.
Reusable link indexes for deterministic library and source discovery.
loomc_link_provider_role_t
Linkage role assigned to a source provider in a link index.
Definition link_index.h:75
struct loomc_link_index_t loomc_link_index_t
Frozen immutable link index.
Definition link_index.h:72
Opaque in-memory Loom modules.
struct loomc_module_t loomc_module_t
Opaque parsed, linked, optimized, or lowered module.
Definition module.h:90
Immutable compiler products and their recursively published requests.
struct loomc_request_t loomc_request_t
Immutable independently compilable product request.
Definition product.h:167
Shared operation result container.
struct loomc_result_t loomc_result_t
Immutable operation result.
Definition result.h:71
Host allocator used for persistent Loom object storage.
Definition base.h:414
Text configuration bindings and resolution policy shared by API operations.
Definition config.h:78
Invocation-local materialized module provider.
Definition link.h:170
loomc_link_provider_role_t role
Provider linkage role.
Definition link.h:179
const loomc_module_t * module
Immutable module to index and materialize for this invocation.
Definition link.h:172
loomc_string_view_t provider_name
Stable provider label for diagnostics and private-name determinism.
Definition link.h:176
Link invocation options.
Definition link.h:199
loomc_host_size_t root_symbol_count
Number of entries in root_symbols.
Definition link.h:226
loomc_string_view_t module_name
Output module name for this invocation. Empty uses the linker's default.
Definition link.h:216
const void * next
Optional invocation extensions such as loomc_target_specialization_options_t.
Definition link.h:208
loomc_host_size_t root_provider_count
Number of entries in root_provider_ordinals.
Definition link.h:240
const loomc_host_size_t * root_provider_ordinals
Provider ordinals whose exported symbols are roots in link mode.
Definition link.h:237
loomc_structure_type_t type
Structure type. Must be LOOMC_STRUCTURE_TYPE_LINK_OPTIONS when nonzero.
Definition link.h:201
loomc_config_options_t config
Per-invocation config bindings materialized into the linked output module.
Definition link.h:232
loomc_link_artifact_flags_t artifact_flags
Optional reports owned by the returned result, independently of the module, index,...
Definition link.h:265
loomc_host_size_t module_provider_count
Number of entries in module_providers.
Definition link.h:248
const loomc_link_module_provider_t * module_providers
Invocation-local materialized module providers appended after the optional frozen library prefix.
Definition link.h:245
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition link.h:204
loomc_link_index_t * link_index
Frozen provider index to link.
Definition link.h:213
loomc_link_flags_t flags
Link operation flags.
Definition link.h:229
loomc_link_mode_t mode
Product selection mode. Zero defaults to LOOMC_LINK_MODE_MERGE.
Definition link.h:219
const loomc_string_view_t * root_symbols
Root symbol names for link mode.
Definition link.h:223
const loomc_target_profile_t * target_profile
Optional homogeneous execution profile applied before dependency and template selection.
Definition link.h:260
Request-linking options.
Definition link.h:275
loomc_config_options_t config
Config bindings materialized into the linked request.
Definition link.h:295
loomc_string_view_t module_name
Output module name. Empty uses the linker's default module name.
Definition link.h:292
const void * next
Optional invocation extensions such as loomc_target_specialization_options_t.
Definition link.h:285
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition link.h:281
loomc_structure_type_t type
Structure type.
Definition link.h:278
const loomc_link_index_t * library_index
Optional frozen library-only index used to resolve request declarations.
Definition link.h:289
Linker creation options.
Definition link.h:96
loomc_string_view_t module_name
Default output module name for invocations that do not override it.
Definition link.h:108
loomc_structure_type_t type
Structure type.
Definition link.h:99
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition link.h:102
const void * next
Extension chain for future linker options.
Definition link.h:105
Non-owning string view over bytes that need not be NUL-terminated.
Definition base.h:63
Prepared target environments and target lowering pipelines.
struct loomc_target_profile_t loomc_target_profile_t
Prepared immutable target profile.
Definition target.h:136
Per-worker scratch workspace.
struct loomc_workspace_t loomc_workspace_t
Mutable per-worker scratch workspace.
Definition workspace.h:54