[cfe-commits] r84420 - /cfe/trunk/tools/CIndex/CIndex.cpp
Benjamin Kramer
benny.kra at googlemail.com
Sun Oct 18 09:13:48 PDT 2009
Author: d0k
Date: Sun Oct 18 11:13:48 2009
New Revision: 84420
URL: http://llvm.org/viewvc/llvm-project?rev=84420&view=rev
Log:
CIndex: add a (untested) WIN32 codepath to get ClangPath.
Modified:
cfe/trunk/tools/CIndex/CIndex.cpp
Modified: cfe/trunk/tools/CIndex/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CIndex/CIndex.cpp?rev=84420&r1=84419&r2=84420&view=diff
==============================================================================
--- cfe/trunk/tools/CIndex/CIndex.cpp (original)
+++ cfe/trunk/tools/CIndex/CIndex.cpp Sun Oct 18 11:13:48 2009
@@ -22,11 +22,15 @@
#include "clang/Basic/FileManager.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Frontend/ASTUnit.h"
+#include "llvm/Config/config.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/System/Path.h"
#include "llvm/System/Program.h"
#include <cstdio>
-#ifndef _MSC_VER
+#ifdef LLVM_ON_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#else
#include <dlfcn.h>
#endif
#include <vector>
@@ -292,11 +296,16 @@
if (!ClangPath.empty())
return ClangPath;
- // FIXME: This is a hack to unbreak the MSVC build.
-#ifdef _MSC_VER
- llvm::sys::Path CIndexPath("");
-#else
// Find the location where this library lives (libCIndex.dylib).
+#ifdef LLVM_ON_WIN32
+ MEMORY_BASIC_INFORMATION mbi;
+ char path[MAX_PATH];
+ VirtualQuery(void *)(uintptr_t)clang_createTranslationUnit, &mbi,
+ sizeof(mbi));
+ GetModuleFileNameA((HINSTANCE)mbi.AllocationBase, path, MAX_PATH);
+
+ llvm::sys::Path CIndexPath(path);
+#else
// This silly cast below avoids a C++ warning.
Dl_info info;
if (dladdr((void *)(uintptr_t)clang_createTranslationUnit, &info) == 0)
@@ -351,10 +360,6 @@
const char *source_filename,
int num_command_line_args, const char **command_line_args)
{
- // FIXME: This is a hack to unbreak the build.
-#ifdef _MSC_VER
- return 0;
-#else
// Build up the arguments for involing clang.
llvm::sys::Path ClangPath = static_cast<CIndexer *>(CIdx)->getClangPath();
std::vector<const char *> argv;
@@ -377,7 +382,6 @@
clang_createTranslationUnit(CIdx, astTmpFile));
ATU->unlinkTemporaryFile();
return ATU;
-#endif
}
void clang_disposeTranslationUnit(
More information about the cfe-commits
mailing list