llvmc: put linker options in a separate OptList.

llvm-svn: 114427
This commit is contained in:
Mikhail Glushenkov 2010-09-21 11:57:04 +00:00
parent b68bd70665
commit 2294629636

View File

@ -35,8 +35,6 @@ def OptList : OptionList<[
(help "Stop after compilation, do not assemble")),
(switch_option "c",
(help "Compile and assemble, but do not link")),
(switch_option "pthread",
(help "Enable threads")),
(switch_option "m32",
(help "Generate code for a 32-bit environment"), (hidden)),
(switch_option "m64",
@ -45,18 +43,10 @@ def OptList : OptionList<[
(help "Relocation model: PIC"), (hidden)),
(switch_option "mdynamic-no-pic",
(help "Relocation model: dynamic-no-pic"), (hidden)),
(switch_option "shared",
(help "Create a DLL instead of the regular executable")),
(parameter_option "linker",
(help "Choose linker (possible values: gcc, g++)")),
(parameter_option "mtune",
(help "Target a specific CPU type"), (hidden), (forward_not_split)),
// TODO: Add a conditional compilation mechanism to make Darwin-only options
// like '-arch' really Darwin-only.
(parameter_option "arch",
(help "Compile for the specified target architecture"), (hidden)),
(parameter_option "march",
(help "A synonym for -mtune"), (hidden), (forward_not_split)),
(parameter_option "mcpu",
@ -73,14 +63,6 @@ def OptList : OptionList<[
(parameter_list_option "iquote",
(help "Search dir only for files requested with #inlcude \"file\""),
(hidden)),
(parameter_list_option "framework",
(help "Specifies a framework to link against")),
(parameter_list_option "weak_framework",
(help "Specifies a framework to weakly link against"), (hidden)),
(parameter_option "filelist", (hidden),
(help "Link the files listed in file")),
(prefix_list_option "F",
(help "Add a directory to framework search path")),
(prefix_list_option "I",
(help "Add a directory to include path")),
(prefix_list_option "D",
@ -93,10 +75,6 @@ def OptList : OptionList<[
(help "Pass options to assembler")),
(prefix_list_option "Wllc,", (comma_separated),
(help "Pass options to llc")),
(prefix_list_option "L",
(help "Add a directory to link path")),
(prefix_list_option "l",
(help "Search a library when linking")),
(prefix_list_option "Wl,",
(help "Pass options to linker")),
(parameter_list_option "Xlinker", (hidden),
@ -105,7 +83,56 @@ def OptList : OptionList<[
(help "Pass options to opt")),
(prefix_list_option "m",
(help "Enable or disable various extensions (-mmmx, -msse, etc.)"),
(hidden)),
(hidden))
]>;
def LinkerOptList : OptionList<[
(prefix_list_option "L",
(help "Add a directory to link path")),
(prefix_list_option "l",
(help "Search a library when linking")),
(parameter_option "filelist", (hidden),
(help "Link the files listed in file")),
(switch_option "nostartfiles",
(help "Do not use the standard system startup files when linking"),
(hidden)),
(switch_option "nodefaultlibs",
(help "Do not use the standard system libraries when linking"), (hidden)),
(switch_option "nostdlib",
(help
"Do not use the standard system startup files or libraries when linking"),
(hidden)),
(switch_option "pie",
(help "Produce a position independent executable"), (hidden)),
(switch_option "rdynamic",
(help "Add all symbols to the dynamic export table"), (hidden)),
(switch_option "s",
(help "Strip all symbols"), (hidden)),
(switch_option "static",
(help "Do not link against shared libraries"), (hidden)),
(switch_option "static-libgcc",
(help "Use static libgcc"), (hidden)),
(switch_option "shared",
(help "Create a DLL instead of the regular executable")),
(switch_option "shared-libgcc",
(help "Use shared libgcc"), (hidden)),
(parameter_option "T",
(help "Read linker script"), (hidden)),
(parameter_option "u",
(help "Start with undefined reference to SYMBOL"), (hidden)),
(switch_option "pthread",
(help "Enable threads")),
// TODO: Add a conditional compilation mechanism to make Darwin-only options
// like '-arch' really Darwin-only.
(parameter_option "arch",
(help "Compile for the specified target architecture"), (hidden)),
(prefix_list_option "F",
(help "Add a directory to framework search path")),
(parameter_list_option "framework",
(help "Specifies a framework to link against")),
(parameter_list_option "weak_framework",
(help "Specifies a framework to weakly link against"), (hidden)),
(switch_option "dynamiclib", (hidden),
(help "Produce a dynamic library")),
(switch_option "prebind", (hidden),
@ -137,12 +164,12 @@ def Preprocess : OptionPreprocessor<
// Tools
class llvm_gcc_based <string cmd_prefix, string in_lang,
class llvm_gcc_based <string cmd, string in_lang,
string E_ext, string out_lang> : Tool<
[(in_language in_lang),
(out_language "llvm-bitcode"),
(output_suffix out_lang),
(command cmd_prefix),
(command cmd),
(actions
(case
(and (not_empty "o"),
@ -261,11 +288,11 @@ def llc : Tool<
]>;
// Base class for linkers
class llvm_gcc_based_linker <string cmd_prefix, dag on_empty> : Tool<
class llvm_gcc_based_linker <string cmd, dag on_empty> : Tool<
[(in_language ["object-code", "static-library", "dynamic-library"]),
(out_language "executable"),
(output_suffix "out"),
(command cmd_prefix),
(command cmd),
(works_on_empty (case (and (not_empty "filelist"), on_empty), true,
(default), false)),
(join),
@ -282,7 +309,18 @@ class llvm_gcc_based_linker <string cmd_prefix, dag on_empty> : Tool<
(not_empty "l"), (forward "l"),
(not_empty "Xlinker"), (forward "Xlinker"),
(not_empty "Wl,"), (forward "Wl,"),
(switch_on "nostartfiles"), (forward "nostartfiles"),
(switch_on "nodefaultlibs"), (forward "nodefaultlibs"),
(switch_on "nostdlib"), (forward "nostdlib"),
(switch_on "pie"), (forward "pie"),
(switch_on "rdynamic"), (forward "rdynamic"),
(switch_on "s"), (forward "s"),
(switch_on "static"), (forward "static"),
(switch_on "static-libgcc"), (forward "static-libgcc"),
(switch_on "shared"), (forward "shared"),
(switch_on "shared-libgcc"), (forward "shared-libgcc"),
(not_empty "T"), (forward "T"),
(not_empty "u"), (forward "u"),
(switch_on "dynamiclib"), (forward "dynamiclib"),
(switch_on "prebind"), (forward "prebind"),
(switch_on "dead_strip"), (forward "dead_strip"),