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