//===--- Types.def - Driver Type info ---------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the driver type information. Users of this file
// must define the TYPE macro to make use of this information.
//
//===----------------------------------------------------------------------===//

#ifndef TYPE
#error "Define TYPE prior to including this file!"
#endif

// TYPE(NAME, ID, PP_TYPE, TEMP_SUFFIX, FLAGS)

// The first value is the type name as a string; for types which can
// be user specified this should be the equivalent -x option.

// The second value is the type id, which will result in a
// clang::driver::types::TY_XX enum constant.

// The third value is that id of the type for preprocessed inputs of
// this type, or INVALID if this type is not preprocessed.

// The fourth value is the suffix to use when creating temporary files
// of this type, or null if unspecified.

// The fifth value is a string containing option flags. Valid values:
//  a - The type should only be assembled.
//  p - The type should only be precompiled.
//  u - The type can be user specified (with -x).
//  m - Precompiling this type produces a module file.
//  A - The type's temporary suffix should be appended when generating
//      outputs of this type.


// C family source language (with and without preprocessing).
TYPE("cpp-output",               PP_C,         INVALID,         "i",     "u")
TYPE("c",                        C,            PP_C,            "c",     "u")
TYPE("cl",                       CL,           PP_C,            "cl",    "u")
TYPE("cuda-cpp-output",          PP_CUDA,      INVALID,         "cui",   "u")
TYPE("cuda",                     CUDA,         PP_CUDA,         "cu",    "u")
TYPE("cuda",                     CUDA_DEVICE,  PP_CUDA,         "cu",    "")
TYPE("objective-c-cpp-output",   PP_ObjC,      INVALID,         "mi",    "u")
TYPE("objc-cpp-output",          PP_ObjC_Alias, INVALID,        "mi",    "u")
TYPE("objective-c",              ObjC,         PP_ObjC,         "m",     "u")
TYPE("c++-cpp-output",           PP_CXX,       INVALID,         "ii",    "u")
TYPE("c++",                      CXX,          PP_CXX,          "cpp",   "u")
TYPE("objective-c++-cpp-output", PP_ObjCXX,    INVALID,         "mii",   "u")
TYPE("objc++-cpp-output",        PP_ObjCXX_Alias, INVALID,      "mii",   "u")
TYPE("objective-c++",            ObjCXX,       PP_ObjCXX,       "mm",    "u")
TYPE("renderscript",             RenderScript, PP_C,            "rs",    "u")

// C family input files to precompile.
TYPE("c-header-cpp-output",      PP_CHeader,   INVALID,         "i",     "p")
TYPE("c-header",                 CHeader,      PP_CHeader,      "h",     "pu")
TYPE("cl-header",                CLHeader,     PP_CHeader,      "h",     "pu")
TYPE("objective-c-header-cpp-output", PP_ObjCHeader, INVALID,   "mi",    "p")
TYPE("objective-c-header",       ObjCHeader,   PP_ObjCHeader,   "h",     "pu")
TYPE("c++-header-cpp-output",    PP_CXXHeader, INVALID,         "ii",    "p")
TYPE("c++-header",               CXXHeader,    PP_CXXHeader,    "hh",    "pu")
TYPE("objective-c++-header-cpp-output", PP_ObjCXXHeader, INVALID, "mii", "p")
TYPE("objective-c++-header",     ObjCXXHeader, PP_ObjCXXHeader, "h",     "pu")
TYPE("c++-module",               CXXModule,    PP_CXXModule,    "cppm",  "mu")
TYPE("c++-module-cpp-output",    PP_CXXModule, INVALID,         "iim",   "m")

// Other languages.
TYPE("ada",                      Ada,          INVALID,         nullptr, "u")
TYPE("assembler",                PP_Asm,       INVALID,         "s",     "au")
TYPE("assembler-with-cpp",       Asm,          PP_Asm,          "S",     "au")
TYPE("f95",                      PP_Fortran,   INVALID,         nullptr, "u")
TYPE("f95-cpp-input",            Fortran,      PP_Fortran,      nullptr, "u")
TYPE("java",                     Java,         INVALID,         nullptr, "u")

// LLVM IR/LTO types. We define separate types for IR and LTO because LTO
// outputs should use the standard suffixes.
TYPE("ir",                       LLVM_IR,      INVALID,         "ll",    "u")
TYPE("ir",                       LLVM_BC,      INVALID,         "bc",    "u")
TYPE("lto-ir",                   LTO_IR,       INVALID,         "s",     "")
TYPE("lto-bc",                   LTO_BC,       INVALID,         "o",     "")

// Misc.
TYPE("ast",                      AST,          INVALID,         "ast",   "u")
TYPE("pcm",                      ModuleFile,   INVALID,         "pcm",   "u")
TYPE("plist",                    Plist,        INVALID,         "plist", "")
TYPE("rewritten-objc",           RewrittenObjC,INVALID,         "cpp",   "")
TYPE("rewritten-legacy-objc",    RewrittenLegacyObjC,INVALID,   "cpp",   "")
TYPE("remap",                    Remap,        INVALID,         "remap", "")
TYPE("precompiled-header",       PCH,          INVALID,         "gch",   "A")
TYPE("object",                   Object,       INVALID,         "o",     "")
TYPE("treelang",                 Treelang,     INVALID,         nullptr, "u")
TYPE("image",                    Image,        INVALID,         "out",   "")
TYPE("dSYM",                     dSYM,         INVALID,         "dSYM",  "A")
TYPE("dependencies",             Dependencies, INVALID,         "d",     "")
TYPE("cuda-fatbin",              CUDA_FATBIN,  INVALID,         "fatbin","A")
TYPE("none",                     Nothing,      INVALID,         nullptr, "u")
