diff options
author | Michal Gorny <mgorny@gentoo.org> | 2017-01-02 18:19:35 +0000 |
---|---|---|
committer | Michal Gorny <mgorny@gentoo.org> | 2017-01-02 18:19:35 +0000 |
commit | 89b6f16b3e8465884aa6f181553cc69270b8ebcd (patch) | |
tree | fc4b1f3c5254f122665c81ebf7003d68f8b3fae8 | |
parent | 7b83732a4025b5a3c652bfb585628104d995df8d (diff) | |
download | bcm5719-llvm-89b6f16b3e8465884aa6f181553cc69270b8ebcd.tar.gz bcm5719-llvm-89b6f16b3e8465884aa6f181553cc69270b8ebcd.zip |
[cmake] Add LLVM_ENABLE_DIA_SDK option, and expose it in LLVMConfig
Add an explicit LLVM_ENABLE_DIA_SDK option to control building support
for DIA SDK-based debugging. Control its value to match whether DIA SDK
support was found and expose it in LLVMConfig (alike LLVM_ENABLE_ZLIB).
Its value is needed for LLDB to determine whether to run tests requiring
DIA support. Currently it is obtained from llvm/Config/config.h;
however, this file is not available for standalone builds. Following
this change, LLDB will be modified to use the value from LLVMConfig.
Differential Revision: https://reviews.llvm.org/D26255
llvm-svn: 290818
-rwxr-xr-x | llvm/cmake/config-ix.cmake | 9 | ||||
-rw-r--r-- | llvm/cmake/modules/LLVMConfig.cmake.in | 2 | ||||
-rw-r--r-- | llvm/docs/CMake.rst | 4 | ||||
-rw-r--r-- | llvm/include/llvm/Config/config.h.cmake | 2 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/PDB/CMakeLists.txt | 2 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/PDB/PDB.cpp | 6 | ||||
-rw-r--r-- | llvm/test/lit.site.cfg.in | 2 |
7 files changed, 20 insertions, 7 deletions
diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake index 71c1af5bd27..fe3afd3fcc2 100755 --- a/llvm/cmake/config-ix.cmake +++ b/llvm/cmake/config-ix.cmake @@ -450,8 +450,15 @@ if( MSVC ) else() set(HAVE_DIA_SDK 0) endif() + + option(LLVM_ENABLE_DIA_SDK "Use MSVC DIA SDK for debugging if available." + ${HAVE_DIA_SDK}) + + if(LLVM_ENABLE_DIA_SDK AND NOT HAVE_DIA_SDK) + message(FATAL_ERROR "DIA SDK not found. If you have both VS 2012 and 2013 installed, you may need to uninstall the former and re-install the latter afterwards.") + endif() else() - set(HAVE_DIA_SDK 0) + set(LLVM_ENABLE_DIA_SDK 0) endif( MSVC ) # FIXME: Signal handler return type, currently hardcoded to 'void' diff --git a/llvm/cmake/modules/LLVMConfig.cmake.in b/llvm/cmake/modules/LLVMConfig.cmake.in index f7412bac108..c30c92b66d8 100644 --- a/llvm/cmake/modules/LLVMConfig.cmake.in +++ b/llvm/cmake/modules/LLVMConfig.cmake.in @@ -37,6 +37,8 @@ set(LLVM_ENABLE_THREADS @LLVM_ENABLE_THREADS@) set(LLVM_ENABLE_ZLIB @LLVM_ENABLE_ZLIB@) +set(LLVM_ENABLE_DIA_SDK @LLVM_ENABLE_DIA_SDK@) + set(LLVM_NATIVE_ARCH @LLVM_NATIVE_ARCH@) set(LLVM_ENABLE_PIC @LLVM_ENABLE_PIC@) diff --git a/llvm/docs/CMake.rst b/llvm/docs/CMake.rst index 7ec67603c07..28b6ea3959b 100644 --- a/llvm/docs/CMake.rst +++ b/llvm/docs/CMake.rst @@ -368,6 +368,10 @@ LLVM-specific variables Enable building with zlib to support compression/uncompression in LLVM tools. Defaults to ON. +**LLVM_ENABLE_DIA_SDK**:BOOL + Enable building with MSVC DIA SDK for PDB debugging support. Available + only with MSVC. Defaults to ON. + **LLVM_USE_SANITIZER**:STRING Define the sanitizer used to build LLVM binaries and tests. Possible values are ``Address``, ``Memory``, ``MemoryWithOrigins``, ``Undefined``, ``Thread``, diff --git a/llvm/include/llvm/Config/config.h.cmake b/llvm/include/llvm/Config/config.h.cmake index fe87829c2c2..ff41d75373c 100644 --- a/llvm/include/llvm/Config/config.h.cmake +++ b/llvm/include/llvm/Config/config.h.cmake @@ -39,7 +39,7 @@ #cmakedefine01 HAVE_DECL_STRERROR_S /* Define to 1 if you have the DIA SDK installed, and to 0 if you don't. */ -#cmakedefine01 HAVE_DIA_SDK +#cmakedefine01 LLVM_ENABLE_DIA_SDK /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. */ diff --git a/llvm/lib/DebugInfo/PDB/CMakeLists.txt b/llvm/lib/DebugInfo/PDB/CMakeLists.txt index 04144f271f6..599f01eaf74 100644 --- a/llvm/lib/DebugInfo/PDB/CMakeLists.txt +++ b/llvm/lib/DebugInfo/PDB/CMakeLists.txt @@ -3,7 +3,7 @@ macro(add_pdb_impl_folder group) source_group(${group} FILES ${ARGN}) endmacro() -if(HAVE_DIA_SDK) +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) diff --git a/llvm/lib/DebugInfo/PDB/PDB.cpp b/llvm/lib/DebugInfo/PDB/PDB.cpp index 69a908eb341..0d720591b81 100644 --- a/llvm/lib/DebugInfo/PDB/PDB.cpp +++ b/llvm/lib/DebugInfo/PDB/PDB.cpp @@ -14,7 +14,7 @@ #include "llvm/DebugInfo/PDB/GenericError.h" #include "llvm/DebugInfo/PDB/IPDBSession.h" #include "llvm/DebugInfo/PDB/PDB.h" -#if HAVE_DIA_SDK +#if LLVM_ENABLE_DIA_SDK #include "llvm/DebugInfo/PDB/DIA/DIASession.h" #endif #include "llvm/DebugInfo/PDB/Raw/RawSession.h" @@ -30,7 +30,7 @@ Error llvm::pdb::loadDataForPDB(PDB_ReaderType Type, StringRef Path, if (Type == PDB_ReaderType::Raw) return RawSession::createFromPdb(Path, Session); -#if HAVE_DIA_SDK +#if LLVM_ENABLE_DIA_SDK return DIASession::createFromPdb(Path, Session); #else return llvm::make_error<GenericError>("DIA is not installed on the system"); @@ -43,7 +43,7 @@ Error llvm::pdb::loadDataForEXE(PDB_ReaderType Type, StringRef Path, if (Type == PDB_ReaderType::Raw) return RawSession::createFromExe(Path, Session); -#if HAVE_DIA_SDK +#if LLVM_ENABLE_DIA_SDK return DIASession::createFromExe(Path, Session); #else return llvm::make_error<GenericError>("DIA is not installed on the system"); diff --git a/llvm/test/lit.site.cfg.in b/llvm/test/lit.site.cfg.in index 4877f71eef1..95f00038bc7 100644 --- a/llvm/test/lit.site.cfg.in +++ b/llvm/test/lit.site.cfg.in @@ -36,7 +36,7 @@ config.llvm_use_intel_jitevents = "@LLVM_USE_INTEL_JITEVENTS@" config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@" config.have_zlib = "@HAVE_LIBZ@" config.have_libxar = "@HAVE_LIBXAR@" -config.have_dia_sdk = @HAVE_DIA_SDK@ +config.have_dia_sdk = @LLVM_ENABLE_DIA_SDK@ config.enable_ffi = "@LLVM_ENABLE_FFI@" config.test_examples = "@ENABLE_EXAMPLES@" |