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