[PATCH] D85715: [clangd] Attempt to allow gRPC & Proobuf static linking
Kirill Bobyrev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 11 07:29:05 PDT 2020
kbobyrev added a comment.
This is a full reproducer of what would work with grpc++ built from source. Seems like the dependencies are pulled by CMake and this way it actually links correctly.
~/playground/grpc-static-linking/build kbobyrev at kbobyrev-workstation.muc.corp.google.com
λ cat ../CMakeLists.txt
project(HelloGRPC)
cmake_minimum_required(VERSION 3.16)
add_executable(HelloGRPC HelloGRPC.cpp)
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED HINTS ${GRPC_INSTALL_PATH})
message(STATUS "Using protobuf ${protobuf_VERSION}")
find_package(gRPC CONFIG REQUIRED HINTS ${GRPC_INSTALL_PATH})
message(STATUS "Using gRPC ${gRPC_VERSION}")
include_directories(${Protobuf_INCLUDE_DIRS})
# gRPC CMake CONFIG gives the libraries slightly odd names, make them match
# the conventional system-installed names.
set_target_properties(protobuf::libprotobuf PROPERTIES IMPORTED_GLOBAL TRUE)
add_library(protobuf ALIAS protobuf::libprotobuf)
set_target_properties(gRPC::grpc++ PROPERTIES IMPORTED_GLOBAL TRUE)
add_library(grpc++ ALIAS gRPC::grpc++)
set(GRPC_CPP_PLUGIN $<TARGET_FILE:gRPC::grpc_cpp_plugin>)
set(PROTOC ${Protobuf_PROTOC_EXECUTABLE})
target_link_libraries(HelloGRPC grpc++)
~/playground/grpc-static-linking/build kbobyrev at kbobyrev-workstation.muc.corp.google.com
λ cat ../HelloGRPC.cpp
#include <iostream>
#include "/usr/local/google/home/kbobyrev/software/grpc-latest/include/grpc++/grpc++.h"
int main() {
const auto Channel =
grpc::CreateChannel("0.0.0.0:5000", grpc::InsecureChannelCredentials());
}
~/playground/grpc-static-linking/build kbobyrev at kbobyrev-workstation.muc.corp.google.com
λ cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DGRPC_INSTALL_PATH=/usr/local/google/home/kbobyrev/software/grpc-latest ../
-- Using protobuf
-- Using gRPC 1.30.0
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/google/home/kbobyrev/playground/grpc-static-linking/build
~/playground/grpc-static-linking/build kbobyrev at kbobyrev-workstation.muc.corp.google.com
λ ninja -v
[1/2] /usr/bin/c++ -DCARES_STATICLIB -D__CLANG_SUPPORT_DYN_ANNOTATION__ -isystem /usr/local/google/home/kbobyrev/software/grpc-latest/include -MD -MT CMakeFiles/HelloGRPC.dir/HelloGRPC.cpp.o -MF CMakeFiles/HelloGRPC.dir/HelloGRPC.cpp.o.d -o CMakeFiles/HelloGRPC.dir/HelloGRPC.cpp.o -c ../HelloGRPC.cpp
[2/2] : && /usr/bin/c++ CMakeFiles/HelloGRPC.dir/HelloGRPC.cpp.o -o HelloGRPC /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libgrpc++.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libprotobuf.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libgrpc.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libssl.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libcrypto.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libz.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libcares.a -lnsl /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_bad_optional_access.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libgpr.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_time.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_civil_time.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_time_zone.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_str_format_internal.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_strings.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_strings_internal.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_base.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_dynamic_annotations.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_spinlock_wait.a -lpthread /usr/lib/x86_64-linux-gnu/librt.so /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_int128.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_throw_delegate.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_raw_logging_internal.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libabsl_log_severity.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libaddress_sorting.a /usr/local/google/home/kbobyrev/software/grpc-latest/lib/libupb.a -ldl -lrt -lm -lpthread && :
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D85715/new/
https://reviews.llvm.org/D85715
More information about the llvm-commits
mailing list