//===--- Types.def - Driver Type info ---------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// 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("hip-cpp-output",           PP_HIP,       INVALID,         "cui",   "u")
TYPE("hip",                      HIP,          PP_HIP,          "cu",    "u")
TYPE("hip",                      HIP_DEVICE,   PP_HIP,          "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("ifs",                      IFS,          INVALID,         "ifs",   "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("hip-fatbin",               HIP_FATBIN,   INVALID,         "hipfb", "A")
TYPE("none",                     Nothing,      INVALID,         nullptr, "u")
