diff options
author | Victor Campos <victor.campos@arm.com> | 2025-01-15 10:11:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-15 10:11:39 +0000 |
commit | 85fdf501461e8ee00401f06ee6c7d21ac6622484 (patch) | |
tree | b7433b5ccc1596daee74f0d17e6f132ee7af8520 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | bd768246da23ad141d3e9303cf43fd4363a6d4f4 (diff) | |
download | llvm-85fdf501461e8ee00401f06ee6c7d21ac6622484.zip llvm-85fdf501461e8ee00401f06ee6c7d21ac6622484.tar.gz llvm-85fdf501461e8ee00401f06ee6c7d21ac6622484.tar.bz2 |
[Multilib] Custom flags YAML parsing (#122903)
This patch is the first step to extend the current multilib system to
support the selection of library variants which do not correspond to
existing command-line options.
Proposal can be found in
https://discourse.llvm.org/t/rfc-multilib-custom-flags/81058
The multilib mechanism supports libraries that target code generation or
language options such as `--target`, `-mcpu`, `-mfpu`,
`-mbranch-protection`. However, some library variants are particular to
features that do not correspond to any command-line options. Examples
include variants for multithreading and semihosting.
This work introduces a way to instruct the multilib system to consider
these features in library selection. This particular patch comprises a
new section in `multilib.yaml` to declare flags for which no option
exists. Henceforth this sort of flag will be called `custom flag` for
clarity.
The `multilib.yaml` file will have a new section called Flags which
contains the declarations of the target’s custom flags:
```yaml
Flags:
- Name: multithreaded
Values:
- Name: no-multithreaded
MacroDefines: [__SINGLE_THREAD__]
- Name: multithreaded
Default: no-multithreaded
- Name: io
Values:
- Name: io-none
- Name: io-semihosting
MacroDefines: [SEMIHOSTING]
- Name: io-linux-syscalls
MacroDefines: [LINUX_SYSCALLS, HOSTED=1]
Default: io-none
```
- Name: the name to categorize a flag.
- Values: a list of possible values.
- Default: it specifies which value this flag should take if not
specified in the command-line invocation. It must be one value from the
Values field.
Each flag Value follows this description:
- Name (required): the name of the custom flag value (string). This is
the string to be used in `-fmultilib-flag=<string>`.
- MacroDefines (optional): a list of strings to be used as macro
definitions. Each string
is fed into the driver as ``-D<string>``.
A Default value is useful to save users from specifying custom flags
that have a most commonly used value.
The namespace of flag values is common across all flags. This means that
flag values must be unique.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions