xref: /openbsd-src/gnu/llvm/clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td (revision 12c855180aad702bbcca06e0398d774beeafb155)
1include "llvm/Option/OptParser.td"
2
3def WrapperOnlyOption : OptionFlag;
4def DeviceOnlyOption : OptionFlag;
5
6def help : Flag<["--"], "help">,
7  HelpText<"Display available options (--help-hidden for more)">;
8
9def help_hidden : Flag<["--"], "help-hidden">,
10  HelpText<"Display all available options">;
11
12// Flags for the linker wrapper.
13def linker_path_EQ : Joined<["--"], "linker-path=">,
14  Flags<[WrapperOnlyOption]>, MetaVarName<"<path>">,
15  HelpText<"The linker executable to invoke">;
16def cuda_path_EQ : Joined<["--"], "cuda-path=">,
17  Flags<[WrapperOnlyOption]>, MetaVarName<"<dir>">,
18  HelpText<"Set the system CUDA path">;
19def host_triple_EQ : Joined<["--"], "host-triple=">,
20  Flags<[WrapperOnlyOption]>, MetaVarName<"<triple>">,
21  HelpText<"Triple to use for the host compilation">;
22def opt_level : Joined<["--"], "opt-level=">,
23  Flags<[WrapperOnlyOption]>, MetaVarName<"<O0, O1, O2, or O3>">,
24  HelpText<"Optimization level for LTO">;
25def bitcode_library_EQ : Joined<["--"], "bitcode-library=">,
26  Flags<[WrapperOnlyOption]>, MetaVarName<"<kind>-<triple>-<arch>=<path>">,
27  HelpText<"Extra bitcode library to link">;
28def device_linker_args_EQ : Joined<["--"], "device-linker=">,
29  Flags<[WrapperOnlyOption]>, MetaVarName<"<value> or <triple>=<value>">,
30  HelpText<"Arguments to pass to the device linker invocation">;
31def dry_run : Flag<["--"], "dry-run">,
32  Flags<[WrapperOnlyOption]>,
33  HelpText<"Print program arguments without running">;
34def verbose : Flag<["--"], "wrapper-verbose">,
35  Flags<[WrapperOnlyOption]>, HelpText<"Verbose output from tools">;
36def embed_bitcode : Flag<["--"], "embed-bitcode">,
37  Flags<[WrapperOnlyOption]>, HelpText<"Embed linked bitcode in the module">;
38def debug : Flag<["--"], "device-debug">, Flags<[WrapperOnlyOption]>,
39  HelpText<"Use debugging">;
40def ptxas_arg : Joined<["--"], "ptxas-arg=">,
41  Flags<[WrapperOnlyOption]>,
42  HelpText<"Argument to pass to the 'ptxas' invocation">;
43def pass_remarks_EQ : Joined<["--"], "pass-remarks=">,
44  Flags<[WrapperOnlyOption]>, HelpText<"Pass remarks for LTO">;
45def pass_remarks_missed_EQ : Joined<["--"], "pass-remarks-missed=">,
46  Flags<[WrapperOnlyOption]>, HelpText<"Pass remarks for LTO">;
47def pass_remarks_analysis_EQ : Joined<["--"], "pass-remarks-analysis=">,
48  Flags<[WrapperOnlyOption]>, HelpText<"Pass remarks for LTO">;
49def print_wrapped_module : Flag<["--"], "print-wrapped-module">,
50  Flags<[WrapperOnlyOption]>,
51  HelpText<"Print the wrapped module's IR for testing">;
52def save_temps : Flag<["--"], "save-temps">,
53  Flags<[WrapperOnlyOption]>, HelpText<"Save intermediate results">;
54
55def wrapper_time_trace_eq : Joined<["--"], "wrapper-time-trace=">,
56  Flags<[WrapperOnlyOption]>, MetaVarName<"<file>">,
57  HelpText<"Enable time-trace and write the output to <file>">;
58def wrapper_time_trace_granularity : Joined<["--"], "wrapper-time-trace-granularity=">,
59  Flags<[WrapperOnlyOption]>, MetaVarName<"<number>">,
60  HelpText<"Set the granularity of time-trace updates">;
61
62def wrapper_jobs : Joined<["--"], "wrapper-jobs=">,
63  Flags<[WrapperOnlyOption]>, MetaVarName<"<number>">,
64  HelpText<"Sets the number of parallel jobs to use for device linking">;
65
66// Flags passed to the device linker.
67def arch_EQ : Joined<["--"], "arch=">,
68  Flags<[DeviceOnlyOption, HelpHidden]>, MetaVarName<"<arch>">,
69  HelpText<"The device subarchitecture">;
70def triple_EQ : Joined<["--"], "triple=">,
71  Flags<[DeviceOnlyOption, HelpHidden]>, MetaVarName<"<triple>">,
72  HelpText<"The device target triple">;
73def whole_program : Flag<["--"], "whole-program">,
74  Flags<[DeviceOnlyOption, HelpHidden]>,
75  HelpText<"LTO has visibility of all input files">;
76def linker_arg_EQ : Joined<["--"], "linker-arg=">,
77  Flags<[DeviceOnlyOption, HelpHidden]>,
78  HelpText<"An extra argument to be passed to the linker">;
79
80// Separator between the linker wrapper and host linker flags.
81def separator : Flag<["--"], "">, Flags<[WrapperOnlyOption]>,
82  HelpText<"The separator for the wrapped linker arguments">;
83
84// Arguments for the LLVM backend.
85def mllvm : Separate<["-"], "mllvm">, Flags<[WrapperOnlyOption]>,
86  MetaVarName<"<arg>">, HelpText<"Arguments passed to the LLVM invocation">;
87def offload_opt_eq_minus : Joined<["--", "-"], "offload-opt=-">, Flags<[HelpHidden, WrapperOnlyOption]>,
88  HelpText<"Options passed to LLVM">;
89
90// Standard linker flags also used by the linker wrapper.
91def sysroot_EQ : Joined<["--"], "sysroot">, HelpText<"Set the system root">;
92
93def o : JoinedOrSeparate<["-"], "o">, MetaVarName<"<path>">,
94  HelpText<"Path to file to write output">;
95def output_EQ : Joined<["--"], "output=">, Alias<o>, Flags<[HelpHidden]>,
96  HelpText<"Alias for -o">;
97def output : Separate<["--"], "output">, Alias<o>, Flags<[HelpHidden]>,
98  HelpText<"Alias for -o">;
99
100def library_path : JoinedOrSeparate<["-"], "L">, MetaVarName<"<dir>">,
101  HelpText<"Add <dir> to the library search path">;
102def library_path_S : Separate<["--", "-"], "library-path">, Flags<[HelpHidden]>,
103  Alias<library_path>;
104def library_path_EQ : Joined<["--", "-"], "library-path=">, Flags<[HelpHidden]>,
105  Alias<library_path>;
106
107def library : JoinedOrSeparate<["-"], "l">, MetaVarName<"<libname>">,
108  HelpText<"Search for library <libname>">;
109def library_S : Separate<["--", "-"], "library">, Flags<[HelpHidden]>,
110  Alias<library_path>;
111def library_EQ : Joined<["--", "-"], "library=">, Flags<[HelpHidden]>,
112  Alias<library_path>;
113
114def as_needed : Flag<["--", "-"], "as-needed">;
115def no_as_needed : Flag<["--", "-"], "no-as-needed">;
116
117def rpath : Separate<["--", "-"], "rpath">;
118def rpath_EQ : Joined<["--", "-"], "rpath=">, Flags<[HelpHidden]>, Alias<rpath>;
119
120def dynamic_linker : Separate<["--", "-"], "dynamic-linker">;
121def dynamic_linker_EQ : Joined<["--", "-"], "dynamic-linker=">, Alias<dynamic_linker>;
122
123def v : Flag<["--", "-"], "v">, HelpText<"Display the version number and exit">;
124def version : Flag<["--", "-"], "version">, Flags<[HelpHidden]>, Alias<v>;
125