distributable:
  url: git+https://github.com/grpc/grpc
  ref: v{{version}}

versions:
  github: grpc/grpc

provides:
  - bin/grpc_csharp_plugin
  - bin/grpc_node_plugin
  - bin/grpc_cpp_plugin
  - bin/grpc_python_plugin
  - bin/grpc_objective_c_plugin
  - bin/grpc_ruby_plugin
  - bin/grpc_php_plugin
  - bin/grpc_cli

dependencies:
  abseil.io: '*'
  c-ares.org: '*'
  openssl.org: ^1.1
  protobuf.dev: '>=22.3'
  github.com/google/re2: '*'
  zlib.net: '*'

build:
  dependencies:
    gnu.org/autoconf: '*'
    gnu.org/automake: '*'
    gnu.org/libtool: '*'
    cmake.org: ^3
    freedesktop.org/pkg-config: ^0
    git-scm.org: ^2
  working-directory: cmake/build
  script:
    - run: git submodule update --init --recursive
      working-directory: ../..

    - cmake $COMMON_ARGS $ARGS ../..
    - make install

    # Build the cli
    - cmake $COMMON_ARGS $CLI_ARGS ../..
    - make grpc_cli

    - cp grpc_cli "{{prefix}}/bin"
    - cp libgrpc++_test_config.* "{{prefix}}/lib"

    - run: install_name_tool -add_rpath @loader_path libgrpc++_test_config.dylib
      working-directory: "{{prefix}}/lib"
      if: darwin
  env:
    COMMON_ARGS:
      - -DCMAKE_BUILD_TYPE=Release
      - -DCMAKE_INSTALL_PREFIX="{{prefix}}"
      - -DCMAKE_INSTALL_RPATH={{prefix}}
      - -DBUILD_SHARED_LIBS=ON
    ARGS:
      - -DCMAKE_CXX_STANDARD=17
      - -DCMAKE_CXX_STANDARD_REQUIRED=TRUE
      - -DgRPC_BUILD_TESTS=OFF
      - -DgRPC_INSTALL=ON
      - -DgRPC_ABSL_PROVIDER=package
      - -DgRPC_CARES_PROVIDER=package
      - -DgRPC_PROTOBUF_PROVIDER=package
      - -DgRPC_SSL_PROVIDER=package
      - -DgRPC_ZLIB_PROVIDER=package
      - -DgRPC_RE2_PROVIDER=package
    CLI_ARGS:
      - -DgRPC_BUILD_TESTS=ON

test:
  dependencies:
    freedesktop.org/pkg-config: ^0
  fixture: |
    #include <grpc/grpc.h>
    int main() {
      grpc_init();
      grpc_shutdown();
      return GRPC_STATUS_OK;
    }
  script:
    - cp $FIXTURE test.cpp
    - PKG_CONFIG=$(pkg-config --cflags --libs libcares protobuf re2 grpc++)
    - cc $PKG_CONFIG test.cpp -o test
    - ./test

    - (grpc_cli ls localhost:58931 2>&1 || true) | grep "failed to connect to all addresses"
