//===- 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 l> { list properties = l; } // Special Tool instance - graph root. def root : Tool<[]>; // 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; // Possible edge properties def switch_on; def parameter_equals; def element_in_list; def if_input_languages_contain; // Edge property combinators. def and; def or; // Map from suffixes to language names class LangToSuffixes lst> { string lang = str; list suffixes = lst; } class LanguageMap lst> { list map = lst; } // Compilation graph class EdgeBase lst> { Tool a = t1; Tool b = t2; list props = lst; } class Edge : EdgeBase; // Edge and DefaultEdge are synonyms. class DefaultEdge : EdgeBase; // Optionally enabled edge. class OptionalEdge lst> : EdgeBase; class CompilationGraph lst> { list edges = lst; }