%YAML 1.2
--- |
  # This file has been automatically generated from a template file.
  # Please make modifications to
  # `templates/gRPC-ProtoRPC.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-ProtoRPC'
    version = '${settings.version}'
    s.version  = version
    s.summary  = 'RPC library for Protocol Buffers, based on gRPC'
    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'
    s.tvos.deployment_target = '10.0'

    name = 'ProtoRPC'
    s.module_name = name
    s.header_dir = name

    src_dir = 'src/objective-c/ProtoRPC'

    s.default_subspec = 'Main'

    s.subspec 'Main' do |ss|
      ss.header_mappings_dir = "#{src_dir}"
      ss.dependency 'gRPC', version
      ss.dependency 'gRPC-RxLibrary', version
      ss.dependency 'Protobuf', '~> 3.0'

      ss.source_files = "#{src_dir}/*.{h,m}"
    end

    # CFStream is now default. Leaving this subspec only for compatibility purpose.
    s.subspec 'CFStream' do |ss|
      ss.dependency "#{s.name}/Main", version
    end

    s.pod_target_xcconfig = {
      # This is needed by all pods that depend on Protobuf:
      'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1',
      # 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',
    }
  end
