1// We try to create options similar to lld's. That way, options passed to clang 2// -Xoffload-linker can be the same whether offloading to nvptx or amdgpu. 3 4include "llvm/Option/OptParser.td" 5 6def WrapperOnlyOption : OptionFlag; 7 8def help : Flag<["-", "--"], "help">, 9 HelpText<"Display available options (--help-hidden for more)">; 10 11def help_hidden : Flag<["-", "--"], "help-hidden">, 12 HelpText<"Display all available options">; 13 14def verbose : Flag<["-"], "v">, HelpText<"Print verbose information">; 15def version : Flag<["--"], "version">, 16 HelpText<"Display the version number and exit">; 17 18def cuda_path_EQ : Joined<["--"], "cuda-path=">, Flags<[WrapperOnlyOption]>, 19 MetaVarName<"<dir>">, HelpText<"Set the system CUDA path">; 20def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, Flags<[WrapperOnlyOption]>, 21 MetaVarName<"<dir>">, HelpText<"Set the 'ptxas' path">; 22 23def o : JoinedOrSeparate<["-"], "o">, MetaVarName<"<path>">, 24 HelpText<"Path to file to write output">; 25def output : Separate<["--"], "output-file">, Alias<o>, Flags<[HelpHidden]>, 26 HelpText<"Alias for -o">; 27 28def library_path : JoinedOrSeparate<["-"], "L">, MetaVarName<"<dir>">, 29 HelpText<"Add <dir> to the library search path">; 30def library_path_S : Separate<["--", "-"], "library-path">, Flags<[HelpHidden]>, 31 Alias<library_path>; 32def library_path_EQ : Joined<["--", "-"], "library-path=">, Flags<[HelpHidden]>, 33 Alias<library_path>; 34 35def library : JoinedOrSeparate<["-"], "l">, MetaVarName<"<libname>">, 36 HelpText<"Search for library <libname>">; 37def library_S : Separate<["--", "-"], "library">, Flags<[HelpHidden]>, 38 Alias<library_path>; 39def library_EQ : Joined<["--", "-"], "library=">, Flags<[HelpHidden]>, 40 Alias<library_path>; 41 42def plugin : JoinedOrSeparate<["--", "-"], "plugin">, 43 Flags<[HelpHidden, WrapperOnlyOption]>; 44 45def arch : Separate<["--", "-"], "arch">, 46 HelpText<"Specify the 'sm_' name of the target architecture">; 47def : Joined<["--", "-"], "plugin-opt=mcpu=">, 48 Flags<[HelpHidden, WrapperOnlyOption]>, Alias<arch>; 49 50def g : Flag<["-"], "g">, HelpText<"Specify that this was a debug compile">; 51def debug : Flag<["--"], "debug">, Alias<g>; 52 53def lto_emit_llvm : Flag<["--"], "lto-emit-llvm">, Flags<[WrapperOnlyOption]>, 54 HelpText<"Emit LLVM-IR bitcode">; 55def lto_emit_asm : Flag<["--"], "lto-emit-asm">, Flags<[WrapperOnlyOption]>, 56 HelpText<"Emit assembly code">; 57 58def u : JoinedOrSeparate<["-"], "u">, HelpText<"Force undefined symbol during linking">; 59def undefined : JoinedOrSeparate<["--"], "undefined">, Alias<u>; 60 61def O : Joined<["--", "-"], "plugin-opt=O">, 62 Flags<[WrapperOnlyOption]>, MetaVarName<"<O0, O1, O2, or O3>">, 63 HelpText<"Optimization level for LTO">; 64 65def thinlto : Joined<["--", "-"], "plugin-opt=thinlto">, 66 Flags<[WrapperOnlyOption]>, HelpText<"Enable the thin-lto backend">; 67def lto_partitions : Joined<["--", "-"], "plugin-opt=lto-partitions=">, 68 Flags<[WrapperOnlyOption]>, HelpText<"Number of LTO codegen partitions">; 69def jobs : Joined<["--", "-"], "plugin-opt=jobs=">, 70 Flags<[WrapperOnlyOption]>, HelpText<"Number of LTO codegen partitions">; 71def : Joined<["--", "-"], "plugin-opt=emit-llvm">, 72 Flags<[WrapperOnlyOption]>, Alias<lto_emit_llvm>; 73def : Joined<["--", "-"], "plugin-opt=emit-asm">, 74 Flags<[WrapperOnlyOption]>, Alias<lto_emit_asm>; 75def plugin_opt : Joined<["--", "-"], "plugin-opt=">, Flags<[WrapperOnlyOption]>, 76 HelpText<"Options passed to LLVM, not including the Clang invocation. Use " 77 "'--plugin-opt=--help' for a list of options.">; 78 79def lto_newpm_passes : Joined<["--"], "lto-newpm-passes=">, 80 Flags<[WrapperOnlyOption]>, HelpText<"Passes to run during LTO">; 81def lto_debug_pass_manager : Flag<["--"], "lto-debug-pass-manager">, 82 Flags<[WrapperOnlyOption]>, HelpText<"Debug new pass manager">; 83 84def save_temps : Flag<["--", "-"], "save-temps">, 85 Flags<[WrapperOnlyOption]>, HelpText<"Save intermediate results">; 86 87def relocatable : Flag<["--", "-"], "relocatable">, 88 Flags<[WrapperOnlyOption]>, HelpText<"Perform a relocatable link (LTO only)">; 89def r : Flag<["-"], "r">, Flags<[WrapperOnlyOption]>, Alias<relocatable>; 90 91def whole_archive : Flag<["--", "-"], "whole-archive">, 92 Flags<[WrapperOnlyOption, HelpHidden]>; 93def no_whole_archive : Flag<["--", "-"], "no-whole-archive">, 94 Flags<[WrapperOnlyOption, HelpHidden]>; 95 96def mllvm : Separate<["-"], "mllvm">, Flags<[WrapperOnlyOption]>, 97 MetaVarName<"<arg>">, 98 HelpText<"Arguments passed to LLVM, including Clang invocations, for which " 99 "the '-mllvm' prefix is preserved. Use '-mllvm --help' for a list " 100 "of options.">; 101def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>, Alias<mllvm>; 102 103def dry_run : Flag<["--", "-"], "dry-run">, Flags<[WrapperOnlyOption]>, 104 HelpText<"Print generated commands without running.">; 105