Define HAVE_DIA_SDK on Windows when DIA is present.
authorZachary Turner <zturner@google.com>
Tue, 10 Feb 2015 05:04:25 +0000 (05:04 +0000)
committerZachary Turner <zturner@google.com>
Tue, 10 Feb 2015 05:04:25 +0000 (05:04 +0000)
This allows all CMake projects, as well as C++ code, to detect if
and when DIA SDK is available for use so that we can enable the
DIA-based PDB reader implementation.

Differential Revision: http://reviews.llvm.org/D7457
Reviewed By: Chandler Carruth

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228669 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/config-ix.cmake
include/llvm/Config/config.h.cmake
include/llvm/Config/config.h.in

index c845c070ecd0ed1b5e0f46979acd3178064faf79..55727a85f37d60c4a5cbbd17941ab0f53c8b2d4f 100755 (executable)
@@ -429,6 +429,22 @@ if( MSVC )
   set(SHLIBEXT ".lib")
   set(stricmp "_stricmp")
   set(strdup "_strdup")
+
+  # See if the DIA SDK is available and usable.
+  set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
+
+  # Due to a bug in MSVC 2013's installation software, it is possible
+  # for MSVC 2013 to write the DIA SDK into the Visual Studio 2012
+  # install directory.  If this happens, the installation is corrupt
+  # and there's nothing we can do.  It happens with enough frequency
+  # though that we should handle it.  We do so by simply checking that
+  # the DIA SDK folder exists.  Should this happen you will need to
+  # uninstall VS 2012 and then re-install VS 2013.
+  if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
+    set(HAVE_DIA_SDK 1)
+  else()
+    set(HAVE_DIA_SDK 0)
+  endif()
 endif( MSVC )
 
 if( PURE_WINDOWS )
index c112ea2fc1c5fd98bce5959f56800ccb171b8cf5..e10df045b4bfbd72d0b2ca0f16e200231d163117 100644 (file)
@@ -55,6 +55,9 @@
    don't. */
 #cmakedefine01 HAVE_DECL_STRERROR_S
 
+/* Define to 1 if you have the DIA SDK installed, and to 0 if you don't. */
+#cmakedefine HAVE_DIA_SDK ${HAVE_DIA_SDK}
+
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
 #cmakedefine HAVE_DIRENT_H ${HAVE_DIRENT_H}
index c68c77aa6076990bcda2bfb6a15865bb10486a83..9827eeaea33eb594d46fe40c3b172fad9b41ec2f 100644 (file)
@@ -67,6 +67,9 @@
    don't. */
 #undef HAVE_DECL_STRERROR_S
 
+/* Define to 1 if you have the DIA SDK installed, and to 0 if you don't. */
+#undef HAVE_DIA_SDK
+
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
 #undef HAVE_DIRENT_H