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 03f0e2b5b4
commit 3240ff9302
1 changed files with 65 additions and 27 deletions

View File

@ -35,8 +35,6 @@ def OptList : OptionList<[
(help "Stop after compilation, do not assemble")), (help "Stop after compilation, do not assemble")),
(switch_option "c", (switch_option "c",
(help "Compile and assemble, but do not link")), (help "Compile and assemble, but do not link")),
(switch_option "pthread",
(help "Enable threads")),
(switch_option "m32", (switch_option "m32",
(help "Generate code for a 32-bit environment"), (hidden)), (help "Generate code for a 32-bit environment"), (hidden)),
(switch_option "m64", (switch_option "m64",
@ -45,18 +43,10 @@ def OptList : OptionList<[
(help "Relocation model: PIC"), (hidden)), (help "Relocation model: PIC"), (hidden)),
(switch_option "mdynamic-no-pic", (switch_option "mdynamic-no-pic",
(help "Relocation model: dynamic-no-pic"), (hidden)), (help "Relocation model: dynamic-no-pic"), (hidden)),
(switch_option "shared",
(help "Create a DLL instead of the regular executable")),
(parameter_option "linker", (parameter_option "linker",
(help "Choose linker (possible values: gcc, g++)")), (help "Choose linker (possible values: gcc, g++)")),
(parameter_option "mtune", (parameter_option "mtune",
(help "Target a specific CPU type"), (hidden), (forward_not_split)), (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", (parameter_option "march",
(help "A synonym for -mtune"), (hidden), (forward_not_split)), (help "A synonym for -mtune"), (hidden), (forward_not_split)),
(parameter_option "mcpu", (parameter_option "mcpu",
@ -73,14 +63,6 @@ def OptList : OptionList<[
(parameter_list_option "iquote", (parameter_list_option "iquote",
(help "Search dir only for files requested with #inlcude \"file\""), (help "Search dir only for files requested with #inlcude \"file\""),
(hidden)), (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", (prefix_list_option "I",
(help "Add a directory to include path")), (help "Add a directory to include path")),
(prefix_list_option "D", (prefix_list_option "D",
@ -93,10 +75,6 @@ def OptList : OptionList<[
(help "Pass options to assembler")), (help "Pass options to assembler")),
(prefix_list_option "Wllc,", (comma_separated), (prefix_list_option "Wllc,", (comma_separated),
(help "Pass options to llc")), (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,", (prefix_list_option "Wl,",
(help "Pass options to linker")), (help "Pass options to linker")),
(parameter_list_option "Xlinker", (hidden), (parameter_list_option "Xlinker", (hidden),
@ -105,7 +83,56 @@ def OptList : OptionList<[
(help "Pass options to opt")), (help "Pass options to opt")),
(prefix_list_option "m", (prefix_list_option "m",
(help "Enable or disable various extensions (-mmmx, -msse, etc.)"), (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), (switch_option "dynamiclib", (hidden),
(help "Produce a dynamic library")), (help "Produce a dynamic library")),
(switch_option "prebind", (hidden), (switch_option "prebind", (hidden),
@ -137,12 +164,12 @@ def Preprocess : OptionPreprocessor<
// Tools // 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< string E_ext, string out_lang> : Tool<
[(in_language in_lang), [(in_language in_lang),
(out_language "llvm-bitcode"), (out_language "llvm-bitcode"),
(output_suffix out_lang), (output_suffix out_lang),
(command cmd_prefix), (command cmd),
(actions (actions
(case (case
(and (not_empty "o"), (and (not_empty "o"),
@ -261,11 +288,11 @@ def llc : Tool<
]>; ]>;
// Base class for linkers // 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"]), [(in_language ["object-code", "static-library", "dynamic-library"]),
(out_language "executable"), (out_language "executable"),
(output_suffix "out"), (output_suffix "out"),
(command cmd_prefix), (command cmd),
(works_on_empty (case (and (not_empty "filelist"), on_empty), true, (works_on_empty (case (and (not_empty "filelist"), on_empty), true,
(default), false)), (default), false)),
(join), (join),
@ -282,7 +309,18 @@ class llvm_gcc_based_linker <string cmd_prefix, dag on_empty> : Tool<
(not_empty "l"), (forward "l"), (not_empty "l"), (forward "l"),
(not_empty "Xlinker"), (forward "Xlinker"), (not_empty "Xlinker"), (forward "Xlinker"),
(not_empty "Wl,"), (forward "Wl,"), (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"), (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 "dynamiclib"), (forward "dynamiclib"),
(switch_on "prebind"), (forward "prebind"), (switch_on "prebind"), (forward "prebind"),
(switch_on "dead_strip"), (forward "dead_strip"), (switch_on "dead_strip"), (forward "dead_strip"),