// We try to create options similar to lld's. That way, options passed to clang // -Xoffload-linker can be the same whether offloading to nvptx or amdgpu. include "llvm/Option/OptParser.td" def WrapperOnlyOption : OptionFlag; def help : Flag<["-", "--"], "help">, HelpText<"Display available options (--help-hidden for more)">; def help_hidden : Flag<["-", "--"], "help-hidden">, HelpText<"Display all available options">; def verbose : Flag<["-"], "v">, HelpText<"Print verbose information">; def version : Flag<["--"], "version">, HelpText<"Display the version number and exit">; def cuda_path_EQ : Joined<["--"], "cuda-path=">, Flags<[WrapperOnlyOption]>, MetaVarName<"">, HelpText<"Set the system CUDA path">; def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, Flags<[WrapperOnlyOption]>, MetaVarName<"">, HelpText<"Set the 'ptxas' path">; def o : JoinedOrSeparate<["-"], "o">, MetaVarName<"">, HelpText<"Path to file to write output">; def output : Separate<["--"], "output-file">, Alias, Flags<[HelpHidden]>, HelpText<"Alias for -o">; def library_path : JoinedOrSeparate<["-"], "L">, MetaVarName<"">, HelpText<"Add to the library search path">; def library_path_S : Separate<["--", "-"], "library-path">, Flags<[HelpHidden]>, Alias; def library_path_EQ : Joined<["--", "-"], "library-path=">, Flags<[HelpHidden]>, Alias; def library : JoinedOrSeparate<["-"], "l">, MetaVarName<"">, HelpText<"Search for library ">; def library_S : Separate<["--", "-"], "library">, Flags<[HelpHidden]>, Alias; def library_EQ : Joined<["--", "-"], "library=">, Flags<[HelpHidden]>, Alias; def plugin : JoinedOrSeparate<["--", "-"], "plugin">, Flags<[HelpHidden, WrapperOnlyOption]>; def arch : Separate<["--", "-"], "arch">, HelpText<"Specify the 'sm_' name of the target architecture">; def : Joined<["--", "-"], "plugin-opt=mcpu=">, Flags<[HelpHidden, WrapperOnlyOption]>, Alias; def g : Flag<["-"], "g">, HelpText<"Specify that this was a debug compile">; def debug : Flag<["--"], "debug">, Alias; def lto_emit_llvm : Flag<["--"], "lto-emit-llvm">, Flags<[WrapperOnlyOption]>, HelpText<"Emit LLVM-IR bitcode">; def lto_emit_asm : Flag<["--"], "lto-emit-asm">, Flags<[WrapperOnlyOption]>, HelpText<"Emit assembly code">; def u : JoinedOrSeparate<["-"], "u">, HelpText<"Force undefined symbol during linking">; def undefined : JoinedOrSeparate<["--"], "undefined">, Alias; def O : Joined<["--", "-"], "plugin-opt=O">, Flags<[WrapperOnlyOption]>, MetaVarName<"">, HelpText<"Optimization level for LTO">; def thinlto : Joined<["--", "-"], "plugin-opt=thinlto">, Flags<[WrapperOnlyOption]>, HelpText<"Enable the thin-lto backend">; def lto_partitions : Joined<["--", "-"], "plugin-opt=lto-partitions=">, Flags<[WrapperOnlyOption]>, HelpText<"Number of LTO codegen partitions">; def jobs : Joined<["--", "-"], "plugin-opt=jobs=">, Flags<[WrapperOnlyOption]>, HelpText<"Number of LTO codegen partitions">; def : Joined<["--", "-"], "plugin-opt=emit-llvm">, Flags<[WrapperOnlyOption]>, Alias; def : Joined<["--", "-"], "plugin-opt=emit-asm">, Flags<[WrapperOnlyOption]>, Alias; def opt_remarks_filename : Joined<["--", "-"], "plugin-opt=opt-remarks-filename=">, Flags<[WrapperOnlyOption]>, HelpText<"YAML output file for optimization remarks">; def opt_remarks_format : Joined<["--", "-"], "plugin-opt=opt-remarks-format=">, Flags<[WrapperOnlyOption]>, HelpText<"The format used for serializing remarks (default: YAML)">; def opt_remarks_filter : Joined<["--", "-"], "plugin-opt=opt-remarks-filter=">, Flags<[WrapperOnlyOption]>, HelpText<"Regex for the passes that need to be serialized to the output file">; def opt_remarks_with_hotness : Flag<["--", "-"], "plugin-opt=opt-remarks-with-hotness">, Flags<[WrapperOnlyOption]>, HelpText<"Include hotness information in the optimization remarks file">; def plugin_opt : Joined<["--", "-"], "plugin-opt=">, Flags<[WrapperOnlyOption]>, HelpText<"Options passed to LLVM, not including the Clang invocation. Use " "'--plugin-opt=--help' for a list of options.">; def lto_newpm_passes : Joined<["--"], "lto-newpm-passes=">, Flags<[WrapperOnlyOption]>, HelpText<"Passes to run during LTO">; def lto_debug_pass_manager : Flag<["--"], "lto-debug-pass-manager">, Flags<[WrapperOnlyOption]>, HelpText<"Debug new pass manager">; def save_temps : Flag<["--", "-"], "save-temps">, Flags<[WrapperOnlyOption]>, HelpText<"Save intermediate results">; def relocatable : Flag<["--", "-"], "relocatable">, Flags<[WrapperOnlyOption]>, HelpText<"Perform a relocatable link (LTO only)">; def r : Flag<["-"], "r">, Flags<[WrapperOnlyOption]>, Alias; def whole_archive : Flag<["--", "-"], "whole-archive">, Flags<[WrapperOnlyOption, HelpHidden]>; def no_whole_archive : Flag<["--", "-"], "no-whole-archive">, Flags<[WrapperOnlyOption, HelpHidden]>; def mllvm : Separate<["-"], "mllvm">, Flags<[WrapperOnlyOption]>, MetaVarName<"">, HelpText<"Arguments passed to LLVM, including Clang invocations, for which " "the '-mllvm' prefix is preserved. Use '-mllvm --help' for a list " "of options.">; def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>, Alias; def dry_run : Flag<["--", "-"], "dry-run">, Flags<[WrapperOnlyOption]>, HelpText<"Print generated commands without running.">; def assume_device_object : Flag<["--", "-"], "assume-device-object">, Flags<[WrapperOnlyOption]>, HelpText< "Assume objects have device object files, only in dry-run mode.">;