grpc.sh 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. set -e
  3. . /etc/os-release
  4. export SOURCE_ROOT=$HOME/downloads/grpc
  5. export BUILD_ROOT=$HOME/build/grpc
  6. export INSTALL_ROOT=$HOME/.local
  7. function build_grpc() {
  8. # https://grpc.io/docs/languages/cpp/quickstart/
  9. if [ -L $HOME/.local/bin/protoc ]
  10. then
  11. echo 'already exists!'
  12. exit 0
  13. fi
  14. if [ -d $SOURCE_ROOT ]
  15. then
  16. cd $SOURCE_ROOT
  17. git checkout master
  18. git pull
  19. git checkout $1
  20. # fix unable to find current revision in submodule path
  21. # git pull --recurse-submodules
  22. git submodule update --init --recursive
  23. else
  24. git clone --recurse-submodules -b $1 https://github.com/grpc/grpc.git $SOURCE_ROOT
  25. fi
  26. if [ -d $BUILD_ROOT ]
  27. then
  28. rm -r $BUILD_ROOT
  29. fi
  30. mkdir -p $BUILD_ROOT
  31. cd $BUILD_ROOT
  32. CC=clang CXX=clang++ cmake -DCMAKE_BUILD_TYPE=Release \
  33. -DABSL_PROPAGATE_CXX_STD=ON \
  34. -DgRPC_INSTALL=ON -DgRPC_SSL_PROVIDER=package -DgRPC_BUILD_TESTS=OFF \
  35. -DCMAKE_INSTALL_PREFIX=$INSTALL_ROOT $SOURCE_ROOT
  36. make # -j $(nproc --ignore=2)
  37. make install
  38. }
  39. if [ "$#" -ne 1 ]
  40. then
  41. echo "USAGE: $0 GRPC_VERSION"
  42. exit 1
  43. fi
  44. build_grpc $1
  45. if [[ $UBUNTU_CODENAME == "bionic" ]]
  46. then
  47. cp $SOURCE_ROOT/third_party/re2/re2.pc $HOME/.local/lib/pkgconfig/
  48. fi
  49. echo "done($1)."
  50. exit 0