109467b48Spatrickmacro(add_pdb_impl_folder group)
209467b48Spatrick  list(APPEND PDB_IMPL_SOURCES ${ARGN})
309467b48Spatrick  source_group(${group} FILES ${ARGN})
409467b48Spatrickendmacro()
509467b48Spatrick
609467b48Spatrickif(LLVM_ENABLE_DIA_SDK)
7*d415bd75Srobert  include_directories(SYSTEM ${MSVC_DIA_SDK_DIR}/include)
809467b48Spatrick  set(LIBPDB_LINK_FOLDERS "${MSVC_DIA_SDK_DIR}\\lib")
973471bf0Spatrick
1073471bf0Spatrick  if ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64")
1173471bf0Spatrick    set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\arm64")
1273471bf0Spatrick  elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm")
1373471bf0Spatrick    set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\arm")
1473471bf0Spatrick  elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
1509467b48Spatrick    set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\amd64")
1609467b48Spatrick  endif()
1709467b48Spatrick  file(TO_CMAKE_PATH "${LIBPDB_LINK_FOLDERS}\\diaguids.lib" LIBPDB_ADDITIONAL_LIBRARIES)
1809467b48Spatrick
1909467b48Spatrick  add_pdb_impl_folder(DIA
2009467b48Spatrick    DIA/DIADataStream.cpp
2109467b48Spatrick    DIA/DIAEnumDebugStreams.cpp
2209467b48Spatrick    DIA/DIAEnumFrameData.cpp
2309467b48Spatrick    DIA/DIAEnumInjectedSources.cpp
2409467b48Spatrick    DIA/DIAEnumLineNumbers.cpp
2509467b48Spatrick    DIA/DIAEnumSectionContribs.cpp
2609467b48Spatrick    DIA/DIAEnumSourceFiles.cpp
2709467b48Spatrick    DIA/DIAEnumSymbols.cpp
2809467b48Spatrick    DIA/DIAEnumTables.cpp
2909467b48Spatrick    DIA/DIAError.cpp
3009467b48Spatrick    DIA/DIAFrameData.cpp
3109467b48Spatrick    DIA/DIAInjectedSource.cpp
3209467b48Spatrick    DIA/DIALineNumber.cpp
3309467b48Spatrick    DIA/DIARawSymbol.cpp
3409467b48Spatrick    DIA/DIASectionContrib.cpp
3509467b48Spatrick    DIA/DIASession.cpp
3609467b48Spatrick    DIA/DIASourceFile.cpp
3709467b48Spatrick    DIA/DIATable.cpp
3809467b48Spatrick    )
3909467b48Spatrick
4009467b48Spatrick    set(LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB/DIA")
4109467b48Spatrickendif()
4209467b48Spatrick
4309467b48Spatrickadd_pdb_impl_folder(Native
4409467b48Spatrick  Native/DbiModuleDescriptor.cpp
4509467b48Spatrick  Native/DbiModuleDescriptorBuilder.cpp
4609467b48Spatrick  Native/DbiModuleList.cpp
4709467b48Spatrick  Native/DbiStream.cpp
4809467b48Spatrick  Native/DbiStreamBuilder.cpp
4909467b48Spatrick  Native/EnumTables.cpp
50*d415bd75Srobert  Native/FormatUtil.cpp
5109467b48Spatrick  Native/GlobalsStream.cpp
5209467b48Spatrick  Native/Hash.cpp
5309467b48Spatrick  Native/HashTable.cpp
5409467b48Spatrick  Native/InfoStream.cpp
5509467b48Spatrick  Native/InfoStreamBuilder.cpp
5609467b48Spatrick  Native/InjectedSourceStream.cpp
57*d415bd75Srobert  Native/InputFile.cpp
58*d415bd75Srobert  Native/LinePrinter.cpp
5909467b48Spatrick  Native/ModuleDebugStream.cpp
6009467b48Spatrick  Native/NativeCompilandSymbol.cpp
6109467b48Spatrick  Native/NativeEnumGlobals.cpp
6209467b48Spatrick  Native/NativeEnumInjectedSources.cpp
63097a140dSpatrick  Native/NativeEnumLineNumbers.cpp
6409467b48Spatrick  Native/NativeEnumModules.cpp
6509467b48Spatrick  Native/NativeEnumTypes.cpp
6673471bf0Spatrick  Native/NativeEnumSymbols.cpp
6709467b48Spatrick  Native/NativeExeSymbol.cpp
68097a140dSpatrick  Native/NativeFunctionSymbol.cpp
6973471bf0Spatrick  Native/NativeInlineSiteSymbol.cpp
70097a140dSpatrick  Native/NativeLineNumber.cpp
71097a140dSpatrick  Native/NativePublicSymbol.cpp
7209467b48Spatrick  Native/NativeRawSymbol.cpp
73097a140dSpatrick  Native/NativeSourceFile.cpp
7409467b48Spatrick  Native/NativeSymbolEnumerator.cpp
7509467b48Spatrick  Native/NativeTypeArray.cpp
7609467b48Spatrick  Native/NativeTypeBuiltin.cpp
7709467b48Spatrick  Native/NativeTypeEnum.cpp
7809467b48Spatrick  Native/NativeTypeFunctionSig.cpp
7909467b48Spatrick  Native/NativeTypePointer.cpp
8009467b48Spatrick  Native/NativeTypeTypedef.cpp
8109467b48Spatrick  Native/NativeTypeUDT.cpp
8209467b48Spatrick  Native/NativeTypeVTShape.cpp
8309467b48Spatrick  Native/NamedStreamMap.cpp
8409467b48Spatrick  Native/NativeSession.cpp
8509467b48Spatrick  Native/PDBFile.cpp
8609467b48Spatrick  Native/PDBFileBuilder.cpp
8709467b48Spatrick  Native/PDBStringTable.cpp
8809467b48Spatrick  Native/PDBStringTableBuilder.cpp
8909467b48Spatrick  Native/PublicsStream.cpp
9009467b48Spatrick  Native/GSIStreamBuilder.cpp
9109467b48Spatrick  Native/RawError.cpp
9209467b48Spatrick  Native/SymbolCache.cpp
9309467b48Spatrick  Native/SymbolStream.cpp
9409467b48Spatrick  Native/TpiHashing.cpp
9509467b48Spatrick  Native/TpiStream.cpp
9609467b48Spatrick  Native/TpiStreamBuilder.cpp
9709467b48Spatrick  )
9809467b48Spatrick
9909467b48Spatricklist(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB/Native")
10009467b48Spatricklist(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB")
10109467b48Spatrick
10209467b48Spatrickadd_llvm_component_library(LLVMDebugInfoPDB
10309467b48Spatrick  GenericError.cpp
10409467b48Spatrick  IPDBSourceFile.cpp
10509467b48Spatrick  PDB.cpp
10609467b48Spatrick  PDBContext.cpp
10709467b48Spatrick  PDBExtras.cpp
10809467b48Spatrick  PDBInterfaceAnchors.cpp
10909467b48Spatrick  PDBSymbol.cpp
11009467b48Spatrick  PDBSymbolAnnotation.cpp
11109467b48Spatrick  PDBSymbolBlock.cpp
11209467b48Spatrick  PDBSymbolCompiland.cpp
11309467b48Spatrick  PDBSymbolCompilandDetails.cpp
11409467b48Spatrick  PDBSymbolCompilandEnv.cpp
11509467b48Spatrick  PDBSymbolCustom.cpp
11609467b48Spatrick  PDBSymbolData.cpp
11709467b48Spatrick  PDBSymbolExe.cpp
11809467b48Spatrick  PDBSymbolFunc.cpp
11909467b48Spatrick  PDBSymbolFuncDebugEnd.cpp
12009467b48Spatrick  PDBSymbolFuncDebugStart.cpp
12109467b48Spatrick  PDBSymbolLabel.cpp
12209467b48Spatrick  PDBSymbolPublicSymbol.cpp
12309467b48Spatrick  PDBSymbolThunk.cpp
12409467b48Spatrick  PDBSymbolTypeArray.cpp
12509467b48Spatrick  PDBSymbolTypeBaseClass.cpp
12609467b48Spatrick  PDBSymbolTypeBuiltin.cpp
12709467b48Spatrick  PDBSymbolTypeCustom.cpp
12809467b48Spatrick  PDBSymbolTypeDimension.cpp
12909467b48Spatrick  PDBSymbolTypeEnum.cpp
13009467b48Spatrick  PDBSymbolTypeFriend.cpp
13109467b48Spatrick  PDBSymbolTypeFunctionArg.cpp
13209467b48Spatrick  PDBSymbolTypeFunctionSig.cpp
13309467b48Spatrick  PDBSymbolTypeManaged.cpp
13409467b48Spatrick  PDBSymbolTypePointer.cpp
13509467b48Spatrick  PDBSymbolTypeTypedef.cpp
13609467b48Spatrick  PDBSymbolTypeUDT.cpp
13709467b48Spatrick  PDBSymbolTypeVTable.cpp
13809467b48Spatrick  PDBSymbolTypeVTableShape.cpp
13909467b48Spatrick  PDBSymbolUnknown.cpp
14009467b48Spatrick  PDBSymbolUsingNamespace.cpp
14109467b48Spatrick  PDBSymDumper.cpp
14209467b48Spatrick  UDTLayout.cpp
14309467b48Spatrick  ${PDB_IMPL_SOURCES}
14409467b48Spatrick
14509467b48Spatrick  ADDITIONAL_HEADER_DIRS
14609467b48Spatrick  ${LIBPDB_ADDITIONAL_HEADER_DIRS}
14773471bf0Spatrick
14873471bf0Spatrick  LINK_COMPONENTS
14973471bf0Spatrick  BinaryFormat
15073471bf0Spatrick  Object
15173471bf0Spatrick  Support
15273471bf0Spatrick  DebugInfoCodeView
15373471bf0Spatrick  DebugInfoMSF
15409467b48Spatrick  )
15509467b48Spatrick
15609467b48Spatricktarget_link_libraries(LLVMDebugInfoPDB INTERFACE "${LIBPDB_ADDITIONAL_LIBRARIES}")
157