mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
28bf7f3536
Summary: Most libraries are defined in the lib/ directory but there are also a few libraries defined in tools/ e.g. libLLVM, libLTO. I'm defining "Component Libraries" as libraries defined in lib/ that may be included in libLLVM.so. Explicitly marking the libraries in lib/ as component libraries allows us to remove some fragile checks that attempt to differentiate between lib/ libraries and tools/ libraires: 1. In tools/llvm-shlib, because llvm_map_components_to_libnames(LIB_NAMES "all") returned a list of all libraries defined in the whole project, there was custom code needed to filter out libraries defined in tools/, none of which should be included in libLLVM.so. This code assumed that any library defined as static was from lib/ and everything else should be excluded. With this change, llvm_map_components_to_libnames(LIB_NAMES, "all") only returns libraries that have been added to the LLVM_COMPONENT_LIBS global cmake property, so this custom filtering logic can be removed. Doing this also fixes the build with BUILD_SHARED_LIBS=ON and LLVM_BUILD_LLVM_DYLIB=ON. 2. There was some code in llvm_add_library that assumed that libraries defined in lib/ would not have LLVM_LINK_COMPONENTS or ARG_LINK_COMPONENTS set. This is only true because libraries defined lib lib/ use LLVMBuild.txt and don't set these values. This code has been fixed now to check if the library has been explicitly marked as a component library, which should now make it easier to remove LLVMBuild at some point in the future. I have tested this patch on Windows, MacOS and Linux with release builds and the following combinations of CMake options: - "" (No options) - -DLLVM_BUILD_LLVM_DYLIB=ON - -DLLVM_LINK_LLVM_DYLIB=ON - -DBUILD_SHARED_LIBS=ON - -DBUILD_SHARED_LIBS=ON -DLLVM_BUILD_LLVM_DYLIB=ON - -DBUILD_SHARED_LIBS=ON -DLLVM_LINK_LLVM_DYLIB=ON Reviewers: beanz, smeenai, compnerd, phosek Reviewed By: beanz Subscribers: wuzish, jholewinski, arsenm, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, mgorny, mehdi_amini, sbc100, jgravelle-google, hiraditya, aheejin, fedor.sergeev, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, steven_wu, rogfer01, MartinMosbeck, brucehoult, the_o, dexonsmith, PkmX, jocewei, jsji, dang, Jim, lenary, s.egerton, pzheng, sameer.abuasal, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70179
135 lines
3.6 KiB
CMake
135 lines
3.6 KiB
CMake
macro(add_pdb_impl_folder group)
|
|
list(APPEND PDB_IMPL_SOURCES ${ARGN})
|
|
source_group(${group} FILES ${ARGN})
|
|
endmacro()
|
|
|
|
if(LLVM_ENABLE_DIA_SDK)
|
|
include_directories(${MSVC_DIA_SDK_DIR}/include)
|
|
set(LIBPDB_LINK_FOLDERS "${MSVC_DIA_SDK_DIR}\\lib")
|
|
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(LIBPDB_LINK_FOLDERS "${LIBPDB_LINK_FOLDERS}\\amd64")
|
|
endif()
|
|
file(TO_CMAKE_PATH "${LIBPDB_LINK_FOLDERS}\\diaguids.lib" LIBPDB_ADDITIONAL_LIBRARIES)
|
|
|
|
add_pdb_impl_folder(DIA
|
|
DIA/DIADataStream.cpp
|
|
DIA/DIAEnumDebugStreams.cpp
|
|
DIA/DIAEnumFrameData.cpp
|
|
DIA/DIAEnumInjectedSources.cpp
|
|
DIA/DIAEnumLineNumbers.cpp
|
|
DIA/DIAEnumSectionContribs.cpp
|
|
DIA/DIAEnumSourceFiles.cpp
|
|
DIA/DIAEnumSymbols.cpp
|
|
DIA/DIAEnumTables.cpp
|
|
DIA/DIAError.cpp
|
|
DIA/DIAFrameData.cpp
|
|
DIA/DIAInjectedSource.cpp
|
|
DIA/DIALineNumber.cpp
|
|
DIA/DIARawSymbol.cpp
|
|
DIA/DIASectionContrib.cpp
|
|
DIA/DIASession.cpp
|
|
DIA/DIASourceFile.cpp
|
|
DIA/DIATable.cpp
|
|
)
|
|
|
|
set(LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB/DIA")
|
|
endif()
|
|
|
|
add_pdb_impl_folder(Native
|
|
Native/DbiModuleDescriptor.cpp
|
|
Native/DbiModuleDescriptorBuilder.cpp
|
|
Native/DbiModuleList.cpp
|
|
Native/DbiStream.cpp
|
|
Native/DbiStreamBuilder.cpp
|
|
Native/EnumTables.cpp
|
|
Native/GlobalsStream.cpp
|
|
Native/Hash.cpp
|
|
Native/HashTable.cpp
|
|
Native/InfoStream.cpp
|
|
Native/InfoStreamBuilder.cpp
|
|
Native/InjectedSourceStream.cpp
|
|
Native/ModuleDebugStream.cpp
|
|
Native/NativeCompilandSymbol.cpp
|
|
Native/NativeEnumGlobals.cpp
|
|
Native/NativeEnumInjectedSources.cpp
|
|
Native/NativeEnumModules.cpp
|
|
Native/NativeEnumTypes.cpp
|
|
Native/NativeExeSymbol.cpp
|
|
Native/NativeRawSymbol.cpp
|
|
Native/NativeSymbolEnumerator.cpp
|
|
Native/NativeTypeArray.cpp
|
|
Native/NativeTypeBuiltin.cpp
|
|
Native/NativeTypeEnum.cpp
|
|
Native/NativeTypeFunctionSig.cpp
|
|
Native/NativeTypePointer.cpp
|
|
Native/NativeTypeTypedef.cpp
|
|
Native/NativeTypeUDT.cpp
|
|
Native/NativeTypeVTShape.cpp
|
|
Native/NamedStreamMap.cpp
|
|
Native/NativeSession.cpp
|
|
Native/PDBFile.cpp
|
|
Native/PDBFileBuilder.cpp
|
|
Native/PDBStringTable.cpp
|
|
Native/PDBStringTableBuilder.cpp
|
|
Native/PublicsStream.cpp
|
|
Native/GSIStreamBuilder.cpp
|
|
Native/RawError.cpp
|
|
Native/SymbolCache.cpp
|
|
Native/SymbolStream.cpp
|
|
Native/TpiHashing.cpp
|
|
Native/TpiStream.cpp
|
|
Native/TpiStreamBuilder.cpp
|
|
)
|
|
|
|
list(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB/Native")
|
|
list(APPEND LIBPDB_ADDITIONAL_HEADER_DIRS "${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/PDB")
|
|
|
|
add_llvm_component_library(LLVMDebugInfoPDB
|
|
GenericError.cpp
|
|
IPDBSourceFile.cpp
|
|
PDB.cpp
|
|
PDBContext.cpp
|
|
PDBExtras.cpp
|
|
PDBInterfaceAnchors.cpp
|
|
PDBSymbol.cpp
|
|
PDBSymbolAnnotation.cpp
|
|
PDBSymbolBlock.cpp
|
|
PDBSymbolCompiland.cpp
|
|
PDBSymbolCompilandDetails.cpp
|
|
PDBSymbolCompilandEnv.cpp
|
|
PDBSymbolCustom.cpp
|
|
PDBSymbolData.cpp
|
|
PDBSymbolExe.cpp
|
|
PDBSymbolFunc.cpp
|
|
PDBSymbolFuncDebugEnd.cpp
|
|
PDBSymbolFuncDebugStart.cpp
|
|
PDBSymbolLabel.cpp
|
|
PDBSymbolPublicSymbol.cpp
|
|
PDBSymbolThunk.cpp
|
|
PDBSymbolTypeArray.cpp
|
|
PDBSymbolTypeBaseClass.cpp
|
|
PDBSymbolTypeBuiltin.cpp
|
|
PDBSymbolTypeCustom.cpp
|
|
PDBSymbolTypeDimension.cpp
|
|
PDBSymbolTypeEnum.cpp
|
|
PDBSymbolTypeFriend.cpp
|
|
PDBSymbolTypeFunctionArg.cpp
|
|
PDBSymbolTypeFunctionSig.cpp
|
|
PDBSymbolTypeManaged.cpp
|
|
PDBSymbolTypePointer.cpp
|
|
PDBSymbolTypeTypedef.cpp
|
|
PDBSymbolTypeUDT.cpp
|
|
PDBSymbolTypeVTable.cpp
|
|
PDBSymbolTypeVTableShape.cpp
|
|
PDBSymbolUnknown.cpp
|
|
PDBSymbolUsingNamespace.cpp
|
|
PDBSymDumper.cpp
|
|
UDTLayout.cpp
|
|
${PDB_IMPL_SOURCES}
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
|
${LIBPDB_ADDITIONAL_HEADER_DIRS}
|
|
)
|
|
|
|
target_link_libraries(LLVMDebugInfoPDB INTERFACE "${LIBPDB_ADDITIONAL_LIBRARIES}")
|