blob: ad621cd2e8a4b127f147eb94d55fb46b4834414b [file] [log] [blame]
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -08001Pod::Spec.new do |s|
2 s.name = 'gRPC'
Jorge Canizalescbf50c82015-06-13 01:34:44 -07003 s.version = '0.6.0'
Jorge Canizales043dc722015-06-02 15:15:07 -07004 s.summary = 'gRPC client library for iOS/OSX'
5 s.homepage = 'http://www.grpc.io'
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -08006 s.license = 'New BSD'
Jorge Canizales043dc722015-06-02 15:15:07 -07007 s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' }
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -08008
Jorge Canizales043dc722015-06-02 15:15:07 -07009 # s.source = { :git => 'https://github.com/grpc/grpc.git',
10 # :tag => 'release-0_9_1-objectivec-0.5.1' }
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080011
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080012 s.ios.deployment_target = '6.0'
Vince Gatto167b9722015-05-12 15:33:49 -070013 s.osx.deployment_target = '10.8'
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080014 s.requires_arc = true
15
Jorge Canizales461b0942015-06-02 20:40:50 -070016 # Reactive Extensions library for iOS.
Jorge Canizales045fabb2015-04-21 11:39:37 -070017 s.subspec 'RxLibrary' do |rs|
Jorge Canizales146f1772015-04-27 23:59:22 -070018 rs.source_files = 'src/objective-c/RxLibrary/*.{h,m}',
19 'src/objective-c/RxLibrary/transformations/*.{h,m}',
20 'src/objective-c/RxLibrary/private/*.{h,m}'
Jorge Canizales045fabb2015-04-21 11:39:37 -070021 rs.private_header_files = 'src/objective-c/RxLibrary/private/*.h'
22 end
23
Jorge Canizales461b0942015-06-02 20:40:50 -070024 # Core cross-platform gRPC library, written in C.
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080025 s.subspec 'C-Core' do |cs|
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080026 cs.source_files = 'src/core/**/*.{h,c}', 'include/grpc/*.h', 'include/grpc/**/*.h'
27 cs.private_header_files = 'src/core/**/*.h'
28 cs.header_mappings_dir = '.'
Jorge Canizales461b0942015-06-02 20:40:50 -070029 # The core library includes its headers as either "src/core/..." or "grpc/...", meaning we have
30 # to tell XCode to look for headers under the "include" subdirectory too.
31 #
32 # TODO(jcanizales): Instead of doing this, during installation move everything under
33 # "include/grpc" one directory up. The directory names under PODS_ROOT are implementation
34 # details of Cocoapods, and have changed in the past, breaking this podspec.
35 cs.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Private/gRPC" ' +
36 '"$(PODS_ROOT)/Headers/Private/gRPC/include"' }
Jorge Canizales043dc722015-06-02 15:15:07 -070037 cs.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080038
39 cs.requires_arc = false
40 cs.libraries = 'z'
41 cs.dependency 'OpenSSL', '~> 1.0.200'
42 end
43
Jorge Canizales146f1772015-04-27 23:59:22 -070044 # This is a workaround for Cocoapods Issue #1437.
45 # It renames time.h and string.h to grpc_time.h and grpc_string.h.
46 # It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run
47 # prepare_command's of subspecs.
Jorge Canizales461b0942015-06-02 20:40:50 -070048 #
49 # TODO(jcanizales): Try out Todd Reed's solution at Issue #1437.
Jorge Canizales146f1772015-04-27 23:59:22 -070050 s.prepare_command = <<-CMD
51 DIR_TIME="grpc/support"
52 BAD_TIME="$DIR_TIME/time.h"
53 GOOD_TIME="$DIR_TIME/grpc_time.h"
Jorge Canizales461b0942015-06-02 20:40:50 -070054 grep -rl "$BAD_TIME" include/grpc src/core | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g
Jorge Canizales146f1772015-04-27 23:59:22 -070055 if [ -f "include/$BAD_TIME" ];
56 then
Jorge Canizales461b0942015-06-02 20:40:50 -070057 mv -f "include/$BAD_TIME" "include/$GOOD_TIME"
Jorge Canizales146f1772015-04-27 23:59:22 -070058 fi
59
60 DIR_STRING="src/core/support"
61 BAD_STRING="$DIR_STRING/string.h"
62 GOOD_STRING="$DIR_STRING/grpc_string.h"
Jorge Canizales461b0942015-06-02 20:40:50 -070063 grep -rl "$BAD_STRING" include/grpc src/core | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g
Jorge Canizales146f1772015-04-27 23:59:22 -070064 if [ -f "$BAD_STRING" ];
65 then
Jorge Canizales461b0942015-06-02 20:40:50 -070066 mv -f "$BAD_STRING" "$GOOD_STRING"
Jorge Canizales146f1772015-04-27 23:59:22 -070067 fi
68 CMD
69
Jorge Canizales461b0942015-06-02 20:40:50 -070070 # Objective-C wrapper around the core gRPC library.
Jorge Canizales8957cae2015-04-22 23:40:18 -070071 s.subspec 'GRPCClient' do |gs|
Jorge Canizales146f1772015-04-27 23:59:22 -070072 gs.source_files = 'src/objective-c/GRPCClient/*.{h,m}',
73 'src/objective-c/GRPCClient/private/*.{h,m}'
Jorge Canizales8957cae2015-04-22 23:40:18 -070074 gs.private_header_files = 'src/objective-c/GRPCClient/private/*.h'
Jorge Canizales461b0942015-06-02 20:40:50 -070075 gs.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080076
Jorge Canizales8957cae2015-04-22 23:40:18 -070077 gs.dependency 'gRPC/C-Core'
Jorge Canizales461b0942015-06-02 20:40:50 -070078 # TODO(jcanizales): Remove this when the prepare_command moves everything under "include/grpc"
79 # one directory up.
Jorge Canizales8957cae2015-04-22 23:40:18 -070080 gs.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Public/gRPC/include"' }
81 gs.dependency 'gRPC/RxLibrary'
Jorge Canizalesba37a3e2015-03-23 15:34:58 -070082
Jorge Canizales8957cae2015-04-22 23:40:18 -070083 # Certificates, to be able to establish TLS connections:
84 gs.resource_bundles = { 'gRPC' => ['etc/roots.pem'] }
85 end
86
Jorge Canizales461b0942015-06-02 20:40:50 -070087 # RPC library for ProtocolBuffers, based on gRPC
Jorge Canizales8957cae2015-04-22 23:40:18 -070088 s.subspec 'ProtoRPC' do |ps|
Jorge Canizales8957cae2015-04-22 23:40:18 -070089 ps.source_files = 'src/objective-c/ProtoRPC/*.{h,m}'
90
91 ps.dependency 'gRPC/GRPCClient'
92 ps.dependency 'gRPC/RxLibrary'
Jorge Canizales461b0942015-06-02 20:40:50 -070093 ps.dependency 'Protobuf', '~> 3.0.0-alpha-3'
Jorge Canizales8957cae2015-04-22 23:40:18 -070094 end
Jorge Canizalesc2d7ecb2015-02-27 01:22:41 -080095end