blob: 15b9264d88e15fb97818e8cc9af6afa2c4db0591 [file] [log] [blame]
Anton Korobeynikove9ffb5b2008-03-23 08:57:20 +00001//===- Tools.td - Common definitions for 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 common definitions used in llvmcc tool description files.
11//
12//===----------------------------------------------------------------------===//
13
14class Tool<list<dag> l> {
15 list<dag> properties = l;
16}
17
18// Possible Tool properties
19
20def in_language;
21def out_language;
22def output_suffix;
23def cmd_line;
24def join;
25def sink;
26
27// Possible option types
28
29def switch_option;
30def parameter_option;
31def parameter_list_option;
32def prefix_option;
33def prefix_list_option;
34
35// Possible option properties
36
37def append_cmd;
38def forward;
39def stop_compilation;
40def unpack_values;
41def help;
42def required;
43
44// Map from suffixes to language names
45
46class LangToSuffixes<string str, list<string> lst> {
47 string lang = str;
48 list<string> suffixes = lst;
49}
50
51class LanguageMap<list<LangToSuffixes> lst> {
52 list<LangToSuffixes> map = lst;
53}
54
55// Toolchain classes
56
57class ToolChain <list<Tool> lst> {
58 list <Tool> tools = lst;
59}
60
61class ToolChains <list<ToolChain> lst> {
62 list<ToolChain> chains = lst;
63}