X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=tools%2Fllvmc2%2FTools.td;h=4c04f3c4c2f3aae9fe9aa7ad53d4488a1cfef8ff;hb=84701836bfb1889e2e26e361ebd5d29d972ab396;hp=f69c290dff5e193a247cc7aba50ccb28d1e33e97;hpb=ac67b7ea8fcd530995d7aefd2ad0f04543789855;p=oota-llvm.git diff --git a/tools/llvmc2/Tools.td b/tools/llvmc2/Tools.td index f69c290dff5..4c04f3c4c2f 100644 --- a/tools/llvmc2/Tools.td +++ b/tools/llvmc2/Tools.td @@ -11,35 +11,55 @@ // //===----------------------------------------------------------------------===// -// Open issue: should we use DAG lists in Tool specifications +// TOTHINK: Open issue: should we use DAG lists in Tool specifications // or change to something like + // def LLVMGccC : < Tool< // [ InLanguage<"c">, // PrefixListOption<"Wl", [UnpackValues, PropertyName, ...]> // ...] ? + // DAG lists look more aesthetically pleasing to me. def llvm_gcc_c : Tool< [(in_language "c"), - (out_language "llvm-assembler"), + (out_language "llvm-bitcode"), (output_suffix "bc"), - (cmd_line "llvm-gcc -c $INFILE -o $OUTFILE -emit-llvm"), + (cmd_line (case + (switch_on "E"), + (case (not_empty "o"), + "llvm-gcc -E -x c++ $INFILE -o $OUTFILE", + (default), + "llvm-gcc -E -x c++ $INFILE"), + (default), + "llvm-gcc -c -x c $INFILE -o $OUTFILE -emit-llvm")), + (switch_option "E", (stop_compilation), + (help "Stop after the preprocessing stage, do not run the compiler")), (sink) ]>; def llvm_gcc_cpp : Tool< [(in_language "c++"), - (out_language "llvm-assembler"), + (out_language "llvm-bitcode"), (output_suffix "bc"), - (cmd_line "llvm-g++ -c $INFILE -o $OUTFILE -emit-llvm"), + (cmd_line (case + (switch_on "E"), + (case (not_empty "o"), + "llvm-g++ -E -x c++ $INFILE -o $OUTFILE", + (default), + "llvm-g++ -E -x c++ $INFILE"), + (default), + "llvm-g++ -c -x c++ $INFILE -o $OUTFILE -emit-llvm")), + (switch_option "E", (stop_compilation)), (sink) ]>; def opt : Tool< [(in_language "llvm-bitcode"), (out_language "llvm-bitcode"), + (switch_option "opt", (help "Enable opt")), (output_suffix "bc"), - (cmd_line "opt $INFILE -o $OUTFILE") + (cmd_line "opt -f $INFILE -o $OUTFILE") ]>; def llvm_as : Tool< @@ -53,26 +73,45 @@ def llc : Tool< [(in_language "llvm-bitcode"), (out_language "assembler"), (output_suffix "s"), - (cmd_line "llc $INFILE -o $OUTFILE") + (switch_option "S", (stop_compilation), + (help "Stop after compilation, do not assemble")), + (cmd_line "llc -f $INFILE -o $OUTFILE") ]>; def llvm_gcc_assembler : Tool< [(in_language "assembler"), (out_language "object-code"), (output_suffix "o"), - (cmd_line "llvm-gcc -c $INFILE -o $OUTFILE"), - (prefix_list_option "Wa", (unpack_values), (help "pass options to assembler")) + (cmd_line "llvm-gcc -c -x assembler $INFILE -o $OUTFILE"), + (switch_option "c", (stop_compilation), + (help "Compile and assemble, but do not link")), + (prefix_list_option "Wa,", (unpack_values), (help "Pass options to assembler")) ]>; +// Default linker def llvm_gcc_linker : Tool< [(in_language "object-code"), (out_language "executable"), (output_suffix "out"), (cmd_line "llvm-gcc $INFILE -o $OUTFILE"), (join), - (prefix_list_option "L", (forward), (help "add a directory to link path")), - (prefix_list_option "l", (forward), (help "search a library when linking")), - (prefix_list_option "Wl", (unpack_values), (help "pass options to linker")) + (prefix_list_option "L", (forward), (help "Add a directory to link path")), + (prefix_list_option "l", (forward), (help "Search a library when linking")), + (prefix_list_option "Wl,", (unpack_values), (help "Pass options to linker")) +]>; + +// Alternative linker for C++ +def llvm_gcc_cpp_linker : Tool< +[(in_language "object-code"), + (out_language "executable"), + (output_suffix "out"), + (cmd_line "llvm-g++ $INFILE -o $OUTFILE"), + (join), + (parameter_option "linker", + (help "Choose linker (possible values: gcc, g++)")), + (prefix_list_option "L", (forward)), + (prefix_list_option "l", (forward)), + (prefix_list_option "Wl,", (unpack_values)) ]>; // Language map @@ -84,4 +123,5 @@ def LanguageMap : LanguageMap< LangToSuffixes<"llvm-assembler", ["ll"]>, LangToSuffixes<"llvm-bitcode", ["bc"]>, LangToSuffixes<"object-code", ["o"]>, - LangToSuffixes<"executable", ["out"]>]>; + LangToSuffixes<"executable", ["out"]> + ]>;