%YAML 1.2
--- |
  # This file has been automatically generated from a template file.
  # Please make modifications to `templates/gRPC.podspec.template`
  # instead. This file can be regenerated from the template by running
  # `tools/buildgen/generate_projects.sh`.

  # Copyright 2015 gRPC authors.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.


  Pod::Spec.new do |s|
    s.name     = 'gRPC'
    version = '${settings.version}'
    s.version  = version
    s.summary  = 'gRPC client library for iOS/OSX'
    s.homepage = 'https://grpc.io'
    s.license  = 'Apache License, Version 2.0'
    s.authors  = { 'The gRPC contributors' => 'grpc-packages@google.com' }

    s.source = {
      :git => 'https://github.com/grpc/grpc.git',
      :tag => "v#{version}",
    }

    s.ios.deployment_target = '7.0'
    s.osx.deployment_target = '10.9'

    name = 'GRPCClient'
    s.module_name = name
    s.header_dir = name

    src_dir = 'src/objective-c/GRPCClient'

    s.dependency 'gRPC-RxLibrary', version
    s.default_subspec = 'Main'

    # Certificates, to be able to establish TLS connections:
    s.resource_bundles = { 'gRPCCertificates' => ['etc/roots.pem'] }

    s.pod_target_xcconfig = {
      # This is needed by all pods that depend on gRPC-RxLibrary:
      'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
      'CLANG_WARN_STRICT_PROTOTYPES' => 'NO',
    }

    s.subspec 'Main' do |ss|
      ss.header_mappings_dir = "#{src_dir}"

      ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
      ss.exclude_files = "#{src_dir}/GRPCCall+GID.{h,m}"
      ss.private_header_files = "#{src_dir}/private/*.h"

      ss.dependency 'gRPC-Core', version
    end

    s.subspec 'GID' do |ss|
      ss.ios.deployment_target = '7.0'

      ss.header_mappings_dir = "#{src_dir}"

      ss.source_files = "#{src_dir}/GRPCCall+GID.{h,m}"

      ss.dependency "#{s.name}/Main", version
      ss.dependency 'Google/SignIn'
    end
  end
