-
Notifications
You must be signed in to change notification settings - Fork 12
Build LLVM with VS
Note: CLang cannot be used on Windows if built with VS: http://www.mail-archive.com/[email protected]/msg00008.html.
Open up llvm-3.1.src\tools\clang\lib\CodeGen\CGDebugInfo.cpp. There are two sections that need changing.
Around line 1699, there is a peice of code that looks like:
if (TC.Verify() && TC.isForwardDecl())
ReplaceMap.push_back(std::make_pair(Ty.getAsOpaquePtr(), TC));
The TC
needs casting to llvm::Value*
:
if (TC.Verify() && TC.isForwardDecl())
ReplaceMap.push_back(std::make_pair(Ty.getAsOpaquePtr(), static_cast<llvm::Value *>(TC)));
Around line: 1809, there is a piece of code that looks like:
if (T.Verify() && T.isForwardDecl())
ReplaceMap.push_back(std::make_pair(Ty.getAsOpaquePtr(), T));
The T
needs casting to llvm::MDNode*
:
if (T.Verify() && T.isForwardDecl())
ReplaceMap.push_back(std::make_pair(Ty.getAsOpaquePtr(), static_cast<llvm::MDNode *>(T)));
By default, llvm-config isn't built on windows (http://code.google.com/p/tart/issues/detail?id=35) The fix is to edit two files.
First, in llvm-src\tools\CMakeLists.txt, comment out: if( NOT WIN32 OR MSYS OR CYGWIN )
and its corresponding endif()
.
Next, open up llvm-src/tools/llvm-config/CMakeLists.txt. Before add_custom_command(OUTPUT ${BUILDVARIABLES_OBJPATH}
add:
if (NOT WIN32 OR MSYS OR CYGWIN)
set(BUILDVARIABLES_SRCPATH ${CMAKE_CURRENT_SOURCE_DIR}/BuildVariables.inc.in)
set(SEDSCRIPT_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.configure.sed)
Then after
VERBATIM
COMMENT "Building BuildVariables.inc include."
)
add:
else()
if (DEFINED LLVM_MAIN_SRC_DIR)
set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR})
else()
set(LLVM_SRC_ROOT " ")
endif()
if (DEFINED LLVM_BINARY_DIR)
set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR})
else()
set(LLVM_OBJ_ROOT " ")
endif()
if (DEFINED CPP_FLGS)
set(LLVM_CPPFLAGS ${CPP_FLGS})
else()
set(LLVM_CPPFLAGS " ")
endif()
if (DEFINED C_FLGS)
set(LLVM_CFLAGS ${C_FLGS})
else()
set(LLVM_CFLAGS " ")
endif()
if (DEFINED CXX_FLGS)
set(LLVM_CXXFLAGS ${CXX_FLGS})
else()
set(LLVM_CXXFLAGS " ")
endif()
if (DEFINED CMAKE_SHARED_LINKER_FLAGS)
set(LLVM_LDFLAGS ${CMAKE_SHARED_LINKER_FLAGS})
else()
set(LLVM_LDFLAGS " ")
endif()
if (DEFINED CMAKE_BUILD_TYPE)
set(LLVM_BUILDMODE ${CMAKE_BUILD_TYPE})
else()
set(LLVM_BUILDMODE " ")
endif()
if (DEFINED SYSTEM_LIBS)
set(LLVM_SYSTEM_LIBS ${SYSTEM_LIBS})
else()
set(LLVM_SYSTEM_LIBS " ")
endif()
if (DEFINED LLVM_TARGETS_TO_BUILD)
set(LLVM_TARGETS_BUILT ${LLVM_TARGETS_TO_BUILD})
else()
set(LLVM_TARGETS_BUILT " ")
endif()
CONFIGURE_FILE(${BUILDVARIABLES_SRCPATH} ${BUILDVARIABLES_OBJPATH})
endif()