1macro(add_pdb_impl_folder group)
2  list(APPEND PDB_IMPL_SOURCES ${ARGN})
3  source_group(${group} FILES ${ARGN})
4endmacro()
5
6if(LLVM_ENABLE_DIA_SDK)
7  include_directories(${MSVC_DIA_SDK_DIR}/include)
8  set(LIBPDB_LINK_FOLDERS "${MSVC_DIA_SDK_DIR}\\lib")
9
10  if ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64")
11    set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\arm64")
12  elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm")
13    set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\arm")
14  elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
15    set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\amd64")
16  endif()
17  file(TO_CMAKE_PATH "${LIBPDB_LINK_FOLDERS}\\diaguids.lib" LIBPDB_ADDITIONAL_LIBRARIES)
18
19  add_pdb_impl_folder(DIA
20    DIA/DIADataStream.cpp
21    DIA/DIAEnumDebugStreams.cpp
22    DIA/DIAEnumFrameData.cpp
23    DIA/DIAEnumInjectedSources.cpp
24    DIA/DIAEnumLineNumbers.cpp
25    DIA/DIAEnumSectionContribs.cpp
26    DIA/DIAEnumSourceFiles.cpp
27    DIA/DIAEnumSymbols.cpp
28    DIA/DIAEnumTables.cpp
29    DIA/DIAError.cpp
30    DIA/DIAFrameData.cpp
31    DIA/DIAInjectedSource.cpp
32    DIA/DIALineNumber.cpp
33    DIA/DIARawSymbol.cpp
34    DIA/DIASectionContrib.cpp
35    DIA/DIASession.cpp
36    DIA/DIASourceFile.cpp
37    DIA/DIATable.cpp
38    )
39
40    set(LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB/DIA")
41endif()
42
43add_pdb_impl_folder(Native
44  Native/DbiModuleDescriptor.cpp
45  Native/DbiModuleDescriptorBuilder.cpp
46  Native/DbiModuleList.cpp
47  Native/DbiStream.cpp
48  Native/DbiStreamBuilder.cpp
49  Native/EnumTables.cpp
50  Native/GlobalsStream.cpp
51  Native/Hash.cpp
52  Native/HashTable.cpp
53  Native/InfoStream.cpp
54  Native/InfoStreamBuilder.cpp
55  Native/InjectedSourceStream.cpp
56  Native/ModuleDebugStream.cpp
57  Native/NativeCompilandSymbol.cpp
58  Native/NativeEnumGlobals.cpp
59  Native/NativeEnumInjectedSources.cpp
60  Native/NativeEnumLineNumbers.cpp
61  Native/NativeEnumModules.cpp
62  Native/NativeEnumTypes.cpp
63  Native/NativeEnumSymbols.cpp
64  Native/NativeExeSymbol.cpp
65  Native/NativeFunctionSymbol.cpp
66  Native/NativeInlineSiteSymbol.cpp
67  Native/NativeLineNumber.cpp
68  Native/NativePublicSymbol.cpp
69  Native/NativeRawSymbol.cpp
70  Native/NativeSourceFile.cpp
71  Native/NativeSymbolEnumerator.cpp
72  Native/NativeTypeArray.cpp
73  Native/NativeTypeBuiltin.cpp
74  Native/NativeTypeEnum.cpp
75  Native/NativeTypeFunctionSig.cpp
76  Native/NativeTypePointer.cpp
77  Native/NativeTypeTypedef.cpp
78  Native/NativeTypeUDT.cpp
79  Native/NativeTypeVTShape.cpp
80  Native/NamedStreamMap.cpp
81  Native/NativeSession.cpp
82  Native/PDBFile.cpp
83  Native/PDBFileBuilder.cpp
84  Native/PDBStringTable.cpp
85  Native/PDBStringTableBuilder.cpp
86  Native/PublicsStream.cpp
87  Native/GSIStreamBuilder.cpp
88  Native/RawError.cpp
89  Native/SymbolCache.cpp
90  Native/SymbolStream.cpp
91  Native/TpiHashing.cpp
92  Native/TpiStream.cpp
93  Native/TpiStreamBuilder.cpp
94  )
95
96list(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB/Native")
97list(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB")
98
99add_llvm_component_library(LLVMDebugInfoPDB
100  GenericError.cpp
101  IPDBSourceFile.cpp
102  PDB.cpp
103  PDBContext.cpp
104  PDBExtras.cpp
105  PDBInterfaceAnchors.cpp
106  PDBSymbol.cpp
107  PDBSymbolAnnotation.cpp
108  PDBSymbolBlock.cpp
109  PDBSymbolCompiland.cpp
110  PDBSymbolCompilandDetails.cpp
111  PDBSymbolCompilandEnv.cpp
112  PDBSymbolCustom.cpp
113  PDBSymbolData.cpp
114  PDBSymbolExe.cpp
115  PDBSymbolFunc.cpp
116  PDBSymbolFuncDebugEnd.cpp
117  PDBSymbolFuncDebugStart.cpp
118  PDBSymbolLabel.cpp
119  PDBSymbolPublicSymbol.cpp
120  PDBSymbolThunk.cpp
121  PDBSymbolTypeArray.cpp
122  PDBSymbolTypeBaseClass.cpp
123  PDBSymbolTypeBuiltin.cpp
124  PDBSymbolTypeCustom.cpp
125  PDBSymbolTypeDimension.cpp
126  PDBSymbolTypeEnum.cpp
127  PDBSymbolTypeFriend.cpp
128  PDBSymbolTypeFunctionArg.cpp
129  PDBSymbolTypeFunctionSig.cpp
130  PDBSymbolTypeManaged.cpp
131  PDBSymbolTypePointer.cpp
132  PDBSymbolTypeTypedef.cpp
133  PDBSymbolTypeUDT.cpp
134  PDBSymbolTypeVTable.cpp
135  PDBSymbolTypeVTableShape.cpp
136  PDBSymbolUnknown.cpp
137  PDBSymbolUsingNamespace.cpp
138  PDBSymDumper.cpp
139  UDTLayout.cpp
140  ${PDB_IMPL_SOURCES}
141
142  ADDITIONAL_HEADER_DIRS
143  ${LIBPDB_ADDITIONAL_HEADER_DIRS}
144
145  LINK_COMPONENTS
146  BinaryFormat
147  Object
148  Support
149  DebugInfoCodeView
150  DebugInfoMSF
151  )
152
153target_link_libraries(LLVMDebugInfoPDB INTERFACE "${LIBPDB_ADDITIONAL_LIBRARIES}")
154