Index: clang/CMakeLists.txt =================================================================== --- clang/CMakeLists.txt +++ clang/CMakeLists.txt @@ -342,6 +342,13 @@ endif() endif () +if (LINKER_IS_LLD_LINK OR LINKER_IS_MSVC_LINK) + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/ClangVisualizers/clang.natvis") + set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/ClangVisualizers/clang.natvis") +endif() + # Determine HOST_LINK_VERSION on Darwin. set(HOST_LINK_VERSION) if (APPLE) @@ -750,9 +757,6 @@ endforeach() endif() -if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) - add_subdirectory(utils/ClangVisualizers) -endif() add_subdirectory(utils/hmaptool) configure_file( Index: clang/utils/ClangVisualizers/CMakeLists.txt =================================================================== --- clang/utils/ClangVisualizers/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -# Do this by hand instead of using add_llvm_utilities(), which -# tries to create a corresponding executable, which we don't want. -if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) - set(CLANG_VISUALIZERS clang.natvis) - add_custom_target(ClangVisualizers SOURCES ${CLANG_VISUALIZERS}) - set_target_properties(ClangVisualizers PROPERTIES FOLDER "Utils") -endif() Index: llvm/CMakeLists.txt =================================================================== --- llvm/CMakeLists.txt +++ llvm/CMakeLists.txt @@ -555,12 +555,6 @@ set(LLVM_USE_HOST_TOOLS ON) endif() -if (MSVC_IDE AND NOT (MSVC_VERSION LESS 1900)) - option(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION "Configure project to use Visual Studio native visualizers" TRUE) -else() - set(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION FALSE CACHE INTERNAL "For Visual Studio 2013, manually copy natvis files to Documents\\Visual Studio 2013\\Visualizers" FORCE) -endif() - if (LLVM_BUILD_INSTRUMENTED OR LLVM_BUILD_INSTRUMENTED_COVERAGE OR LLVM_ENABLE_IR_PGO) if(NOT LLVM_PROFILE_MERGE_POOL_SIZE) @@ -871,9 +865,11 @@ endif() endif() -# Use LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION instead of LLVM_INCLUDE_UTILS because it is not really a util -if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) - add_subdirectory(utils/LLVMVisualizers) +if (LINKER_IS_LLD_LINK OR LINKER_IS_MSVC_LINK) + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/LLVMVisualizers/llvm.natvis") + set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/LLVMVisualizers/llvm.natvis") endif() foreach( binding ${LLVM_BINDINGS_LIST} ) Index: llvm/cmake/modules/HandleLLVMOptions.cmake =================================================================== --- llvm/cmake/modules/HandleLLVMOptions.cmake +++ llvm/cmake/modules/HandleLLVMOptions.cmake @@ -11,9 +11,19 @@ include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) -if(CMAKE_LINKER MATCHES "lld-link.exe" OR (WIN32 AND LLVM_USE_LINKER STREQUAL "lld")) - set(LINKER_IS_LLD_LINK TRUE) +if (WIN32) + if(CMAKE_LINKER MATCHES "lld-link.exe" OR (LLVM_USE_LINKER STREQUAL "lld")) + set(LINKER_IS_MSVC_LINK FALSE) + set(LINKER_IS_LLD_LINK TRUE) + elseif(CMAKE_LINKER MATCHES "link.exe") + set(LINKER_IS_MSVC_LINK TRUE) + set(LINKER_IS_LLD_LINK FALSE) + else() + set(LINKER_IS_MSVC_LINK FALSE) + set(LINKER_IS_LLD_LINK FALSE) + endif() else() + set(LINKER_IS_MSVC_LINK FALSE) set(LINKER_IS_LLD_LINK FALSE) endif() Index: llvm/utils/LLVMVisualizers/CMakeLists.txt =================================================================== --- llvm/utils/LLVMVisualizers/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -# Do this by hand instead of using add_llvm_utilities(), which -# tries to create a corresponding executable, which we don't want. -if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) - set(LLVM_VISUALIZERS llvm.natvis) - add_custom_target(LLVMVisualizers SOURCES ${LLVM_VISUALIZERS}) - set_target_properties(LLVMVisualizers PROPERTIES FOLDER "Utils") -endif()