blob: c06737238b3bb456fe785f1653e79f99d4c25c66 [file] [log] [blame]
Mikhail Glushenkov163dc1e2008-05-30 06:16:32 +00001// A (first stab at a) replacement for the Clang's ccc script.
2// To compile, use this command:
3// make TOOLNAME=ccc GRAPH=examples/Clang.td
4
5include "Common.td"
6
Mikhail Glushenkov163dc1e2008-05-30 06:16:32 +00007def clang : Tool<
Mikhail Glushenkovffcf3a12008-05-30 06:18:16 +00008[(in_language ["c", "c++", "objective-c"]),
Mikhail Glushenkov163dc1e2008-05-30 06:16:32 +00009 (out_language "llvm-bitcode"),
10 (output_suffix "bc"),
11 (cmd_line (case (switch_on "E"), "clang -E $INFILE -o $OUTFILE",
12 (default), "clang -emit-llvm-bc $INFILE -o $OUTFILE")),
13 (switch_option "E", (stop_compilation), (output_suffix "i"),
14 (help "Stop after the preprocessing stage, do not run the compiler")),
15 (sink)
16]>;
17
18// Default linker
19def llvm_ld : Tool<
20[(in_language "llvm-bitcode"),
21 (out_language "executable"),
22 (output_suffix "out"),
23 (cmd_line "llvm-ld -native -disable-internalize $INFILE -o $OUTFILE"),
24 (prefix_list_option "L", (forward), (help "Specify a library search path")),
25 (join)
26]>;
27
28// Language map
29
30def LanguageMap : LanguageMap<
31 [LangToSuffixes<"c++", ["cc", "cp", "cxx", "cpp", "CPP", "c++", "C"]>,
32 LangToSuffixes<"c", ["c"]>,
33 LangToSuffixes<"objective-c", ["m"]>,
34 LangToSuffixes<"c-cpp-output", ["i"]>,
35 LangToSuffixes<"objective-c-cpp-output", ["mi"]>
36 ]>;
37
38// Compilation graph
39
40def CompilationGraph : CompilationGraph<[
41 Edge<root, clang>,
42 Edge<clang, llvm_ld>
43 ]>;
44