Skip to content

Commit

Permalink
[clangd] Fix remote index build without shared libs mode
Browse files Browse the repository at this point in the history
Summary:
Generated Protobuf library has to be in CLANG_EXPORTS and should also be
installed appropriately. The easiest way to do that is via CMake's
add_clang_library. That unfortunately applies "one directory - one
clang_(library|tool)" policy so .proto files should be in a separate directory
and complicates the layout.

This setup works both in shared and static libs mode.

Resolves: clangd/clangd#351

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D78885
  • Loading branch information
kirillbobyrev committed Apr 28, 2020
1 parent 707df4a commit 9ff3f33
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
10 changes: 4 additions & 6 deletions clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
Expand Up @@ -5,14 +5,12 @@ set(LLVM_LINK_COMPONENTS
add_clang_executable(clangd-index-server
Server.cpp
)
target_compile_definitions(clangd-index-server PRIVATE -D GOOGLE_PROTOBUF_NO_RTTI=1)
clang_target_link_libraries(clangd-index-server
PRIVATE
clangDaemon
)
target_link_libraries(clangd-index-server
PRIVATE
RemoteIndexProtos
clangDaemon

RemoteIndexProtos
clangdRemoteMarshalling

grpc++
)
5 changes: 3 additions & 2 deletions llvm/cmake/modules/FindGRPC.cmake
Expand Up @@ -45,6 +45,7 @@ function(generate_grpc_protos LibraryName ProtoFile)
"${ProtoSourceAbsolutePath}"
DEPENDS "${ProtoSourceAbsolutePath}")

add_library(${LibraryName} ${GeneratedProtoSource} ${GeneratedGRPCSource})
target_link_libraries(${LibraryName} grpc++ protobuf)
add_clang_library(${LibraryName} ${GeneratedProtoSource} ${GeneratedGRPCSource}
PARTIAL_SOURCES_INTENDED
LINK_LIBS grpc++ protobuf)
endfunction()
8 changes: 5 additions & 3 deletions llvm/cmake/modules/LLVMProcessSources.cmake
Expand Up @@ -57,10 +57,12 @@ endfunction(find_all_header_files)


function(llvm_process_sources OUT_VAR)
cmake_parse_arguments(ARG "" "" "ADDITIONAL_HEADERS;ADDITIONAL_HEADER_DIRS" ${ARGN})
cmake_parse_arguments(ARG "PARTIAL_SOURCES_INTENDED" "" "ADDITIONAL_HEADERS;ADDITIONAL_HEADER_DIRS" ${ARGN})
set(sources ${ARG_UNPARSED_ARGUMENTS})
llvm_check_source_file_list( ${sources} )

if (NOT ARG_PARTIAL_SOURCES_INTENDED)
llvm_check_source_file_list(${sources})
endif()

# This adds .td and .h files to the Visual Studio solution:
add_td_sources(sources)
find_all_header_files(hdrs "${ARG_ADDITIONAL_HEADER_DIRS}")
Expand Down

0 comments on commit 9ff3f33

Please sign in to comment.