blob: f69c290dff5e193a247cc7aba50ccb28d1e33e97 [file] [log] [blame]
Anton Korobeynikove9ffb5b2008-03-23 08:57:20 +00001//===- Tools.td - Tools description for the LLVMCC --------*- tablegen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains descriptions of the various build tools run by llvmcc.
11//
12//===----------------------------------------------------------------------===//
13
14// Open issue: should we use DAG lists in Tool specifications
15// or change to something like
16// def LLVMGccC : < Tool<
17// [ InLanguage<"c">,
18// PrefixListOption<"Wl", [UnpackValues, PropertyName<Arg>, ...]>
19// ...] ?
20// DAG lists look more aesthetically pleasing to me.
21
22def llvm_gcc_c : Tool<
23[(in_language "c"),
24 (out_language "llvm-assembler"),
25 (output_suffix "bc"),
26 (cmd_line "llvm-gcc -c $INFILE -o $OUTFILE -emit-llvm"),
27 (sink)
28]>;
29
30def llvm_gcc_cpp : Tool<
31[(in_language "c++"),
32 (out_language "llvm-assembler"),
33 (output_suffix "bc"),
34 (cmd_line "llvm-g++ -c $INFILE -o $OUTFILE -emit-llvm"),
35 (sink)
36]>;
37
38def opt : Tool<
39[(in_language "llvm-bitcode"),
40 (out_language "llvm-bitcode"),
41 (output_suffix "bc"),
42 (cmd_line "opt $INFILE -o $OUTFILE")
43]>;
44
45def llvm_as : Tool<
46[(in_language "llvm-assembler"),
47 (out_language "llvm-bitcode"),
48 (output_suffix "bc"),
49 (cmd_line "llvm-as $INFILE -o $OUTFILE")
50]>;
51
52def llc : Tool<
53[(in_language "llvm-bitcode"),
54 (out_language "assembler"),
55 (output_suffix "s"),
56 (cmd_line "llc $INFILE -o $OUTFILE")
57]>;
58
59def llvm_gcc_assembler : Tool<
60[(in_language "assembler"),
61 (out_language "object-code"),
62 (output_suffix "o"),
63 (cmd_line "llvm-gcc -c $INFILE -o $OUTFILE"),
64 (prefix_list_option "Wa", (unpack_values), (help "pass options to assembler"))
65]>;
66
67def llvm_gcc_linker : Tool<
68[(in_language "object-code"),
69 (out_language "executable"),
70 (output_suffix "out"),
71 (cmd_line "llvm-gcc $INFILE -o $OUTFILE"),
72 (join),
73 (prefix_list_option "L", (forward), (help "add a directory to link path")),
74 (prefix_list_option "l", (forward), (help "search a library when linking")),
75 (prefix_list_option "Wl", (unpack_values), (help "pass options to linker"))
76]>;
77
78// Language map
79
80def LanguageMap : LanguageMap<
81 [LangToSuffixes<"c++", ["cc", "cp", "cxx", "cpp", "CPP", "c++", "C"]>,
82 LangToSuffixes<"c", ["c"]>,
83 LangToSuffixes<"assembler", ["s"]>,
84 LangToSuffixes<"llvm-assembler", ["ll"]>,
85 LangToSuffixes<"llvm-bitcode", ["bc"]>,
86 LangToSuffixes<"object-code", ["o"]>,
87 LangToSuffixes<"executable", ["out"]>]>;