0
0
Fork 0
haikuports/net-libs/grpc/grpc-1.41.0.recipe

167 lines
5.7 KiB
Bash

SUMMARY="A RPC library and framework"
DESCRIPTION="gRPC is a modern, open source, high-performance remote procedure \
call (RPC) framework that can run anywhere. gRPC enables client and server \
applications to communicate transparently, and simplifies the building of \
connected systems."
HOMEPAGE="https://grpc.io/"
COPYRIGHT="2015-2021 The gRPC Authors"
LICENSE="Apache v2"
REVISION="3"
SOURCE_URI="https://github.com/grpc/grpc/archive/v$portVersion/grpc-$portVersion.tar.gz"
CHECKSUM_SHA256="e5fb30aae1fa1cffa4ce00aa0bbfab908c0b899fcf0bbc30e268367d660d8656"
gtestCommit="c9ccac7cb7345901884aabf5d1a786cfa6e2f397"
SOURCE_URI_2="https://github.com/google/googletest/archive/$gtestCommit/googletest-$gtestCommit.tar.gz"
CHECKSUM_SHA256_2="443d383db648ebb8e391382c0ab63263b7091d03197f304390baac10f178a468"
SOURCE_DIR_2="googletest-$gtestCommit"
PATCHES="grpc-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="19.0.0"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
PROVIDES="
grpc$secondaryArchSuffix = $portVersion
cmd:grpc_cpp_plugin
lib:libaddress_sorting$secondaryArchSuffix = $libVersionCompat
lib:libgpr$secondaryArchSuffix = $libVersionCompat
lib:libgrpc$secondaryArchSuffix = $libVersionCompat
lib:libgrpc_plugin_support$secondaryArchSuffix = $libVersionCompat
lib:libgrpc_unsecure$secondaryArchSuffix = $libVersionCompat
lib:libgrpc++$secondaryArchSuffix = $libVersionCompat
lib:libgrpc++_alts$secondaryArchSuffix = $libVersionCompat
lib:libgrpc++_error_details$secondaryArchSuffix = $libVersionCompat
lib:libgrpc++_reflection$secondaryArchSuffix = $libVersionCompat
lib:libgrpc++_unsecure$secondaryArchSuffix = $libVersionCompat
lib:libgrpcpp_channelz$secondaryArchSuffix = $libVersionCompat
lib:libupb$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libabsl_cord$secondaryArchSuffix
lib:libabsl_status$secondaryArchSuffix
lib:libabsl_strings$secondaryArchSuffix
lib:libabsl_synchronization$secondaryArchSuffix
lib:libabsl_time$secondaryArchSuffix
lib:libcares$secondaryArchSuffix
lib:libcrypto$secondaryArchSuffix
lib:libprotobuf$secondaryArchSuffix
lib:libprotoc$secondaryArchSuffix
lib:libre2$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
PROVIDES_devel="
grpc${secondaryArchSuffix}_devel = $portVersion
devel:libaddress_sorting$secondaryArchSuffix = $libVersionCompat
devel:libgpr$secondaryArchSuffix = $libVersionCompat
devel:libgrpc$secondaryArchSuffix = $libVersionCompat
devel:libgrpc_unsecure$secondaryArchSuffix = $libVersionCompat
devel:libgrpc++$secondaryArchSuffix = $libVersionCompat
devel:libgrpc++_alts$secondaryArchSuffix = $libVersionCompat
devel:libgrpc++_error_details$secondaryArchSuffix = $libVersionCompat
devel:libgrpc++_reflection$secondaryArchSuffix = $libVersionCompat
devel:libgrpc++_unsecure$secondaryArchSuffix = $libVersionCompat
devel:libgrpcpp_channelz$secondaryArchSuffix = $libVersionCompat
devel:libupb$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
grpc$secondaryArchSuffix == $portVersion base
devel:libabsl_cord$secondaryArchSuffix
devel:libabsl_status$secondaryArchSuffix
devel:libabsl_strings$secondaryArchSuffix
devel:libabsl_synchronization$secondaryArchSuffix
devel:libabsl_time$secondaryArchSuffix
devel:libcares$secondaryArchSuffix
devel:libprotobuf$secondaryArchSuffix
devel:libre2$secondaryArchSuffix
devel:libssl$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libabsl_cord$secondaryArchSuffix
devel:libabsl_status$secondaryArchSuffix
devel:libabsl_strings$secondaryArchSuffix
devel:libabsl_synchronization$secondaryArchSuffix
devel:libabsl_time$secondaryArchSuffix
devel:libbenchmark$secondaryArchSuffix
devel:libcares$secondaryArchSuffix
devel:libprotobuf$secondaryArchSuffix
devel:libre2$secondaryArchSuffix
devel:libssl$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:gcc$secondaryArchSuffix
cmd:make
cmd:ninja
cmd:pkg_config$secondaryArchSuffix
"
TEST_REQUIRES="
cmd:python2
cmd:python3
six_python3
"
BUILD()
{
ln -sf $sourceDir2/googlemock $sourceDir2/googletest \
third_party/googletest
cmake -Bbuild -S . \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_POSITION_INDEPENDENT_CODE=NO \
-DBUILD_SHARED_LIBS=ON \
-DgRPC_INSTALL_BINDIR=$relativeBinDir \
-DgRPC_INSTALL_INCLUDEDIR=$relativeIncludeDir \
-DgRPC_INSTALL_LIBDIR=$relativeLibDir \
-DgRPC_INSTALL_CMAKEDIR=$relativeLibDir/cmake/grpc \
-DgRPC_INSTALL_SHAREDIR=$relativeDataDir/grpc \
-DgRPC_ABSL_PROVIDER='package' \
-DgRPC_BENCHMARK_PROVIDER='package' \
-DgRPC_CARES_PROVIDER='package' \
-DgRPC_ZLIB_PROVIDER='package' \
-DgRPC_PROTOBUF_PROVIDER='package' \
-DgRPC_PROTOBUF_PACKAGE_TYPE='MODULE' \
-DgRPC_RE2_PROVIDER='package' \
-DgRPC_SSL_PROVIDER='package' \
-DgRPC_ZLIB_PROVIDER='package' \
-DgRPC_USE_PROTO_LITE=OFF \
-DgRPC_BUILD_GRPC_CPP_PLUGIN=ON \
-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \
-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \
-DgRPC_BUILD_TESTS=ON \
-GNinja
cmake --build build -v $jobArgs
}
INSTALL()
{
unset -f cmake
cmake --install build
prepareInstalledDevelLibs libaddress_sorting libgpr libgrpc \
libgrpc_unsecure libgrpc++ libgrpc++_alts libgrpc++_error_details \
libgrpc++_reflection libgrpc++_unsecure libgrpcpp_channelz libupb
fixPkgconfig
packageEntries devel \
"$developDir" \
"$libDir"/cmake
}
TEST()
{
python3 tools/run_tests/run_tests.py -l c++
}