120 lines · plain
1// We try to create options similar to lld's. That way, options passed to clang2// -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>;75 76def opt_remarks_filename : Joined<["--", "-"], "plugin-opt=opt-remarks-filename=">,77 Flags<[WrapperOnlyOption]>, HelpText<"YAML output file for optimization remarks">;78def opt_remarks_format : Joined<["--", "-"], "plugin-opt=opt-remarks-format=">,79 Flags<[WrapperOnlyOption]>, HelpText<"The format used for serializing remarks (default: YAML)">;80def opt_remarks_filter : Joined<["--", "-"], "plugin-opt=opt-remarks-filter=">, 81 Flags<[WrapperOnlyOption]>, HelpText<"Regex for the passes that need to be serialized to the output file">;82def opt_remarks_with_hotness : Flag<["--", "-"], "plugin-opt=opt-remarks-with-hotness">,83 Flags<[WrapperOnlyOption]>, HelpText<"Include hotness information in the optimization remarks file">;84 85def plugin_opt : Joined<["--", "-"], "plugin-opt=">, Flags<[WrapperOnlyOption]>,86 HelpText<"Options passed to LLVM, not including the Clang invocation. Use "87 "'--plugin-opt=--help' for a list of options.">;88 89def lto_newpm_passes : Joined<["--"], "lto-newpm-passes=">,90 Flags<[WrapperOnlyOption]>, HelpText<"Passes to run during LTO">;91def lto_debug_pass_manager : Flag<["--"], "lto-debug-pass-manager">,92 Flags<[WrapperOnlyOption]>, HelpText<"Debug new pass manager">;93 94def save_temps : Flag<["--", "-"], "save-temps">,95 Flags<[WrapperOnlyOption]>, HelpText<"Save intermediate results">;96 97def relocatable : Flag<["--", "-"], "relocatable">,98 Flags<[WrapperOnlyOption]>, HelpText<"Perform a relocatable link (LTO only)">;99def r : Flag<["-"], "r">, Flags<[WrapperOnlyOption]>, Alias<relocatable>;100 101def whole_archive : Flag<["--", "-"], "whole-archive">,102 Flags<[WrapperOnlyOption, HelpHidden]>;103def no_whole_archive : Flag<["--", "-"], "no-whole-archive">,104 Flags<[WrapperOnlyOption, HelpHidden]>;105 106def mllvm : Separate<["-"], "mllvm">, Flags<[WrapperOnlyOption]>,107 MetaVarName<"<arg>">,108 HelpText<"Arguments passed to LLVM, including Clang invocations, for which "109 "the '-mllvm' prefix is preserved. Use '-mllvm --help' for a list "110 "of options.">;111def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>, Alias<mllvm>;112 113def dry_run : Flag<["--", "-"], "dry-run">, Flags<[WrapperOnlyOption]>,114 HelpText<"Print generated commands without running.">;115def assume_device_object116 : Flag<["--", "-"], "assume-device-object">,117 Flags<[WrapperOnlyOption]>,118 HelpText<119 "Assume objects have device object files, only in dry-run mode.">;120