include "llvm/Option/OptParser.td"

multiclass Eq<string name, string help> {
  def NAME : Separate<["--"], name>;
  def NAME #_eq : Joined<["--"], name #"=">,
                  Alias<!cast<Separate>(NAME)>,
                  HelpText<help>;
}

def help : Flag<["--"], "help">;
def h : Flag<["-"], "h">, Alias<help>;

def allow_broken_links
    : Flag<["--"], "allow-broken-links">,
      HelpText<"Allow the tool to remove sections even if it would leave "
               "invalid section references. The appropriate sh_link fields "
               "will be set to zero.">;

def enable_deterministic_archives
    : Flag<["--"], "enable-deterministic-archives">,
      HelpText<"Enable deterministic mode when operating on archives (use "
               "zero for UIDs, GIDs, and timestamps).">;
def D : Flag<["-"], "D">,
        Alias<enable_deterministic_archives>,
        HelpText<"Alias for --enable-deterministic-archives">;

def disable_deterministic_archives
    : Flag<["--"], "disable-deterministic-archives">,
      HelpText<"Disable deterministic mode when operating on archives (use "
               "real values for UIDs, GIDs, and timestamps).">;
def U : Flag<["-"], "U">,
        Alias<disable_deterministic_archives>,
        HelpText<"Alias for --disable-deterministic-archives">;

def preserve_dates : Flag<["--"], "preserve-dates">,
                     HelpText<"Preserve access and modification timestamps">;
def p : Flag<["-"], "p">,
        Alias<preserve_dates>,
        HelpText<"Alias for --preserve-dates">;

def strip_all : Flag<["--"], "strip-all">,
                HelpText<"Remove non-allocated sections outside segments. "
                         ".gnu.warning* and .ARM.attribute sections are not "
                         "removed">;

def strip_all_gnu
    : Flag<["--"], "strip-all-gnu">,
      HelpText<"Compatible with GNU's --strip-all">;

def strip_debug : Flag<["--"], "strip-debug">,
                  HelpText<"Remove all debug sections">;
def g : Flag<["-"], "g">,
        Alias<strip_debug>,
        HelpText<"Alias for --strip-debug">;

def strip_unneeded : Flag<["--"], "strip-unneeded">,
                     HelpText<"Remove all symbols not needed by relocations">;

defm remove_section : Eq<"remove-section", "Remove <section>">,
                      MetaVarName<"section">;
def R : JoinedOrSeparate<["-"], "R">,
        Alias<remove_section>,
        HelpText<"Alias for --remove-section">;

def strip_sections
    : Flag<["--"], "strip-sections">,
      HelpText<"Remove all section headers and all sections not in segments">;

defm strip_symbol : Eq<"strip-symbol", "Strip <symbol>">,
                    MetaVarName<"symbol">;
def N : JoinedOrSeparate<["-"], "N">,
        Alias<strip_symbol>,
        HelpText<"Alias for --strip-symbol">;

defm keep_section : Eq<"keep-section", "Keep <section>">,
                    MetaVarName<"section">;

defm keep_symbol : Eq<"keep-symbol", "Do not remove symbol <symbol>">,
                   MetaVarName<"symbol">;
def K : JoinedOrSeparate<["-"], "K">,
        Alias<keep_symbol>,
        HelpText<"Alias for --keep-symbol">;

def keep_file_symbols : Flag<["--"], "keep-file-symbols">,
                        HelpText<"Do not remove file symbols">;

def keep_undefined : Flag<["--"], "keep-undefined">,
                        HelpText<"Do not remove undefined symbols">;

def only_keep_debug
    : Flag<["--"], "only-keep-debug">,
      HelpText<
          "Produce a debug file as the output that only preserves contents of "
          "sections useful for debugging purposes">;

def discard_locals : Flag<["--"], "discard-locals">,
                     HelpText<"Remove compiler-generated local symbols, (e.g. "
                              "symbols starting with .L)">;
def X : Flag<["-"], "X">,
        Alias<discard_locals>,
        HelpText<"Alias for --discard-locals">;

def discard_all
    : Flag<["--"], "discard-all">,
      HelpText<"Remove all local symbols except file and section symbols. Also "
               "remove all debug sections">;
def x : Flag<["-"], "x">,
        Alias<discard_all>,
        HelpText<"Alias for --discard-all">;

def regex
    : Flag<["--"], "regex">,
      HelpText<"Permit regular expressions in name comparison">;

def version : Flag<["--"], "version">,
              HelpText<"Print the version and exit.">;
def V : Flag<["-"], "V">,
        Alias<version>,
        HelpText<"Alias for --version">;

def wildcard
    : Flag<["--"], "wildcard">,
      HelpText<"Allow wildcard syntax for symbol-related flags. Incompatible "
               "with --regex. Allows using '*' to match any number of "
               "characters, '?' to match any single character, '\' to escape "
               "special characters, and '[]' to define character classes. "
               "Wildcards beginning with '!' will prevent a match, for example "
               "\"-N '*' -N '!x'\" will strip all symbols except for \"x\".">;
def w : Flag<["-"], "w">, Alias<wildcard>, HelpText<"Alias for --wildcard">;
