bazelbuild / bazelbuild/rules_cc

Interface for defining compilation outputs in the toolchain

Open
#826 8 comments 0 reactions 1 assignee Claimed by @lilygorsheneva View on GitHub
Dominant language
Starlark
Stars
247
Forks
196
PR merge metrics
No merged PRs in 30d

Description

A large portion of compile.bzl is dedicated to passing input/output files that are feature or toolchain-specific; while this is not necessarily a problem, adding them one-by-one is a bit tedious (see https://github.com/bazelbuild/rules_cc/pull/772); ideally the toolchain should be able to define output files without editing rules_cc itself.

A generic implementation will need to be able to do the following:
* be defined in a toolchain
* be conditional on some aspect of the feature configuration
* declare one or more files, potentially in relation to other files
* add files to output groups

Discussion of PR/772 seems to lean towards callbacks; I propose the following interface for something that would get called (based on feature configuration) in _create_compile_source_action (e.g. how _maybe_declare_trace_file is called in https://github.com/bazelbuild/rules_cc/pull/772)

```python
def callback(
ctx, # rule context object. requires committing to keeping ctx in the cc_common.compile API
feature_configuration,
cc_internal, # an object allowing access to file declaration api. Not a good name for it
) -> {"output_group_name":[files]}
```

When defining a toolchain, add a map or set of these callbacks to CcToolchainInfo (I'm insufficiently familiar with the rules-based-toolchain API to have a proposal for how this should look).

@keith @13steinj @trybka thoughts?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.