| //===- 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; |
| } |