1 //===- Tools.td - Tools description for LLVMC2 -------------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains descriptions of the various build tools run by llvmc2.
12 //===----------------------------------------------------------------------===//
14 def llvm_gcc_c : Tool<
16 (out_language "llvm-bitcode"),
20 (case (not_empty "o"),
21 "llvm-gcc -E -x c++ $INFILE -o $OUTFILE",
23 "llvm-gcc -E -x c++ $INFILE"),
25 "llvm-gcc -c -x c $INFILE -o $OUTFILE -emit-llvm")),
26 (switch_option "E", (stop_compilation),
27 (help "Stop after the preprocessing stage, do not run the compiler")),
31 def llvm_gcc_cpp : Tool<
33 (out_language "llvm-bitcode"),
37 (case (not_empty "o"),
38 "llvm-g++ -E -x c++ $INFILE -o $OUTFILE",
40 "llvm-g++ -E -x c++ $INFILE"),
42 "llvm-g++ -c -x c++ $INFILE -o $OUTFILE -emit-llvm")),
43 (switch_option "E", (stop_compilation)),
48 [(in_language "llvm-bitcode"),
49 (out_language "llvm-bitcode"),
50 (switch_option "opt", (help "Enable opt")),
52 (cmd_line "opt -f $INFILE -o $OUTFILE")
56 [(in_language "llvm-assembler"),
57 (out_language "llvm-bitcode"),
59 (cmd_line "llvm-as $INFILE -o $OUTFILE")
63 [(in_language "llvm-bitcode"),
64 (out_language "assembler"),
66 (switch_option "S", (stop_compilation),
67 (help "Stop after compilation, do not assemble")),
68 (cmd_line "llc -f $INFILE -o $OUTFILE")
71 def llvm_gcc_assembler : Tool<
72 [(in_language "assembler"),
73 (out_language "object-code"),
75 (cmd_line "llvm-gcc -c -x assembler $INFILE -o $OUTFILE"),
76 (switch_option "c", (stop_compilation),
77 (help "Compile and assemble, but do not link")),
78 (prefix_list_option "Wa,", (unpack_values), (help "Pass options to assembler"))
82 def llvm_gcc_linker : Tool<
83 [(in_language "object-code"),
84 (out_language "executable"),
85 (output_suffix "out"),
86 (cmd_line "llvm-gcc $INFILE -o $OUTFILE"),
88 (prefix_list_option "L", (forward), (help "Add a directory to link path")),
89 (prefix_list_option "l", (forward), (help "Search a library when linking")),
90 (prefix_list_option "Wl,", (unpack_values), (help "Pass options to linker"))
93 // Alternative linker for C++
94 def llvm_gcc_cpp_linker : Tool<
95 [(in_language "object-code"),
96 (out_language "executable"),
97 (output_suffix "out"),
98 (cmd_line "llvm-g++ $INFILE -o $OUTFILE"),
100 (parameter_option "linker",
101 (help "Choose linker (possible values: gcc, g++)")),
102 (prefix_list_option "L", (forward)),
103 (prefix_list_option "l", (forward)),
104 (prefix_list_option "Wl,", (unpack_values))
109 def LanguageMap : LanguageMap<
110 [LangToSuffixes<"c++", ["cc", "cp", "cxx", "cpp", "CPP", "c++", "C"]>,
111 LangToSuffixes<"c", ["c"]>,
112 LangToSuffixes<"assembler", ["s"]>,
113 LangToSuffixes<"llvm-assembler", ["ll"]>,
114 LangToSuffixes<"llvm-bitcode", ["bc"]>,
115 LangToSuffixes<"object-code", ["o"]>,
116 LangToSuffixes<"executable", ["out"]>