| include "llvm/Option/OptParser.td" |
| |
| |
| // output kinds |
| def grp_kind : OptionGroup<"outs">, HelpText<"OUTPUT KIND">; |
| def relocatable : Flag<["-"], "r">, |
| HelpText<"Create relocatable object file">, Group<grp_kind>; |
| def static : Flag<["-"], "static">, |
| HelpText<"Create static executable">, Group<grp_kind>; |
| def dynamic : Flag<["-"], "dynamic">, |
| HelpText<"Create dynamic executable (default)">,Group<grp_kind>; |
| def dylib : Flag<["-"], "dylib">, |
| HelpText<"Create dynamic library">, Group<grp_kind>; |
| def bundle : Flag<["-"], "bundle">, |
| HelpText<"Create dynamic bundle">, Group<grp_kind>; |
| def execute : Flag<["-"], "execute">, |
| HelpText<"Create main executable (default)">, Group<grp_kind>; |
| def preload : Flag<["-"], "preload">, |
| HelpText<"Create binary for use with embedded systems">, Group<grp_kind>; |
| |
| // optimizations |
| def grp_opts : OptionGroup<"opts">, HelpText<"OPTIMIZATIONS">; |
| def dead_strip : Flag<["-"], "dead_strip">, |
| HelpText<"Remove unreference code and data">, Group<grp_opts>; |
| def macosx_version_min : Separate<["-"], "macosx_version_min">, |
| MetaVarName<"<version>">, |
| HelpText<"Minimum Mac OS X version">, Group<grp_opts>; |
| def ios_version_min : Separate<["-"], "ios_version_min">, |
| MetaVarName<"<version>">, |
| HelpText<"Minimum iOS version">, Group<grp_opts>; |
| def iphoneos_version_min : Separate<["-"], "iphoneos_version_min">, |
| Alias<ios_version_min>; |
| def ios_simulator_version_min : Separate<["-"], "ios_simulator_version_min">, |
| MetaVarName<"<version>">, |
| HelpText<"Minimum iOS simulator version">, Group<grp_opts>; |
| def sdk_version : Separate<["-"], "sdk_version">, |
| MetaVarName<"<version>">, |
| HelpText<"SDK version">, Group<grp_opts>; |
| def source_version : Separate<["-"], "source_version">, |
| MetaVarName<"<version>">, |
| HelpText<"Source version">, Group<grp_opts>; |
| def version_load_command : Flag<["-"], "version_load_command">, |
| HelpText<"Force generation of a version load command">, Group<grp_opts>; |
| def no_version_load_command : Flag<["-"], "no_version_load_command">, |
| HelpText<"Disable generation of a version load command">, Group<grp_opts>; |
| def function_starts : Flag<["-"], "function_starts">, |
| HelpText<"Force generation of a function starts load command">, |
| Group<grp_opts>; |
| def no_function_starts : Flag<["-"], "no_function_starts">, |
| HelpText<"Disable generation of a function starts load command">, |
| Group<grp_opts>; |
| def data_in_code_info : Flag<["-"], "data_in_code_info">, |
| HelpText<"Force generation of a data in code load command">, |
| Group<grp_opts>; |
| def no_data_in_code_info : Flag<["-"], "no_data_in_code_info">, |
| HelpText<"Disable generation of a data in code load command">, |
| Group<grp_opts>; |
| def mllvm : Separate<["-"], "mllvm">, |
| MetaVarName<"<option>">, |
| HelpText<"Options to pass to LLVM during LTO">, Group<grp_opts>; |
| def exported_symbols_list : Separate<["-"], "exported_symbols_list">, |
| MetaVarName<"<file-path>">, |
| HelpText<"Restricts which symbols will be exported">, Group<grp_opts>; |
| def exported_symbol : Separate<["-"], "exported_symbol">, |
| MetaVarName<"<symbol>">, |
| HelpText<"Restricts which symbols will be exported">, Group<grp_opts>; |
| def unexported_symbols_list : Separate<["-"], "unexported_symbols_list">, |
| MetaVarName<"<file-path>">, |
| HelpText<"Lists symbols that should not be exported">, Group<grp_opts>; |
| def unexported_symbol : Separate<["-"], "unexported_symbol">, |
| MetaVarName<"<symbol>">, |
| HelpText<"A symbol which should not be exported">, Group<grp_opts>; |
| def keep_private_externs : Flag<["-"], "keep_private_externs">, |
| HelpText<"Private extern (hidden) symbols should not be transformed " |
| "into local symbols">, Group<grp_opts>; |
| def order_file : Separate<["-"], "order_file">, |
| MetaVarName<"<file-path>">, |
| HelpText<"re-order and move specified symbols to start of their section">, |
| Group<grp_opts>; |
| def flat_namespace : Flag<["-"], "flat_namespace">, |
| HelpText<"Resolves symbols in any (transitively) linked dynamic libraries. " |
| "Source libraries are not recorded: dyld will re-search all " |
| "images at runtime and use the first definition found.">, |
| Group<grp_opts>; |
| def twolevel_namespace : Flag<["-"], "twolevel_namespace">, |
| HelpText<"Resolves symbols in listed libraries only. Source libraries are " |
| "recorded in the symbol table.">, |
| Group<grp_opts>; |
| def undefined : Separate<["-"], "undefined">, |
| MetaVarName<"<undefined>">, |
| HelpText<"Determines how undefined symbols are handled.">, |
| Group<grp_opts>; |
| def no_objc_category_merging : Flag<["-"], "no_objc_category_merging">, |
| HelpText<"Disables the optimisation which merges Objective-C categories " |
| "on a class in to the class itself.">, |
| Group<grp_opts>; |
| |
| // main executable options |
| def grp_main : OptionGroup<"opts">, HelpText<"MAIN EXECUTABLE OPTIONS">; |
| def entry : Separate<["-"], "e">, |
| MetaVarName<"<entry-name>">, |
| HelpText<"entry symbol name">,Group<grp_main>; |
| def pie : Flag<["-"], "pie">, |
| HelpText<"Create Position Independent Executable (for ASLR)">, |
| Group<grp_main>; |
| def no_pie : Flag<["-"], "no_pie">, |
| HelpText<"Do not create Position Independent Executable">, |
| Group<grp_main>; |
| def stack_size : Separate<["-"], "stack_size">, |
| HelpText<"Specifies the maximum stack size for the main thread in a program. " |
| "Must be a page-size multiple. (default=8Mb)">, |
| Group<grp_main>; |
| def export_dynamic : Flag<["-"], "export_dynamic">, |
| HelpText<"Preserves all global symbols in main executables during LTO">, |
| Group<grp_main>; |
| |
| // dylib executable options |
| def grp_dylib : OptionGroup<"opts">, HelpText<"DYLIB EXECUTABLE OPTIONS">; |
| def install_name : Separate<["-"], "install_name">, |
| MetaVarName<"<path>">, |
| HelpText<"The dylib's install name">, Group<grp_dylib>; |
| def mark_dead_strippable_dylib : Flag<["-"], "mark_dead_strippable_dylib">, |
| HelpText<"Marks the dylib as having no side effects during initialization">, |
| Group<grp_dylib>; |
| def compatibility_version : Separate<["-"], "compatibility_version">, |
| MetaVarName<"<version>">, |
| HelpText<"The dylib's compatibility version">, Group<grp_dylib>; |
| def current_version : Separate<["-"], "current_version">, |
| MetaVarName<"<version>">, |
| HelpText<"The dylib's current version">, Group<grp_dylib>; |
| |
| // dylib executable options - compatibility aliases |
| def dylib_install_name : Separate<["-"], "dylib_install_name">, |
| Alias<install_name>; |
| def dylib_compatibility_version : Separate<["-"], "dylib_compatibility_version">, |
| MetaVarName<"<version>">, Alias<compatibility_version>; |
| def dylib_current_version : Separate<["-"], "dylib_current_version">, |
| MetaVarName<"<version>">, Alias<current_version>; |
| |
| // bundle executable options |
| def grp_bundle : OptionGroup<"opts">, HelpText<"BUNDLE EXECUTABLE OPTIONS">; |
| def bundle_loader : Separate<["-"], "bundle_loader">, |
| MetaVarName<"<path>">, |
| HelpText<"The executable that will be loading this Mach-O bundle">, |
| Group<grp_bundle>; |
| |
| // library options |
| def grp_libs : OptionGroup<"libs">, HelpText<"LIBRARY OPTIONS">; |
| def L : JoinedOrSeparate<["-"], "L">, |
| MetaVarName<"<dir>">, |
| HelpText<"Add directory to library search path">, Group<grp_libs>; |
| def F : JoinedOrSeparate<["-"], "F">, |
| MetaVarName<"<dir>">, |
| HelpText<"Add directory to framework search path">, Group<grp_libs>; |
| def Z : Flag<["-"], "Z">, |
| HelpText<"Do not search standard directories for libraries or frameworks">; |
| def all_load : Flag<["-"], "all_load">, |
| HelpText<"Forces all members of all static libraries to be loaded">, |
| Group<grp_libs>; |
| def force_load : Separate<["-"], "force_load">, |
| MetaVarName<"<library-path>">, |
| HelpText<"Forces all members of specified static libraries to be loaded">, |
| Group<grp_libs>; |
| def syslibroot : Separate<["-"], "syslibroot">, MetaVarName<"<dir>">, |
| HelpText<"Add path to SDK to all absolute library search paths">, |
| Group<grp_libs>; |
| |
| // Input options |
| def l : Joined<["-"], "l">, |
| MetaVarName<"<libname>">, |
| HelpText<"Base name of library searched for in -L directories">; |
| def upward_l : Joined<["-"], "upward-l">, |
| MetaVarName<"<libname>">, |
| HelpText<"Base name of upward library searched for in -L directories">; |
| def framework : Separate<["-"], "framework">, |
| MetaVarName<"<name>">, |
| HelpText<"Base name of framework searched for in -F directories">; |
| def upward_framework : Separate<["-"], "upward_framework">, |
| MetaVarName<"<name>">, |
| HelpText<"Base name of upward framework searched for in -F directories">; |
| def upward_library : Separate<["-"], "upward_library">, |
| MetaVarName<"<path>">, |
| HelpText<"path to upward dylib to link with">; |
| def filelist : Separate<["-"], "filelist">, |
| MetaVarName<"<path>">, |
| HelpText<"file containing paths to input files">; |
| |
| |
| // test case options |
| def print_atoms : Flag<["-"], "print_atoms">, |
| HelpText<"Emit output as yaml atoms">; |
| def test_file_usage : Flag<["-"], "test_file_usage">, |
| HelpText<"Only files specified by -file_exists are considered to exist. " |
| "Print which files would be used">; |
| def path_exists : Separate<["-"], "path_exists">, |
| MetaVarName<"<path>">, |
| HelpText<"Used with -test_file_usage to declare a path">; |
| |
| |
| // general options |
| def output : Separate<["-"], "o">, |
| MetaVarName<"<path>">, |
| HelpText<"Output file path">; |
| def arch : Separate<["-"], "arch">, |
| MetaVarName<"<arch-name>">, |
| HelpText<"Architecture to link">; |
| def sectalign : MultiArg<["-"], "sectalign", 3>, |
| MetaVarName<"<segname> <sectname> <alignment>">, |
| HelpText<"Alignment for segment/section">; |
| def sectcreate : MultiArg<["-"], "sectcreate", 3>, |
| MetaVarName<"<segname> <sectname> <file>">, |
| HelpText<"Create section <segname>/<sectname> from contents of <file>">; |
| def image_base : Separate<["-"], "image_base">; |
| def seg1addr : Separate<["-"], "seg1addr">, Alias<image_base>; |
| def demangle : Flag<["-"], "demangle">, |
| HelpText<"Demangles symbol names in errors and warnings">; |
| def dependency_info : Separate<["-"], "dependency_info">, |
| MetaVarName<"<file>">, |
| HelpText<"Write binary list of files used during link">; |
| def S : Flag<["-"], "S">, |
| HelpText<"Remove debug information (STABS or DWARF) from the output file">; |
| def rpath : Separate<["-"], "rpath">, |
| MetaVarName<"<path>">, |
| HelpText<"Add path to the runpath search path list for image being created">; |
| |
| def t : Flag<["-"], "t">, |
| HelpText<"Print the names of the input files as ld processes them">; |
| def v : Flag<["-"], "v">, |
| HelpText<"Print linker information">; |
| def error_limit : Separate<["-", "--"], "error-limit">, |
| MetaVarName<"<number>">, |
| HelpText<"Maximum number of errors to emit before stopping (0 = no limit)">; |
| |
| // Ignored options |
| def lto_library : Separate<["-"], "lto_library">, |
| MetaVarName<"<path>">, |
| HelpText<"Ignored for compatibility with other linkers">; |
| |
| // Obsolete options |
| def grp_obsolete : OptionGroup<"obsolete">, HelpText<"OBSOLETE OPTIONS">; |
| def single_module : Flag<["-"], "single_module">, |
| HelpText<"Default for dylibs">, Group<grp_obsolete>; |
| def multi_module : Flag<["-"], "multi_module">, |
| HelpText<"Unsupported way to build dylibs">, Group<grp_obsolete>; |
| def objc_gc_compaction : Flag<["-"], "objc_gc_compaction">, |
| HelpText<"Unsupported ObjC GC option">, Group<grp_obsolete>; |
| def objc_gc : Flag<["-"], "objc_gc">, |
| HelpText<"Unsupported ObjC GC option">, Group<grp_obsolete>; |
| def objc_gc_only : Flag<["-"], "objc_gc_only">, |
| HelpText<"Unsupported ObjC GC option">, Group<grp_obsolete>; |