aboutsummaryrefslogtreecommitdiff
path: root/tools/llvmc2/Common.td
blob: 15b9264d88e15fb97818e8cc9af6afa2c4db0591 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//===- Tools.td - Common definitions for LLVMCC  -----------*- tablegen -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file contains common definitions used in llvmcc tool description files.
//
//===----------------------------------------------------------------------===//

class Tool<list<dag> l> {
      list<dag> properties = l;
}

// Possible Tool properties

def in_language;
def out_language;
def output_suffix;
def cmd_line;
def join;
def sink;

// Possible option types

def switch_option;
def parameter_option;
def parameter_list_option;
def prefix_option;
def prefix_list_option;

// Possible option properties

def append_cmd;
def forward;
def stop_compilation;
def unpack_values;
def help;
def required;

// Map from suffixes to language names

class LangToSuffixes<string str, list<string> lst> {
      string lang = str;
      list<string> suffixes = lst;
}

class LanguageMap<list<LangToSuffixes> lst> {
      list<LangToSuffixes> map = lst;
}

// Toolchain classes

class ToolChain <list<Tool> lst> {
      list <Tool> tools = lst;
}

class ToolChains <list<ToolChain> lst> {
      list<ToolChain> chains = lst;
}