import("//lldb/utils/TableGen/lldb_tablegen.gni")

lldb_tablegen("LanguageCPlusPlusProperties") {
  args = [ "-gen-lldb-property-defs" ]
}

lldb_tablegen("LanguageCPlusPlusPropertiesEnum") {
  args = [ "-gen-lldb-property-enum-defs" ]
  td_file = "LanguageCPlusPlusProperties.td"
}

static_library("CPlusPlus") {
  output_name = "lldbPluginCPlusPlusLanguage"
  configs += [
    "//llvm/utils/gn/build:clang_code",
    "//llvm/utils/gn/build:lldb_code",
  ]
  deps = [
    ":LanguageCPlusPlusProperties",
    ":LanguageCPlusPlusPropertiesEnum",
    "//lldb/source/Core",
    "//lldb/source/DataFormatters",
    "//lldb/source/Host",
    "//lldb/source/Plugins/Language/ClangCommon",
    "//lldb/source/Plugins/LanguageRuntime/CPlusPlus",
    "//lldb/source/Plugins/TypeSystem/Clang",
    "//lldb/source/Symbol",
    "//lldb/source/Target",
    "//lldb/source/Utility",
    "//lldb/source/ValueObject",
    "//llvm/lib/Support",
  ]

  # Reaches into Plugins/Language/ClangCommon.
  include_dirs = [ "//lldb/source" ]
  sources = [
    "BlockPointer.cpp",
    "CPlusPlusLanguage.cpp",
    "CPlusPlusNameParser.cpp",
    "Coroutines.cpp",
    "CxxStringTypes.cpp",
    "Generic.cpp",
    "GenericBitset.cpp",
    "GenericInitializerList.cpp",
    "GenericList.cpp",
    "GenericOptional.cpp",
    "LibCxx.cpp",
    "LibCxxAtomic.cpp",
    "LibCxxMap.cpp",
    "LibCxxProxyArray.cpp",
    "LibCxxQueue.cpp",
    "LibCxxRangesRefView.cpp",
    "LibCxxSliceArray.cpp",
    "LibCxxSpan.cpp",
    "LibCxxTuple.cpp",
    "LibCxxUnorderedMap.cpp",
    "LibCxxValarray.cpp",
    "LibCxxVariant.cpp",
    "LibCxxVector.cpp",
    "LibStdcpp.cpp",
    "LibStdcppTuple.cpp",
    "LibStdcppUniquePointer.cpp",
    "MSVCUndecoratedNameParser.cpp",
    "MsvcStl.cpp",
    "MsvcStlAtomic.cpp",
    "MsvcStlDeque.cpp",
    "MsvcStlSmartPointer.cpp",
    "MsvcStlTree.cpp",
    "MsvcStlTuple.cpp",
    "MsvcStlUnordered.cpp",
    "MsvcStlVariant.cpp",
    "MsvcStlVector.cpp",
  ]
}
