Merge pull request #19855 from Tony1023/bazel_objc_tests
Added Bazel BUILD for ObjC Tests and Examples
This commit is contained in:
commit
eae902594b
|
|
@ -843,10 +843,8 @@ Pod::Spec.new do |s|
|
|||
end
|
||||
|
||||
s.prepare_command = <<-END_OF_COMMAND
|
||||
find src/cpp/ -type f ! -path '*.grpc_back' -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(pb(_.*)?\\.h)";#include <nanopb/\\1>;g'
|
||||
find src/cpp/ -type f -path '*.grpc_back' -print0 | xargs -0 rm
|
||||
find src/core/ -type f ! -path '*.grpc_back' -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(pb(_.*)?\\.h)";#include <nanopb/\\1>;g'
|
||||
find src/core/ -type f -path '*.grpc_back' -print0 | xargs -0 rm
|
||||
sed -E -i '' 's;#include "(pb(_.*)?\\.h)";#if COCOAPODS==1\\\n #include <nanopb/\\1>\\\n#else\\\n #include "\\1"\\\n#endif;g' $(find src/core -type f -print | xargs grep -H -c '#include <nanopb/' | grep 0$ | cut -d':' -f1)
|
||||
sed -E -i '' 's;#include "(pb(_.*)?\\.h)";#if COCOAPODS==1\\\n #include <nanopb/\\1>\\\n#else\\\n #include "\\1"\\\n#endif;g' $(find src/cpp -type f -print | xargs grep -H -c '#include <nanopb/' | grep 0$ | cut -d':' -f1)
|
||||
find src/core/ third_party/upb/ -type f \\( -name '*.h' -or -name '*.c' -or -name '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "upb/(.*)";#if COCOAPODS==1\\\n #include "third_party/upb/upb/\\1"\\\n#else\\\n #include "upb/\\1"\\\n#endif;g'
|
||||
find src/core/ third_party/upb/ -type f -name '*.grpc_back' -print0 | xargs -0 rm
|
||||
find src/core/ src/cpp/ -type f \\( -name '*.h' -or -name '*.c' -or -name '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(.*).upb.h";#if COCOAPODS==1\\\n #include "src/core/ext/upb-generated/\\1.upb.h"\\\n#else\\\n #include "\\1.upb.h"\\\n#endif;g'
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ Pod::Spec.new do |s|
|
|||
}
|
||||
|
||||
repo_root = '../..'
|
||||
bazel = "#{repo_root}/tools/bazel"
|
||||
plugin = 'grpc_cpp_plugin'
|
||||
|
||||
s.preserve_paths = plugin
|
||||
|
|
@ -111,15 +112,6 @@ Pod::Spec.new do |s|
|
|||
# present in this pod's directory. We use that knowledge to check for the existence of the file
|
||||
# and, if absent, compile the plugin from the local sources.
|
||||
s.prepare_command = <<-CMD
|
||||
if [ ! -f #{plugin} ]; then
|
||||
cd #{repo_root}
|
||||
# This will build the plugin and put it in #{repo_root}/bins/opt.
|
||||
#
|
||||
# TODO(jcanizales): I reckon make will try to use locally-installed libprotoc (headers and
|
||||
# library binary) if found, which _we do not want_. Find a way for this to always use the
|
||||
# sources in the repo.
|
||||
make #{plugin}
|
||||
cd -
|
||||
fi
|
||||
#{bazel} build //src/compiler:grpc_cpp_plugin
|
||||
CMD
|
||||
end
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ Pod::Spec.new do |s|
|
|||
}
|
||||
|
||||
repo_root = '../..'
|
||||
bazel = "#{repo_root}/tools/bazel"
|
||||
plugin = 'grpc_objective_c_plugin'
|
||||
|
||||
s.preserve_paths = plugin
|
||||
|
|
@ -115,15 +116,6 @@ Pod::Spec.new do |s|
|
|||
# present in this pod's directory. We use that knowledge to check for the existence of the file
|
||||
# and, if absent, compile the plugin from the local sources.
|
||||
s.prepare_command = <<-CMD
|
||||
if [ ! -f #{plugin} ]; then
|
||||
cd #{repo_root}
|
||||
# This will build the plugin and put it in #{repo_root}/bins/opt.
|
||||
#
|
||||
# TODO(jcanizales): I reckon make will try to use locally-installed libprotoc (headers and
|
||||
# library binary) if found, which _we do not want_. Find a way for this to always use the
|
||||
# sources in the repo.
|
||||
make #{plugin}
|
||||
cd -
|
||||
fi
|
||||
#{bazel} build //src/compiler:grpc_objective_c_plugin
|
||||
CMD
|
||||
end
|
||||
|
|
|
|||
|
|
@ -120,20 +120,9 @@ Pod::Spec.new do |s|
|
|||
# present in this pod's directory. We use that knowledge to check for the existence of the file
|
||||
# and, if absent, build it from the local sources.
|
||||
repo_root = '../..'
|
||||
plugin = 'grpc_objective_c_plugin'
|
||||
bazel = "#{repo_root}/tools/bazel"
|
||||
|
||||
s.prepare_command = <<-CMD
|
||||
if [ ! -f bin/protoc ]; then
|
||||
cd #{repo_root}
|
||||
# This will build protoc from the Protobuf submodule of gRPC, and put it in
|
||||
# #{repo_root}/bins/opt/protobuf.
|
||||
#
|
||||
# TODO(jcanizales): Make won't build protoc from sources if one's locally installed, which
|
||||
# _we do not want_. Find a way for this to always build from source.
|
||||
make #{plugin}
|
||||
cd -
|
||||
else
|
||||
mv bin/protoc .
|
||||
mv include/google .
|
||||
fi
|
||||
#{bazel} build @com_google_protobuf//:protoc
|
||||
CMD
|
||||
end
|
||||
|
|
|
|||
|
|
@ -87,10 +87,47 @@ grpc_objc_library(
|
|||
# Different from Cocoapods, do not import as if @com_google_protobuf//:protobuf_objc is a framework,
|
||||
# use the real paths of @com_google_protobuf//:protobuf_objc instead
|
||||
defines = ["GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=0"],
|
||||
includes = ["src/objective-c"],
|
||||
deps = [
|
||||
":grpc_objc_client",
|
||||
":rx_library",
|
||||
"@com_google_protobuf//:protobuf_objc",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_objc_library(
|
||||
name = "grpc_objc_client_internal_testing",
|
||||
srcs = glob(
|
||||
[
|
||||
"GRPCClient/*.m",
|
||||
"GRPCClient/private/*.m",
|
||||
"GRPCClient/internal_testing/*.m",
|
||||
"ProtoRPC/*.m",
|
||||
],
|
||||
exclude = ["GRPCClient/GRPCCall+GID.m"],
|
||||
),
|
||||
hdrs = glob(
|
||||
[
|
||||
"GRPCClient/*.h",
|
||||
"GRPCClient/internal/*.h",
|
||||
"GRPCClient/internal_testing/*.h",
|
||||
"ProtoRPC/*.h",
|
||||
],
|
||||
exclude = ["GRPCClient/GRPCCall+GID.h"],
|
||||
),
|
||||
includes = ["."],
|
||||
data = ["//:gRPCCertificates"],
|
||||
defines = [
|
||||
"GRPC_TEST_OBJC=1",
|
||||
"GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=0",
|
||||
],
|
||||
textual_hdrs = glob(
|
||||
[
|
||||
"GRPCClient/private/*.h",
|
||||
],
|
||||
),
|
||||
deps = [
|
||||
":rx_library",
|
||||
"//:grpc_objc",
|
||||
"@com_google_protobuf//:protobuf_objc",
|
||||
],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#ifdef GRPC_TEST_OBJC
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* Logs the op batches of a client. Used for testing.
|
||||
|
|
|
|||
|
|
@ -14,56 +14,159 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
licenses(["notice"]) # 3-clause BSD
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
|
||||
load(
|
||||
"@com_github_grpc_grpc//bazel:objc_grpc_library.bzl",
|
||||
"objc_grpc_library",
|
||||
"//src/objective-c:grpc_objc_internal_library.bzl",
|
||||
"grpc_objc_examples_library",
|
||||
"local_objc_grpc_library",
|
||||
"proto_library_objc_wrapper",
|
||||
)
|
||||
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
|
||||
load("@build_bazel_rules_apple//apple:tvos.bzl", "tvos_application")
|
||||
load("@build_bazel_rules_apple//apple:watchos.bzl", "watchos_application", "watchos_extension")
|
||||
|
||||
proto_library(
|
||||
proto_library_objc_wrapper(
|
||||
name = "messages_proto",
|
||||
srcs = ["BazelBuildSamples/messages.proto"],
|
||||
visibility = ["//visibility:public"],
|
||||
srcs = ["RemoteTestClient/messages.proto"],
|
||||
)
|
||||
|
||||
objc_grpc_library(
|
||||
name = "test_grpc_objc",
|
||||
srcs = ["BazelBuildSamples/rmt/test.proto"],
|
||||
proto_library_objc_wrapper(
|
||||
name = "test_proto",
|
||||
srcs = ["RemoteTestClient/test.proto"],
|
||||
deps = [":messages_proto"],
|
||||
use_well_known_protos = True,
|
||||
)
|
||||
|
||||
# use objc_grpc_library in bazel:objc_grpc_library.bzl when developing outside the repo
|
||||
local_objc_grpc_library(
|
||||
name = "RemoteTest",
|
||||
srcs = ["RemoteTestClient/test.proto"],
|
||||
use_well_known_protos = True,
|
||||
deps = [
|
||||
"//src/objective-c/examples/BazelBuildSamples/rmt:test_proto",
|
||||
"//src/objective-c/examples:test_proto",
|
||||
],
|
||||
)
|
||||
|
||||
# Proof that without this works without srcs
|
||||
objc_grpc_library(
|
||||
local_objc_grpc_library(
|
||||
name = "test_objc",
|
||||
use_well_known_protos = True,
|
||||
deps = [
|
||||
"//src/objective-c/examples/BazelBuildSamples/rmt:test_proto",
|
||||
]
|
||||
"//src/objective-c/examples:test_proto",
|
||||
],
|
||||
)
|
||||
|
||||
objc_library(
|
||||
name = "ios-sample-lib",
|
||||
srcs = glob(["BazelBuildSamples/ios-sample/ios-sample/**/*.m"]),
|
||||
hdrs = glob(["BazelBuildSamples/ios-sample/ios-sample/**/*.h"]),
|
||||
grpc_objc_examples_library(
|
||||
name = "Sample-lib",
|
||||
srcs = glob(["Sample/Sample/**/*.m"]),
|
||||
hdrs = glob(["Sample/Sample/**/*.h"]),
|
||||
data = glob([
|
||||
"BazelBuildSamples/ios-sample/ios-sample/Assets.xcassets/**/*",
|
||||
"BazelBuildSamples/ios-sample/ios-sample/Base.lproj/**/*"
|
||||
"Sample/Sample/Base.lproj/**",
|
||||
"Sample/Sample/Images.xcassets/**",
|
||||
]),
|
||||
deps = [
|
||||
":test_grpc_objc",
|
||||
]
|
||||
)
|
||||
|
||||
ios_application(
|
||||
name = "ios-sample",
|
||||
bundle_id = "com.google.ios-sample-objc-bazel",
|
||||
families = ["iphone"],
|
||||
minimum_os_version = "9.0",
|
||||
infoplists = ["BazelBuildSamples/ios-sample/ios-sample/Info.plist"],
|
||||
name = "Sample",
|
||||
bundle_id = "io.grpc.Sample",
|
||||
minimum_os_version = "8.0",
|
||||
infoplists = ["Sample/Sample/Info.plist"],
|
||||
families = [
|
||||
"iphone",
|
||||
"ipad",
|
||||
],
|
||||
deps = ["Sample-lib"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [":ios-sample-lib"],
|
||||
)
|
||||
)
|
||||
|
||||
grpc_objc_examples_library(
|
||||
name = "InterceptorSample-lib",
|
||||
srcs = glob(["InterceptorSample/InterceptorSample/**/*.m"]),
|
||||
hdrs = glob(["InterceptorSample/InterceptorSample/**/*.h"]),
|
||||
data = glob([
|
||||
"InterceptorSample/InterceptorSample/Base.lproj/**",
|
||||
"InterceptorSample/InterceptorSample/Images.xcassets/**",
|
||||
]),
|
||||
)
|
||||
|
||||
ios_application(
|
||||
name = "InterceptorSample",
|
||||
bundle_id = "io.grpc.InterceptorSample",
|
||||
minimum_os_version = "9.0", # Safe Area Layout Guide used
|
||||
infoplists = ["InterceptorSample/InterceptorSample/Info.plist"],
|
||||
families = [
|
||||
"iphone",
|
||||
"ipad",
|
||||
],
|
||||
deps = ["InterceptorSample-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_examples_library(
|
||||
name = "tvOS-sample-lib",
|
||||
srcs = glob(["tvOS-sample/tvOS-sample/**/*.m"]),
|
||||
hdrs = glob(["tvOS-sample/tvOS-sample/**/*.h"]),
|
||||
data = glob([
|
||||
"tvOS-sample/tvOS-sample/Base.lproj/**",
|
||||
"tvOS-sample/tvOS-sample/Images.xcassets/**",
|
||||
]),
|
||||
)
|
||||
|
||||
# c-ares does not support tvOS CPU architecture with Bazel yet
|
||||
tvos_application(
|
||||
name = "tvOS-sample",
|
||||
bundle_id = "io.grpc.tvOS-sample",
|
||||
minimum_os_version = "10.0",
|
||||
infoplists = ["tvOS-sample/tvOS-sample/Info.plist"],
|
||||
deps = [":tvOS-sample-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_examples_library(
|
||||
name = "watchOS-sample-iOS-lib",
|
||||
srcs = glob(["watchOS-sample/watchOS-sample/**/*.m"]),
|
||||
hdrs = glob(["watchOS-sample/watchOS-sample/**/*.h"]),
|
||||
data = glob([
|
||||
"watchOS-sample/watchOS-sample/Base.lproj/**",
|
||||
"watchOS-sample/watchOS-sample/Images.xcassets/**",
|
||||
]),
|
||||
)
|
||||
|
||||
grpc_objc_examples_library(
|
||||
name = "watchOS-sample-extension-lib",
|
||||
srcs = glob(["watchOS-sample/WatchKit-Extention/**/*.m"]),
|
||||
hdrs = glob(["watchOS-sample/WatchKit-Extension/**/*.h"]),
|
||||
sdk_frameworks = [
|
||||
"WatchConnectivity",
|
||||
"WatchKit",
|
||||
],
|
||||
)
|
||||
|
||||
ios_application(
|
||||
name = "watchOS-sample",
|
||||
bundle_id = "io.grpc.watchOS-sample",
|
||||
minimum_os_version = "9.0", # Safe Area Layout Guide used
|
||||
families = ["iphone"],
|
||||
infoplists = ["watchOS-sample/watchOS-sample/Info.plist"],
|
||||
deps = [":watchOS-sample-iOS-lib"],
|
||||
watch_application = "watchOS-sample-watchApp",
|
||||
)
|
||||
|
||||
# c-ares does not support watchOS CPU architecture with Bazel yet
|
||||
watchos_application(
|
||||
name = "watchOS-sample-watchApp",
|
||||
bundle_id = "io.grpc.watchOS-sample.watchkitapp",
|
||||
minimum_os_version = "4.0",
|
||||
storyboards = ["watchOS-sample/WatchKit-App/Base.lproj/Interface.storyboard"],
|
||||
infoplists = ["watchOS-sample/WatchKit-App/Info.plist"],
|
||||
extension = ":watchOS-sample-extension",
|
||||
)
|
||||
|
||||
watchos_extension(
|
||||
name = "watchOS-sample-extension",
|
||||
bundle_id = "io.grpc.watchOS-sample.watchkitapp.watchkitextension",
|
||||
minimum_os_version = "4.0",
|
||||
infoplists = ["watchOS-sample/WatchKit-Extension/Info.plist"],
|
||||
deps = [":watchOS-sample-extension-lib"],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
platform :ios, '8.0'
|
||||
|
||||
install! 'cocoapods', :deterministic_uuids => false
|
||||
|
||||
ROOT_DIR = '../../../../..'
|
||||
|
||||
target 'ios-sample' do
|
||||
pod 'gRPC-ProtoRPC', :path => ROOT_DIR
|
||||
pod 'gRPC', :path => ROOT_DIR
|
||||
pod 'gRPC-Core', :path => ROOT_DIR
|
||||
pod 'gRPC-RxLibrary', :path => ROOT_DIR
|
||||
pod 'RemoteTest', :path => "../../RemoteTestClient"
|
||||
pod '!ProtoCompiler-gRPCPlugin', :path => "#{ROOT_DIR}/src/objective-c"
|
||||
end
|
||||
|
||||
pre_install do |installer|
|
||||
grpc_core_spec = installer.pod_targets.find{|t| t.name.start_with?('gRPC-Core')}.root_spec
|
||||
|
||||
src_root = "$(PODS_TARGET_SRCROOT)"
|
||||
grpc_core_spec.pod_target_xcconfig = {
|
||||
'GRPC_SRC_ROOT' => src_root,
|
||||
'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(GRPC_SRC_ROOT)/include"',
|
||||
'USER_HEADER_SEARCH_PATHS' => '"$(GRPC_SRC_ROOT)"',
|
||||
# If we don't set these two settings, `include/grpc/support/time.h` and
|
||||
# `src/core/lib/gpr/string.h` shadow the system `<time.h>` and `<string.h>`, breaking the
|
||||
# build.
|
||||
'USE_HEADERMAP' => 'NO',
|
||||
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
|
||||
}
|
||||
end
|
||||
|
||||
|
|
@ -1,413 +0,0 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
AB433CC922D7E38000D579CC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = AB433CC822D7E38000D579CC /* AppDelegate.m */; };
|
||||
AB433CCC22D7E38000D579CC /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB433CCB22D7E38000D579CC /* ViewController.m */; };
|
||||
AB433CCF22D7E38000D579CC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB433CCD22D7E38000D579CC /* Main.storyboard */; };
|
||||
AB433CD122D7E38100D579CC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AB433CD022D7E38100D579CC /* Assets.xcassets */; };
|
||||
AB433CD422D7E38100D579CC /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB433CD222D7E38100D579CC /* LaunchScreen.storyboard */; };
|
||||
AB433CD722D7E38100D579CC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AB433CD622D7E38100D579CC /* main.m */; };
|
||||
ED11F6CDF54788FC7CFD87B1 /* libPods-ios-sample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AF80A181E30BD84FA56BE33 /* libPods-ios-sample.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
112D4595FA3E81552DA9E877 /* Pods-ios-sample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-sample.release.xcconfig"; path = "Target Support Files/Pods-ios-sample/Pods-ios-sample.release.xcconfig"; sourceTree = "<group>"; };
|
||||
5AF80A181E30BD84FA56BE33 /* libPods-ios-sample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ios-sample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
72599BE4AC5785D3368D40DD /* Pods-ios-sample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ios-sample.debug.xcconfig"; path = "Target Support Files/Pods-ios-sample/Pods-ios-sample.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
AB433CC422D7E38000D579CC /* ios-sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-sample.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AB433CC722D7E38000D579CC /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
AB433CC822D7E38000D579CC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
AB433CCA22D7E38000D579CC /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
AB433CCB22D7E38000D579CC /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
AB433CCE22D7E38000D579CC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
AB433CD022D7E38100D579CC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
AB433CD322D7E38100D579CC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
AB433CD522D7E38100D579CC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
AB433CD622D7E38100D579CC /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
AB433CC122D7E38000D579CC /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
ED11F6CDF54788FC7CFD87B1 /* libPods-ios-sample.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
2A170580B60E92B1A65525D4 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
72599BE4AC5785D3368D40DD /* Pods-ios-sample.debug.xcconfig */,
|
||||
112D4595FA3E81552DA9E877 /* Pods-ios-sample.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AB433CBB22D7E38000D579CC = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AB433CC622D7E38000D579CC /* ios-sample */,
|
||||
AB433CC522D7E38000D579CC /* Products */,
|
||||
2A170580B60E92B1A65525D4 /* Pods */,
|
||||
FD148AE940967C50DB2C12CB /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AB433CC522D7E38000D579CC /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AB433CC422D7E38000D579CC /* ios-sample.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AB433CC622D7E38000D579CC /* ios-sample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AB433CC722D7E38000D579CC /* AppDelegate.h */,
|
||||
AB433CC822D7E38000D579CC /* AppDelegate.m */,
|
||||
AB433CCA22D7E38000D579CC /* ViewController.h */,
|
||||
AB433CCB22D7E38000D579CC /* ViewController.m */,
|
||||
AB433CCD22D7E38000D579CC /* Main.storyboard */,
|
||||
AB433CD022D7E38100D579CC /* Assets.xcassets */,
|
||||
AB433CD222D7E38100D579CC /* LaunchScreen.storyboard */,
|
||||
AB433CD522D7E38100D579CC /* Info.plist */,
|
||||
AB433CD622D7E38100D579CC /* main.m */,
|
||||
);
|
||||
path = "ios-sample";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FD148AE940967C50DB2C12CB /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5AF80A181E30BD84FA56BE33 /* libPods-ios-sample.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
AB433CC322D7E38000D579CC /* ios-sample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AB433CDA22D7E38100D579CC /* Build configuration list for PBXNativeTarget "ios-sample" */;
|
||||
buildPhases = (
|
||||
9DD34A50D448CD3F464D4A3C /* [CP] Check Pods Manifest.lock */,
|
||||
AB433CC022D7E38000D579CC /* Sources */,
|
||||
AB433CC122D7E38000D579CC /* Frameworks */,
|
||||
AB433CC222D7E38000D579CC /* Resources */,
|
||||
630985F7228D41528084692C /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "ios-sample";
|
||||
productName = "ios-sample";
|
||||
productReference = AB433CC422D7E38000D579CC /* ios-sample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
AB433CBC22D7E38000D579CC /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1010;
|
||||
ORGANIZATIONNAME = "Tony Lu";
|
||||
TargetAttributes = {
|
||||
AB433CC322D7E38000D579CC = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = AB433CBF22D7E38000D579CC /* Build configuration list for PBXProject "ios-sample" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = AB433CBB22D7E38000D579CC;
|
||||
productRefGroup = AB433CC522D7E38000D579CC /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
AB433CC322D7E38000D579CC /* ios-sample */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
AB433CC222D7E38000D579CC /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AB433CD422D7E38100D579CC /* LaunchScreen.storyboard in Resources */,
|
||||
AB433CD122D7E38100D579CC /* Assets.xcassets in Resources */,
|
||||
AB433CCF22D7E38000D579CC /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
630985F7228D41528084692C /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-ios-sample/Pods-ios-sample-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-ios-sample/Pods-ios-sample-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ios-sample/Pods-ios-sample-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
9DD34A50D448CD3F464D4A3C /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-ios-sample-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
AB433CC022D7E38000D579CC /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AB433CCC22D7E38000D579CC /* ViewController.m in Sources */,
|
||||
AB433CD722D7E38100D579CC /* main.m in Sources */,
|
||||
AB433CC922D7E38000D579CC /* AppDelegate.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
AB433CCD22D7E38000D579CC /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
AB433CCE22D7E38000D579CC /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AB433CD222D7E38100D579CC /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
AB433CD322D7E38100D579CC /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
AB433CD822D7E38100D579CC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AB433CD922D7E38100D579CC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
AB433CDB22D7E38100D579CC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 72599BE4AC5785D3368D40DD /* Pods-ios-sample.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
INFOPLIST_FILE = "ios-sample/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.ios-sample-objc-bazel";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
AB433CDC22D7E38100D579CC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 112D4595FA3E81552DA9E877 /* Pods-ios-sample.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
INFOPLIST_FILE = "ios-sample/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.ios-sample-objc-bazel";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
AB433CBF22D7E38000D579CC /* Build configuration list for PBXProject "ios-sample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AB433CD822D7E38100D579CC /* Debug */,
|
||||
AB433CD922D7E38100D579CC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AB433CDA22D7E38100D579CC /* Build configuration list for PBXNativeTarget "ios-sample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AB433CDB22D7E38100D579CC /* Debug */,
|
||||
AB433CDC22D7E38100D579CC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = AB433CBC22D7E38000D579CC /* Project object */;
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 2019 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application
|
||||
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
// Override point for customization after application launch.
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for
|
||||
// certain types of temporary interruptions (such as an incoming phone call or SMS message) or
|
||||
// when the user quits the application and it begins the transition to the background state. Use
|
||||
// this method to pause ongoing tasks, disable timers, and invalidate graphics rendering
|
||||
// callbacks. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store
|
||||
// enough application state information to restore your application to its current state in case
|
||||
// it is terminated later. If your application supports background execution, this method is
|
||||
// called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||
// Called as part of the transition from the background to the active state; here you can undo
|
||||
// many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If
|
||||
// the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application {
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also
|
||||
// applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "83.5x83.5",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iTL-zv-YSZ">
|
||||
<rect key="frame" x="164" y="318" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Button"/>
|
||||
<connections>
|
||||
<action selector="tapCall:" destination="BYZ-38-t0r" eventType="touchUpInside" id="c5c-m5-SGC"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 2019 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#import "ViewController.h"
|
||||
|
||||
#import <GRPCClient/GRPCCall.h>
|
||||
#if COCOAPODS
|
||||
#import <RemoteTest/Messages.pbobjc.h>
|
||||
#import <RemoteTest/Test.pbrpc.h>
|
||||
#else
|
||||
#import "src/objective-c/examples/BazelBuildSamples/Messages.pbobjc.h"
|
||||
#import "src/objective-c/examples/BazelBuildSamples/rmt/Test.pbrpc.h"
|
||||
#endif
|
||||
|
||||
static NSString *const kPackage = @"grpc.testing";
|
||||
static NSString *const kService = @"TestService";
|
||||
|
||||
@interface ViewController ()<GRPCResponseHandler>
|
||||
|
||||
@end
|
||||
|
||||
@implementation ViewController {
|
||||
GRPCCallOptions *_options;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
GRPCMutableCallOptions *options = [[GRPCMutableCallOptions alloc] init];
|
||||
// optionally modify options
|
||||
_options = options;
|
||||
}
|
||||
|
||||
- (IBAction)tapCall:(id)sender {
|
||||
GRPCProtoMethod *kUnaryCallMethod =
|
||||
[[GRPCProtoMethod alloc] initWithPackage:kPackage service:kService method:@"UnaryCall"];
|
||||
|
||||
GRPCRequestOptions *requestOptions =
|
||||
[[GRPCRequestOptions alloc] initWithHost:@"grpc-test.sandbox.googleapis.com"
|
||||
path:kUnaryCallMethod.HTTPPath
|
||||
safety:GRPCCallSafetyCacheableRequest];
|
||||
|
||||
GRPCCall2 *call = [[GRPCCall2 alloc] initWithRequestOptions:requestOptions
|
||||
responseHandler:self
|
||||
callOptions:_options];
|
||||
|
||||
RMTSimpleRequest *request = [RMTSimpleRequest message];
|
||||
request.responseSize = 100;
|
||||
|
||||
[call start];
|
||||
[call writeData:[request data]];
|
||||
[call finish];
|
||||
}
|
||||
|
||||
- (dispatch_queue_t)dispatchQueue {
|
||||
return dispatch_get_main_queue();
|
||||
}
|
||||
|
||||
- (void)didReceiveInitialMetadata:(NSDictionary *)initialMetadata {
|
||||
NSLog(@"Header: %@", initialMetadata);
|
||||
}
|
||||
|
||||
- (void)didReceiveData:(id)data {
|
||||
NSLog(@"Message: %@", data);
|
||||
}
|
||||
|
||||
- (void)didCloseWithTrailingMetadata:(NSDictionary *)trailingMetadata error:(NSError *)error {
|
||||
NSLog(@"Trailer: %@\nError: %@", trailingMetadata, error);
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -1,118 +0,0 @@
|
|||
// 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.
|
||||
|
||||
// Message definitions to be used by integration test service definitions.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package grpc.testing;
|
||||
|
||||
option objc_class_prefix = "RMT";
|
||||
|
||||
// The type of payload that should be returned.
|
||||
enum PayloadType {
|
||||
// Compressable text format.
|
||||
COMPRESSABLE = 0;
|
||||
|
||||
// Uncompressable binary format.
|
||||
UNCOMPRESSABLE = 1;
|
||||
|
||||
// Randomly chosen from all other formats defined in this enum.
|
||||
RANDOM = 2;
|
||||
}
|
||||
|
||||
// A block of data, to simply increase gRPC message size.
|
||||
message Payload {
|
||||
// The type of data in body.
|
||||
PayloadType type = 1;
|
||||
// Primary contents of payload.
|
||||
bytes body = 2;
|
||||
}
|
||||
|
||||
// Unary request.
|
||||
message SimpleRequest {
|
||||
// Desired payload type in the response from the server.
|
||||
// If response_type is RANDOM, server randomly chooses one from other formats.
|
||||
PayloadType response_type = 1;
|
||||
|
||||
// Desired payload size in the response from the server.
|
||||
// If response_type is COMPRESSABLE, this denotes the size before compression.
|
||||
int32 response_size = 2;
|
||||
|
||||
// Optional input payload sent along with the request.
|
||||
Payload payload = 3;
|
||||
|
||||
// Whether SimpleResponse should include username.
|
||||
bool fill_username = 4;
|
||||
|
||||
// Whether SimpleResponse should include OAuth scope.
|
||||
bool fill_oauth_scope = 5;
|
||||
}
|
||||
|
||||
// Unary response, as configured by the request.
|
||||
message SimpleResponse {
|
||||
// Payload to increase message size.
|
||||
Payload payload = 1;
|
||||
// The user the request came from, for verifying authentication was
|
||||
// successful when the client expected it.
|
||||
string username = 2;
|
||||
// OAuth scope.
|
||||
string oauth_scope = 3;
|
||||
}
|
||||
|
||||
// Client-streaming request.
|
||||
message StreamingInputCallRequest {
|
||||
// Optional input payload sent along with the request.
|
||||
Payload payload = 1;
|
||||
|
||||
// Not expecting any payload from the response.
|
||||
}
|
||||
|
||||
// Client-streaming response.
|
||||
message StreamingInputCallResponse {
|
||||
// Aggregated size of payloads received from the client.
|
||||
int32 aggregated_payload_size = 1;
|
||||
}
|
||||
|
||||
// Configuration for a particular response.
|
||||
message ResponseParameters {
|
||||
// Desired payload sizes in responses from the server.
|
||||
// If response_type is COMPRESSABLE, this denotes the size before compression.
|
||||
int32 size = 1;
|
||||
|
||||
// Desired interval between consecutive responses in the response stream in
|
||||
// microseconds.
|
||||
int32 interval_us = 2;
|
||||
}
|
||||
|
||||
// Server-streaming request.
|
||||
message StreamingOutputCallRequest {
|
||||
// Desired payload type in the response from the server.
|
||||
// If response_type is RANDOM, the payload from each response in the stream
|
||||
// might be of different types. This is to simulate a mixed type of payload
|
||||
// stream.
|
||||
PayloadType response_type = 1;
|
||||
|
||||
// Configuration for each expected response message.
|
||||
repeated ResponseParameters response_parameters = 2;
|
||||
|
||||
// Optional input payload sent along with the request.
|
||||
Payload payload = 3;
|
||||
}
|
||||
|
||||
// Server-streaming response, as configured by the request and parameters.
|
||||
message StreamingOutputCallResponse {
|
||||
// Payload to increase response size.
|
||||
Payload payload = 1;
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
// 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.
|
||||
|
||||
// An integration test service that covers all the method signature permutations
|
||||
// of unary/streaming requests/responses.
|
||||
syntax = "proto3";
|
||||
|
||||
import "google/protobuf/empty.proto";
|
||||
import "src/objective-c/examples/BazelBuildSamples/messages.proto";
|
||||
|
||||
package grpc.testing;
|
||||
|
||||
option objc_class_prefix = "RMT";
|
||||
|
||||
// A simple service to test the various types of RPCs and experiment with
|
||||
// performance with various types of payload.
|
||||
service TestService {
|
||||
// One empty request followed by one empty response.
|
||||
rpc EmptyCall(google.protobuf.Empty) returns (google.protobuf.Empty);
|
||||
|
||||
// One request followed by one response.
|
||||
rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
|
||||
|
||||
// One request followed by a sequence of responses (streamed download).
|
||||
// The server returns the payload with client desired type and sizes.
|
||||
rpc StreamingOutputCall(StreamingOutputCallRequest)
|
||||
returns (stream StreamingOutputCallResponse);
|
||||
|
||||
// A sequence of requests followed by one response (streamed upload).
|
||||
// The server returns the aggregated size of client payload as the result.
|
||||
rpc StreamingInputCall(stream StreamingInputCallRequest)
|
||||
returns (StreamingInputCallResponse);
|
||||
|
||||
// A sequence of requests with each request served by the server immediately.
|
||||
// As one request could lead to multiple responses, this interface
|
||||
// demonstrates the idea of full duplexing.
|
||||
rpc FullDuplexCall(stream StreamingOutputCallRequest)
|
||||
returns (stream StreamingOutputCallResponse);
|
||||
|
||||
// A sequence of requests followed by a sequence of responses.
|
||||
// The server buffers all the client requests and then serves them in order. A
|
||||
// stream of responses are returned to the client when the server starts with
|
||||
// first request.
|
||||
rpc HalfDuplexCall(stream StreamingOutputCallRequest)
|
||||
returns (stream StreamingOutputCallResponse);
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<string>en_US</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@ Pod::Spec.new do |s|
|
|||
s.dependency "!ProtoCompiler-gRPCPlugin"
|
||||
|
||||
repo_root = '../../../..'
|
||||
bin_dir = "#{repo_root}/bins/$CONFIG"
|
||||
bazel_exec_root = "#{repo_root}/bazel-out/darwin-fastbuild/bin"
|
||||
|
||||
protoc = "#{bin_dir}/protobuf/protoc"
|
||||
protoc = "#{bazel_exec_root}/external/com_google_protobuf/protoc"
|
||||
well_known_types_dir = "#{repo_root}/third_party/protobuf/src"
|
||||
plugin = "#{bin_dir}/grpc_objective_c_plugin"
|
||||
plugin = "#{bazel_exec_root}/src/compiler/grpc_objective_c_plugin"
|
||||
|
||||
# Since we switched to importing full path, -I needs to be set to the directory
|
||||
# from which the imported file can be found, which is the grpc's root here
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@
|
|||
INFOPLIST_FILE = Sample/Info.plist;
|
||||
LD_GENERATE_MAP_FILE = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.grpc.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.Sample;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
|
|
@ -340,7 +340,7 @@
|
|||
INFOPLIST_FILE = Sample/Info.plist;
|
||||
LD_GENERATE_MAP_FILE = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.grpc.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = io.grpc.Sample;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<string>en_US</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@
|
|||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-tvOS-sample/Pods-tvOS-sample-resources.sh",
|
||||
"$PODS_CONFIGURATION_BUILD_DIR/gRPC/gRPCCertificates.bundle",
|
||||
$PODS_CONFIGURATION_BUILD_DIR/gRPC/gRPCCertificates.bundle,
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
|
|
@ -365,7 +365,7 @@
|
|||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = "tvOS-sample/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.tvOS-sample";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.tvOS-sample";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
TARGETED_DEVICE_FAMILY = 3;
|
||||
|
|
@ -384,7 +384,7 @@
|
|||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = "tvOS-sample/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.tvOS-sample";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.tvOS-sample";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
TARGETED_DEVICE_FAMILY = 3;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<string>en_US</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,20 @@
|
|||
"role" : "appLauncher",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"size" : "44x44",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "appLauncher",
|
||||
"subtype" : "40mm"
|
||||
},
|
||||
{
|
||||
"size" : "50x50",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "appLauncher",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"size" : "86x86",
|
||||
"idiom" : "watch",
|
||||
|
|
@ -47,6 +61,13 @@
|
|||
"role" : "quickLook",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"size" : "108x108",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "quickLook",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch-marketing",
|
||||
"size" : "1024x1024",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<string>en_US</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>WatchKit-App</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
</array>
|
||||
<key>WKCompanionAppBundleIdentifier</key>
|
||||
<string>com.google.watchOS-sample</string>
|
||||
<string>io.grpc.watchOS-sample</string>
|
||||
<key>WKWatchKitApp</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<string>en_US</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>watchOS-sample WatchKit Extension</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
<key>NSExtensionAttributes</key>
|
||||
<dict>
|
||||
<key>WKAppBundleIdentifier</key>
|
||||
<string>com.google.watchOS-sample.watchkitapp</string>
|
||||
<string>io.grpc.watchOS-sample.watchkitapp</string>
|
||||
</dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
<string>com.apple.watchkit</string>
|
||||
|
|
|
|||
|
|
@ -342,15 +342,11 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-watchOS-sample/Pods-watchOS-sample-resources.sh",
|
||||
"$PODS_CONFIGURATION_BUILD_DIR/gRPC-iOS/gRPCCertificates.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}",
|
||||
);
|
||||
|
|
@ -364,8 +360,6 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-watchOS-sample/Pods-watchOS-sample-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/BoringSSL-GRPC-iOS/openssl_grpc.framework",
|
||||
|
|
@ -378,8 +372,6 @@
|
|||
"${BUILT_PRODUCTS_DIR}/nanopb-iOS/nanopb.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl_grpc.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework",
|
||||
|
|
@ -400,15 +392,11 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-watchOS-sample-checkManifestLockResult.txt",
|
||||
);
|
||||
|
|
@ -422,15 +410,11 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-watchOS-sample WatchKit Extension-checkManifestLockResult.txt",
|
||||
);
|
||||
|
|
@ -444,15 +428,11 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-watchOS-sample WatchKit Extension/Pods-watchOS-sample WatchKit Extension-resources.sh",
|
||||
"$PODS_CONFIGURATION_BUILD_DIR/gRPC-watchOS/gRPCCertificates.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}",
|
||||
);
|
||||
|
|
@ -466,8 +446,6 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-watchOS-sample WatchKit Extension/Pods-watchOS-sample WatchKit Extension-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/BoringSSL-GRPC-watchOS/openssl_grpc.framework",
|
||||
|
|
@ -480,8 +458,6 @@
|
|||
"${BUILT_PRODUCTS_DIR}/nanopb-watchOS/nanopb.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl_grpc.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework",
|
||||
|
|
@ -675,7 +651,7 @@
|
|||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/WatchKit-Extension/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.watchOS-sample.watchkitapp.watchkitextension";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.watchOS-sample.watchkitapp.watchkitextension";
|
||||
PRODUCT_NAME = "${TARGET_NAME}";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
|
|
@ -693,7 +669,7 @@
|
|||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/WatchKit-Extension/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.watchOS-sample.watchkitapp.watchkitextension";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.watchOS-sample.watchkitapp.watchkitextension";
|
||||
PRODUCT_NAME = "${TARGET_NAME}";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
|
|
@ -710,7 +686,7 @@
|
|||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
IBSC_MODULE = watchOS_sample_WatchKit_Extension;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/WatchKit-App/Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.watchOS-sample.watchkitapp";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.watchOS-sample.watchkitapp";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
|
|
@ -727,7 +703,7 @@
|
|||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
IBSC_MODULE = watchOS_sample_WatchKit_Extension;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/WatchKit-App/Info.plist";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.watchOS-sample.watchkitapp";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.watchOS-sample.watchkitapp";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
|
|
@ -745,7 +721,7 @@
|
|||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
INFOPLIST_FILE = "watchOS-sample/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.watchOS-sample";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.watchOS-sample";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
|
|
@ -760,7 +736,7 @@
|
|||
DEVELOPMENT_TEAM = 6T98ZJNPG5;
|
||||
INFOPLIST_FILE = "watchOS-sample/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.google.watchOS-sample";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "io.grpc.watchOS-sample";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<string>en_US</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,172 @@
|
|||
# Copyright 2019 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.
|
||||
|
||||
#
|
||||
# This is for the gRPC build system. This isn't intended to be used outsite of
|
||||
# the BUILD file for gRPC. It contains the mapping for the template system we
|
||||
# use to generate other platform's build system files.
|
||||
#
|
||||
# Please consider that there should be a high bar for additions and changes to
|
||||
# this file.
|
||||
# Each rule listed must be re-written for Google's internal build system, and
|
||||
# each change must be ported from one to the other.
|
||||
#
|
||||
|
||||
load(
|
||||
"//bazel:generate_objc.bzl",
|
||||
"generate_objc",
|
||||
"generate_objc_hdrs",
|
||||
"generate_objc_srcs",
|
||||
"generate_objc_non_arc_srcs"
|
||||
)
|
||||
|
||||
def proto_library_objc_wrapper(
|
||||
name,
|
||||
srcs,
|
||||
deps = [],
|
||||
use_well_known_protos = False):
|
||||
"""proto_library for adding dependencies to google/protobuf protos
|
||||
use_well_known_protos - ignored in open source version
|
||||
"""
|
||||
native.proto_library(
|
||||
name = name,
|
||||
srcs = srcs,
|
||||
deps = deps,
|
||||
)
|
||||
|
||||
def grpc_objc_examples_library(
|
||||
name,
|
||||
srcs = [],
|
||||
hdrs = [],
|
||||
textual_hdrs = [],
|
||||
data = [],
|
||||
deps = [],
|
||||
defines = [],
|
||||
sdk_frameworks = [],
|
||||
includes = []):
|
||||
"""objc_library for testing, only works in //src/objective-c/exmaples
|
||||
|
||||
Args:
|
||||
name: name of target
|
||||
hdrs: public headers
|
||||
srcs: all source files (.m)
|
||||
textual_hdrs: private headers
|
||||
data: any other bundle resources
|
||||
defines: preprocessors
|
||||
sdk_frameworks: sdks
|
||||
includes: added to search path, always [the path to objc directory]
|
||||
deps: dependencies
|
||||
"""
|
||||
native.objc_library(
|
||||
name = name,
|
||||
srcs = srcs,
|
||||
hdrs = hdrs,
|
||||
textual_hdrs = textual_hdrs,
|
||||
data = data,
|
||||
defines = defines,
|
||||
includes = includes,
|
||||
sdk_frameworks = sdk_frameworks,
|
||||
deps = deps + [":RemoteTest"],
|
||||
)
|
||||
|
||||
def grpc_objc_testing_library(
|
||||
name,
|
||||
srcs = [],
|
||||
hdrs = [],
|
||||
textual_hdrs = [],
|
||||
data = [],
|
||||
deps = [],
|
||||
defines = [],
|
||||
includes = []):
|
||||
"""objc_library for testing, only works in //src/objective-c/tests
|
||||
|
||||
Args:
|
||||
name: name of target
|
||||
hdrs: public headers
|
||||
srcs: all source files (.m)
|
||||
textual_hdrs: private headers
|
||||
data: any other bundle resources
|
||||
defines: preprocessors
|
||||
includes: added to search path, always [the path to objc directory]
|
||||
deps: dependencies
|
||||
"""
|
||||
|
||||
additional_deps = [
|
||||
":RemoteTest",
|
||||
"//src/objective-c:grpc_objc_client_internal_testing",
|
||||
]
|
||||
|
||||
if not name == "TestConfigs":
|
||||
additional_deps += [":TestConfigs"]
|
||||
|
||||
native.objc_library(
|
||||
name = name,
|
||||
hdrs = hdrs,
|
||||
srcs = srcs,
|
||||
textual_hdrs = textual_hdrs,
|
||||
data = data,
|
||||
defines = defines,
|
||||
includes = includes,
|
||||
deps = deps + additional_deps,
|
||||
)
|
||||
|
||||
def local_objc_grpc_library(name, deps, testing = True, srcs = [], use_well_known_protos = False, **kwargs):
|
||||
"""!!For local targets within the gRPC repository only!! Will not work outside of the repo
|
||||
"""
|
||||
objc_grpc_library_name = "_" + name + "_objc_grpc_library"
|
||||
|
||||
generate_objc(
|
||||
name = objc_grpc_library_name,
|
||||
srcs = srcs,
|
||||
deps = deps,
|
||||
use_well_known_protos = use_well_known_protos,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
generate_objc_hdrs(
|
||||
name = objc_grpc_library_name + "_hdrs",
|
||||
src = ":" + objc_grpc_library_name,
|
||||
)
|
||||
|
||||
generate_objc_non_arc_srcs(
|
||||
name = objc_grpc_library_name + "_non_arc_srcs",
|
||||
src = ":" + objc_grpc_library_name,
|
||||
)
|
||||
|
||||
arc_srcs = None
|
||||
if len(srcs) > 0:
|
||||
generate_objc_srcs(
|
||||
name = objc_grpc_library_name + "_srcs",
|
||||
src = ":" + objc_grpc_library_name,
|
||||
)
|
||||
arc_srcs = [":" + objc_grpc_library_name + "_srcs"]
|
||||
|
||||
library_deps = ["@com_google_protobuf//:protobuf_objc"]
|
||||
if testing:
|
||||
library_deps += ["//src/objective-c:grpc_objc_client_internal_testing"]
|
||||
else:
|
||||
library_deps += ["//src/objective-c:proto_objc_rpc"]
|
||||
|
||||
native.objc_library(
|
||||
name = name,
|
||||
hdrs = [":" + objc_grpc_library_name + "_hdrs"],
|
||||
non_arc_srcs = [":" + objc_grpc_library_name + "_non_arc_srcs"],
|
||||
srcs = arc_srcs,
|
||||
defines = [
|
||||
"GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=0",
|
||||
"GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO=0",
|
||||
],
|
||||
includes = ["_generated_protos"],
|
||||
deps = library_deps,
|
||||
)
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
# gRPC Bazel BUILD file.
|
||||
#
|
||||
# Copyright 2019 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.
|
||||
|
||||
licenses(["notice"]) # Apache v2
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"//src/objective-c:grpc_objc_internal_library.bzl",
|
||||
"grpc_objc_testing_library",
|
||||
"local_objc_grpc_library",
|
||||
"proto_library_objc_wrapper",
|
||||
)
|
||||
load("@build_bazel_rules_apple//apple:resources.bzl", "apple_resource_bundle")
|
||||
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_unit_test")
|
||||
load("@build_bazel_rules_apple//apple:macos.bzl", "macos_unit_test")
|
||||
load("@build_bazel_rules_apple//apple:tvos.bzl", "tvos_application", "tvos_unit_test")
|
||||
|
||||
exports_files(["LICENSE"])
|
||||
|
||||
proto_library_objc_wrapper(
|
||||
name = "messages_proto",
|
||||
srcs = ["RemoteTestClient/messages.proto"],
|
||||
)
|
||||
|
||||
proto_library_objc_wrapper(
|
||||
name = "test_proto",
|
||||
srcs = ["RemoteTestClient/test.proto"],
|
||||
deps = [":messages_proto"],
|
||||
use_well_known_protos = True,
|
||||
)
|
||||
|
||||
local_objc_grpc_library(
|
||||
name = "RemoteTest",
|
||||
srcs = ["RemoteTestClient/test.proto"],
|
||||
use_well_known_protos = True,
|
||||
testing = True,
|
||||
deps = [":test_proto"],
|
||||
)
|
||||
|
||||
apple_resource_bundle(
|
||||
name = "TestCertificates",
|
||||
resources = ["TestCertificates.bundle/test-certificates.pem"],
|
||||
)
|
||||
|
||||
# TestConfigs is added to each grpc_objc_testing_library's deps
|
||||
grpc_objc_testing_library(
|
||||
name = "TestConfigs",
|
||||
hdrs = ["version.h"],
|
||||
data = [":TestCertificates"],
|
||||
defines = [
|
||||
"DEBUG=1",
|
||||
"PB_FIELD_32BIT=1",
|
||||
"PB_NO_PACKED_STRUCTS=1",
|
||||
"PB_ENABLE_MALLOC=1",
|
||||
"HOST_PORT_LOCALSSL=localhost:5051",
|
||||
"HOST_PORT_LOCAL=localhost:5050",
|
||||
"HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com",
|
||||
],
|
||||
)
|
||||
|
||||
objc_library(
|
||||
name = "host-lib",
|
||||
srcs = glob(["Hosts/ios-host/*.m"]),
|
||||
hdrs = glob(["Hosts/ios-host/*.h"]),
|
||||
)
|
||||
|
||||
ios_application(
|
||||
name = "ios-host",
|
||||
bundle_id = "grpc.objc.tests.ios-host",
|
||||
infoplists = ["Hosts/ios-host/Info.plist"],
|
||||
minimum_os_version = "9.0",
|
||||
families = [
|
||||
"iphone",
|
||||
"ipad",
|
||||
],
|
||||
deps = ["host-lib"],
|
||||
)
|
||||
|
||||
tvos_application(
|
||||
name = "tvos-host",
|
||||
bundle_id = "grpc.objc.tests.tvos-host",
|
||||
infoplists = ["Hosts/ios-host/Info.plist"],
|
||||
minimum_os_version = "10.0",
|
||||
deps = ["host-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "CronetConfig",
|
||||
srcs = ["ConfigureCronet.m"],
|
||||
hdrs = ["ConfigureCronet.h"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "InteropTests-lib",
|
||||
hdrs = ["InteropTests/InteropTests.h"],
|
||||
srcs = ["InteropTests/InteropTests.m"],
|
||||
deps = [
|
||||
":InteropTestsBlockCallbacks-lib",
|
||||
":CronetConfig",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "InteropTestsRemote-lib",
|
||||
srcs = ["InteropTests/InteropTestsRemote.m"],
|
||||
deps = [":InteropTests-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "InteropTestsBlockCallbacks-lib",
|
||||
hdrs = ["InteropTests/InteropTestsBlockCallbacks.h"],
|
||||
srcs = ["InteropTests/InteropTestsBlockCallbacks.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "InteropTestsLocalSSL-lib",
|
||||
srcs = ["InteropTests/InteropTestsLocalSSL.m"],
|
||||
deps = [":InteropTests-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "InteropTestsLocalCleartext-lib",
|
||||
srcs = ["InteropTests/InteropTestsLocalCleartext.m"],
|
||||
deps = [":InteropTests-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "InteropTestsMultipleChannels-lib",
|
||||
srcs = ["InteropTests/InteropTestsMultipleChannels.m"],
|
||||
deps = [":InteropTests-lib"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "RxLibraryUnitTests-lib",
|
||||
srcs = ["UnitTests/RxLibraryUnitTests.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "GRPCClientTests-lib",
|
||||
srcs = ["UnitTests/GRPCClientTests.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "APIv2Tests-lib",
|
||||
srcs = ["UnitTests/APIv2Tests.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "ChannelPoolTest-lib",
|
||||
srcs = ["UnitTests/ChannelPoolTest.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "ChannelTests-lib",
|
||||
srcs = ["UnitTests/ChannelTests.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "NSErrorUnitTests-lib",
|
||||
srcs = ["UnitTests/NSErrorUnitTests.m"],
|
||||
)
|
||||
|
||||
grpc_objc_testing_library(
|
||||
name = "MacStressTests-lib",
|
||||
srcs = glob([
|
||||
"MacTests/*.m",
|
||||
]),
|
||||
hdrs = ["MacTests/StressTests.h"],
|
||||
)
|
||||
|
||||
ios_unit_test(
|
||||
name = "UnitTests",
|
||||
minimum_os_version = "8.0",
|
||||
deps = [
|
||||
":RxLibraryUnitTests-lib",
|
||||
":GRPCClientTests-lib",
|
||||
":APIv2Tests-lib",
|
||||
":ChannelPoolTest-lib",
|
||||
":ChannelTests-lib",
|
||||
":NSErrorUnitTests-lib",
|
||||
],
|
||||
test_host = ":ios-host",
|
||||
)
|
||||
|
||||
ios_unit_test(
|
||||
name = "InteropTests",
|
||||
minimum_os_version = "8.0",
|
||||
deps = [
|
||||
":InteropTestsRemote-lib",
|
||||
":InteropTestsLocalSSL-lib",
|
||||
":InteropTestsLocalCleartext-lib",
|
||||
# ":InteropTestsMulitpleChannels-lib", # needs Cronet
|
||||
],
|
||||
test_host = ":ios-host",
|
||||
)
|
||||
|
||||
macos_unit_test(
|
||||
name = "MacTests",
|
||||
minimum_os_version = "10.9",
|
||||
deps = [
|
||||
":APIv2Tests-lib",
|
||||
":RxLibraryUnitTests-lib",
|
||||
":NSErrorUnitTests-lib",
|
||||
":InteropTestsRemote-lib",
|
||||
":InteropTestsLocalSSL-lib",
|
||||
":InteropTestsLocalCleartext-lib",
|
||||
":MacStressTests-lib",
|
||||
]
|
||||
)
|
||||
|
||||
# bazel run tvos_unit_test is not yet supported by xctestrunner
|
||||
tvos_unit_test(
|
||||
name = "TvTests",
|
||||
minimum_os_version = "10.0",
|
||||
deps = [
|
||||
":APIv2Tests-lib",
|
||||
":RxLibraryUnitTests-lib",
|
||||
":NSErrorUnitTests-lib",
|
||||
":InteropTestsRemote-lib",
|
||||
":InteropTestsLocalSSL-lib",
|
||||
":InteropTestsLocalCleartext-lib",
|
||||
],
|
||||
test_host = ":tvos-host",
|
||||
)
|
||||
|
|
@ -16,8 +16,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface ViewController : UIViewController
|
||||
@interface AppDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@end
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en_US</string>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
|
@ -20,10 +20,6 @@
|
|||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
|
|
@ -27,6 +27,12 @@
|
|||
* This is an abstract class that needs to be subclassed. See |+host|.
|
||||
*/
|
||||
@interface InteropTests : XCTestCase
|
||||
/**
|
||||
* The test suite to run, checking if the current XCTestCase instance is the base class.
|
||||
* If so, run no tests (disabled). Otherwise, proceed to normal execution.
|
||||
*/
|
||||
@property(class, readonly) XCTestSuite *defaultTestSuite;
|
||||
|
||||
/**
|
||||
* Host to send the RPCs to. The base implementation returns nil, which would make all tests to
|
||||
* fail.
|
||||
|
|
|
|||
|
|
@ -406,6 +406,14 @@ static dispatch_once_t initGlobalInterceptorFactory;
|
|||
RMTTestService *_service;
|
||||
}
|
||||
|
||||
+ (XCTestSuite *)defaultTestSuite {
|
||||
if (self == [InteropTests class]) {
|
||||
return [XCTestSuite testSuiteWithName:@"InteropTestsEmptySuite"];
|
||||
} else {
|
||||
return super.defaultTestSuite;
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSString *)host {
|
||||
return nil;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,6 @@ dispatch_once_t initCronet;
|
|||
self.continueAfterFailure = NO;
|
||||
|
||||
_remoteService = [RMTTestService serviceWithHost:kRemoteSSLHost callOptions:nil];
|
||||
|
||||
configureCronet();
|
||||
|
||||
// Default stack with remote host
|
||||
|
|
|
|||
|
|
@ -21,6 +21,12 @@
|
|||
#import <GRPCClient/GRPCCallOptions.h>
|
||||
|
||||
@interface StressTests : XCTestCase
|
||||
/**
|
||||
* The test suite to run, checking if the current XCTestCase instance is the base class.
|
||||
* If so, run no tests (disabled). Otherwise, proceed to normal execution.
|
||||
*/
|
||||
@property(class, readonly) XCTestSuite *defaultTestSuite;
|
||||
|
||||
/**
|
||||
* Host to send the RPCs to. The base implementation returns nil, which would make all tests to
|
||||
* fail.
|
||||
|
|
|
|||
|
|
@ -89,6 +89,14 @@ extern const char *kCFStreamVarName;
|
|||
RMTTestService *_service;
|
||||
}
|
||||
|
||||
+ (XCTestSuite *)defaultTestSuite {
|
||||
if (self == [StressTests class]) {
|
||||
return [XCTestSuite testSuiteWithName:@"StressTestsEmptySuite"];
|
||||
} else {
|
||||
return super.defaultTestSuite;
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSString *)host {
|
||||
return nil;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,34 +16,20 @@ Pod::Spec.new do |s|
|
|||
s.dependency "!ProtoCompiler-gRPCPlugin"
|
||||
|
||||
repo_root = '../../../..'
|
||||
config = ENV['CONFIG'] || 'opt'
|
||||
bin_dir = "#{repo_root}/bins/#{config}"
|
||||
bazel_exec_root = "#{repo_root}/bazel-out/darwin-fastbuild/bin"
|
||||
|
||||
protoc = "#{bin_dir}/protobuf/protoc"
|
||||
protoc = "#{bazel_exec_root}/external/com_google_protobuf/protoc"
|
||||
well_known_types_dir = "#{repo_root}/third_party/protobuf/src"
|
||||
plugin = "#{bin_dir}/grpc_objective_c_plugin"
|
||||
plugin = "#{bazel_exec_root}/src/compiler/grpc_objective_c_plugin"
|
||||
|
||||
s.prepare_command = <<-CMD
|
||||
if [ -f #{protoc} ]; then
|
||||
#{protoc} \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--objc_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{repo_root}/src/objective-c/tests/RemoteTestClient/*.proto
|
||||
else
|
||||
# protoc was not found bin_dir, use installed version instead
|
||||
(>&2 echo "\nWARNING: Using installed version of protoc. It might be incompatible with gRPC")
|
||||
|
||||
protoc \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--objc_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{repo_root}/src/objective-c/tests/RemoteTestClient/*.proto
|
||||
fi
|
||||
#{protoc} \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--objc_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{repo_root}/src/objective-c/tests/RemoteTestClient/*.proto
|
||||
CMD
|
||||
|
||||
s.subspec "Messages" do |ms|
|
||||
|
|
|
|||
29
src/objective-c/examples/BazelBuildSamples/rmt/BUILD → src/objective-c/tests/build_one_example_bazel.sh
Normal file → Executable file
29
src/objective-c/examples/BazelBuildSamples/rmt/BUILD → src/objective-c/tests/build_one_example_bazel.sh
Normal file → Executable file
|
|
@ -1,5 +1,4 @@
|
|||
# gRPC Bazel BUILD file.
|
||||
#
|
||||
#!/bin/bash
|
||||
# Copyright 2019 gRPC authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
@ -14,15 +13,23 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
licenses(["notice"]) # Apache v2
|
||||
# Don't run this script standalone. Instead, run from the repository root:
|
||||
# ./tools/run_tests/run_tests.py -l objc
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
set -ev
|
||||
|
||||
exports_files(["LICENSE"])
|
||||
# Params:
|
||||
# EXAMPLE_PATH - directory of the example
|
||||
# SCHEME - scheme of the example, used by xcodebuild
|
||||
|
||||
proto_library(
|
||||
name = "test_proto",
|
||||
srcs = ["test.proto"],
|
||||
deps = ["//src/objective-c/examples:messages_proto"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
# CocoaPods requires the terminal to be using UTF-8 encoding.
|
||||
export LANG=en_US.UTF-8
|
||||
|
||||
cd `dirname $0`/../../..
|
||||
|
||||
cd $EXAMPLE_PATH/..
|
||||
|
||||
if [ "$SCHEME" == "watchOS-sample-WatchKit-App" ]; then
|
||||
SCHEME="watchOS-sample watchOS-sample-watchApp"
|
||||
fi
|
||||
../../../tools/bazel build $SCHEME
|
||||
|
|
@ -20,12 +20,16 @@ set -ev
|
|||
|
||||
cd $(dirname $0)
|
||||
|
||||
BINDIR=../../../bins/$CONFIG
|
||||
BAZEL=../../../tools/bazel
|
||||
|
||||
[ -f $BINDIR/interop_server ] || {
|
||||
echo >&2 "Can't find the test server. Make sure run_tests.py is making" \
|
||||
"interop_server before calling this script."
|
||||
exit 1
|
||||
INTEROP=../../../bazel-out/darwin-fastbuild/bin/test/cpp/interop/interop_server
|
||||
|
||||
[ -d Tests.xcworkspace ] || {
|
||||
./build_tests.sh
|
||||
}
|
||||
|
||||
[ -f $INTEROP ] || {
|
||||
BAZEL build //test/cpp/interop:interop_server
|
||||
}
|
||||
|
||||
[ -z "$(ps aux |egrep 'port_server\.py.*-p\s32766')" ] && {
|
||||
|
|
@ -36,8 +40,8 @@ BINDIR=../../../bins/$CONFIG
|
|||
PLAIN_PORT=$(curl localhost:32766/get)
|
||||
TLS_PORT=$(curl localhost:32766/get)
|
||||
|
||||
$BINDIR/interop_server --port=$PLAIN_PORT --max_send_message_size=8388608 &
|
||||
$BINDIR/interop_server --port=$TLS_PORT --max_send_message_size=8388608 --use_tls &
|
||||
$INTEROP --port=$PLAIN_PORT --max_send_message_size=8388608 &
|
||||
$INTEROP --port=$TLS_PORT --max_send_message_size=8388608 --use_tls &
|
||||
|
||||
trap 'kill -9 `jobs -p` ; echo "EXIT TIME: $(date)"' EXIT
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
#!/bin/bash
|
||||
# Copyright 2019 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.
|
||||
|
||||
# Don't run this script standalone. Instead, run from the repository root:
|
||||
# ./tools/run_tests/run_tests.py -l objc
|
||||
|
||||
# TODO(tonyzhehaolu):
|
||||
# For future use when Xcode is upgraded and tvos_unit_test is fully functional
|
||||
|
||||
set -ev
|
||||
|
||||
cd $(dirname $0)
|
||||
|
||||
BAZEL=../../../tools/bazel
|
||||
|
||||
INTEROP=../../../bazel-out/darwin-fastbuild/bin/test/cpp/interop/interop_server
|
||||
|
||||
[ -d Tests.xcworkspace ] || {
|
||||
./build_tests.sh
|
||||
}
|
||||
|
||||
[ -f $INTEROP ] || {
|
||||
BAZEL build //test/cpp/interop:interop_server
|
||||
}
|
||||
|
||||
[ -z "$(ps aux |egrep 'port_server\.py.*-p\s32766')" ] && {
|
||||
echo >&2 "Can't find the port server. Start port server with tools/run_tests/start_port_server.py."
|
||||
exit 1
|
||||
}
|
||||
|
||||
PLAIN_PORT=$(curl localhost:32766/get)
|
||||
TLS_PORT=$(curl localhost:32766/get)
|
||||
|
||||
$INTEROP --port=$PLAIN_PORT --max_send_message_size=8388608 &
|
||||
$INTEROP --port=$TLS_PORT --max_send_message_size=8388608 --use_tls &
|
||||
|
||||
trap 'kill -9 `jobs -p` ; echo "EXIT TIME: $(date)"' EXIT
|
||||
|
||||
../../../tools/bazel run $SCHEME
|
||||
|
|
@ -22,9 +22,15 @@ cd $(dirname $0)
|
|||
|
||||
# Run the tests server.
|
||||
|
||||
BINDIR=../../../bins/$CONFIG
|
||||
PROTOC=$BINDIR/protobuf/protoc
|
||||
PLUGIN=$BINDIR/grpc_objective_c_plugin
|
||||
ROOT_DIR=../../..
|
||||
BAZEL=$ROOT_DIR/tools/bazel
|
||||
BAZEL_EXEC_ROOT=$ROOT_DIR/bazel-out/darwin-fastbuild/bin
|
||||
PROTOC=$BAZEL_EXEC_ROOT/external/com_google_protobuf/protoc
|
||||
PLUGIN=$BAZEL_EXEC_ROOT/src/compiler/grpc_objective_c_plugin
|
||||
|
||||
[ -f $PROTOC ] && [ -f $PLUGIN ] || {
|
||||
BAZEL build @com_google_protobuf//:protoc //src/compiler:grpc_objective_c_plugin
|
||||
}
|
||||
|
||||
rm -rf PluginTest/*pb*
|
||||
|
||||
|
|
|
|||
|
|
@ -1,97 +0,0 @@
|
|||
#!/bin/bash
|
||||
# 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.
|
||||
|
||||
# Don't run this script standalone. Instead, run from the repository root:
|
||||
# ./tools/run_tests/run_tests.py -l objc
|
||||
|
||||
set -ev
|
||||
|
||||
cd $(dirname $0)
|
||||
|
||||
# Run the tests server.
|
||||
|
||||
BINDIR=../../../bins/$CONFIG
|
||||
|
||||
[ -f $BINDIR/interop_server ] || {
|
||||
echo >&2 "Can't find the test server. Make sure run_tests.py is making" \
|
||||
"interop_server before calling this script."
|
||||
exit 1
|
||||
}
|
||||
$BINDIR/interop_server --port=5050 --max_send_message_size=8388608 &
|
||||
$BINDIR/interop_server --port=5051 --max_send_message_size=8388608 --use_tls &
|
||||
# Kill them when this script exits.
|
||||
trap 'kill -9 `jobs -p` ; echo "EXIT TIME: $(date)"' EXIT
|
||||
|
||||
set -o pipefail
|
||||
|
||||
# xcodebuild is very verbose. We filter its output and tell Bash to fail if any
|
||||
# element of the pipe fails.
|
||||
# TODO(jcanizales): Use xctool instead? Issue #2540.
|
||||
XCODEBUILD_FILTER='(^CompileC |^Ld |^ *[^ ]*clang |^ *cd |^ *export |^Libtool |^ *[^ ]*libtool |^CpHeader |^ *builtin-copy )'
|
||||
|
||||
echo "TIME: $(date)"
|
||||
|
||||
xcodebuild \
|
||||
-workspace Tests.xcworkspace \
|
||||
-scheme InteropTests \
|
||||
-destination name="iPhone 8" \
|
||||
HOST_PORT_LOCALSSL=localhost:5051 \
|
||||
HOST_PORT_LOCAL=localhost:5050 \
|
||||
HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com \
|
||||
test \
|
||||
| egrep -v "$XCODEBUILD_FILTER" \
|
||||
| egrep -v '^$' \
|
||||
| egrep -v "(GPBDictionary|GPBArray)" -
|
||||
|
||||
echo "TIME: $(date)"
|
||||
xcodebuild \
|
||||
-workspace Tests.xcworkspace \
|
||||
-scheme UnitTests \
|
||||
-destination name="iPhone 8" \
|
||||
HOST_PORT_LOCALSSL=localhost:5051 \
|
||||
HOST_PORT_LOCAL=localhost:5050 \
|
||||
HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com \
|
||||
test \
|
||||
| egrep -v "$XCODEBUILD_FILTER" \
|
||||
| egrep -v '^$' \
|
||||
| egrep -v "(GPBDictionary|GPBArray)" -
|
||||
|
||||
echo "TIME: $(date)"
|
||||
xcodebuild \
|
||||
-workspace Tests.xcworkspace \
|
||||
-scheme CronetTests \
|
||||
-destination name="iPhone 8" \
|
||||
HOST_PORT_LOCALSSL=localhost:5051 \
|
||||
HOST_PORT_LOCAL=localhost:5050 \
|
||||
HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com \
|
||||
test \
|
||||
| egrep -v "$XCODEBUILD_FILTER" \
|
||||
| egrep -v '^$' \
|
||||
| egrep -v "(GPBDictionary|GPBArray)" -
|
||||
|
||||
echo "TIME: $(date)"
|
||||
xcodebuild \
|
||||
-workspace Tests.xcworkspace \
|
||||
-scheme MacTests \
|
||||
-destination platform=macOS \
|
||||
HOST_PORT_LOCALSSL=localhost:5051 \
|
||||
HOST_PORT_LOCAL=localhost:5050 \
|
||||
HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com \
|
||||
test \
|
||||
| egrep -v "$XCODEBUILD_FILTER" \
|
||||
| egrep -v '^$' \
|
||||
| egrep -v "(GPBDictionary|GPBArray)" -
|
||||
|
||||
exit 0
|
||||
|
|
@ -223,10 +223,8 @@
|
|||
end
|
||||
|
||||
s.prepare_command = <<-END_OF_COMMAND
|
||||
find src/cpp/ -type f ! -path '*.grpc_back' -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(pb(_.*)?\\.h)";#include <nanopb/\\1>;g'
|
||||
find src/cpp/ -type f -path '*.grpc_back' -print0 | xargs -0 rm
|
||||
find src/core/ -type f ! -path '*.grpc_back' -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(pb(_.*)?\\.h)";#include <nanopb/\\1>;g'
|
||||
find src/core/ -type f -path '*.grpc_back' -print0 | xargs -0 rm
|
||||
sed -E -i '' 's;#include "(pb(_.*)?\\.h)";#if COCOAPODS==1\\\n #include <nanopb/\\1>\\\n#else\\\n #include "\\1"\\\n#endif;g' $(find src/core -type f -print | xargs grep -H -c '#include <nanopb/' | grep 0$ | cut -d':' -f1)
|
||||
sed -E -i '' 's;#include "(pb(_.*)?\\.h)";#if COCOAPODS==1\\\n #include <nanopb/\\1>\\\n#else\\\n #include "\\1"\\\n#endif;g' $(find src/cpp -type f -print | xargs grep -H -c '#include <nanopb/' | grep 0$ | cut -d':' -f1)
|
||||
find src/core/ third_party/upb/ -type f \\( -name '*.h' -or -name '*.c' -or -name '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "upb/(.*)";#if COCOAPODS==1\\\n #include "third_party/upb/upb/\\1"\\\n#else\\\n #include "upb/\\1"\\\n#endif;g'
|
||||
find src/core/ third_party/upb/ -type f -name '*.grpc_back' -print0 | xargs -0 rm
|
||||
find src/core/ src/cpp/ -type f \\( -name '*.h' -or -name '*.c' -or -name '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(.*).upb.h";#if COCOAPODS==1\\\n #include "src/core/ext/upb-generated/\\1.upb.h"\\\n#else\\\n #include "\\1.upb.h"\\\n#endif;g'
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@
|
|||
}
|
||||
|
||||
repo_root = '../..'
|
||||
bazel = "#{repo_root}/tools/bazel"
|
||||
plugin = 'grpc_cpp_plugin'
|
||||
|
||||
s.preserve_paths = plugin
|
||||
|
|
@ -113,15 +114,6 @@
|
|||
# present in this pod's directory. We use that knowledge to check for the existence of the file
|
||||
# and, if absent, compile the plugin from the local sources.
|
||||
s.prepare_command = <<-CMD
|
||||
if [ ! -f #{plugin} ]; then
|
||||
cd #{repo_root}
|
||||
# This will build the plugin and put it in #{repo_root}/bins/opt.
|
||||
#
|
||||
# TODO(jcanizales): I reckon make will try to use locally-installed libprotoc (headers and
|
||||
# library binary) if found, which _we do not want_. Find a way for this to always use the
|
||||
# sources in the repo.
|
||||
make #{plugin}
|
||||
cd -
|
||||
fi
|
||||
#{bazel} build //src/compiler:grpc_cpp_plugin
|
||||
CMD
|
||||
end
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@
|
|||
}
|
||||
|
||||
repo_root = '../..'
|
||||
bazel = "#{repo_root}/tools/bazel"
|
||||
plugin = 'grpc_objective_c_plugin'
|
||||
|
||||
s.preserve_paths = plugin
|
||||
|
|
@ -117,15 +118,6 @@
|
|||
# present in this pod's directory. We use that knowledge to check for the existence of the file
|
||||
# and, if absent, compile the plugin from the local sources.
|
||||
s.prepare_command = <<-CMD
|
||||
if [ ! -f #{plugin} ]; then
|
||||
cd #{repo_root}
|
||||
# This will build the plugin and put it in #{repo_root}/bins/opt.
|
||||
#
|
||||
# TODO(jcanizales): I reckon make will try to use locally-installed libprotoc (headers and
|
||||
# library binary) if found, which _we do not want_. Find a way for this to always use the
|
||||
# sources in the repo.
|
||||
make #{plugin}
|
||||
cd -
|
||||
fi
|
||||
#{bazel} build //src/compiler:grpc_objective_c_plugin
|
||||
CMD
|
||||
end
|
||||
|
|
|
|||
|
|
@ -23,6 +23,10 @@ cd "$(dirname "$0")"
|
|||
|
||||
echo "TIME: $(date)"
|
||||
|
||||
./build_tests.sh
|
||||
|
||||
echo "TIME: $(date)"
|
||||
|
||||
XCODEBUILD_FILTER='(^CompileC |^Ld |^ *[^ ]*clang |^ *cd |^ *export |^Libtool |^ *[^ ]*libtool |^CpHeader |^ *builtin-copy )'
|
||||
|
||||
xcodebuild \
|
||||
|
|
@ -15,78 +15,25 @@ Pod::Spec.new do |s|
|
|||
s.dependency "Protobuf-C++"
|
||||
s.dependency "gRPC-C++"
|
||||
s.source_files = "src/proto/grpc/testing/*.pb.{h,cc}"
|
||||
s.header_mappings_dir = "RemoteTestCpp"
|
||||
s.header_mappings_dir = "."
|
||||
s.requires_arc = false
|
||||
|
||||
repo_root = '../../../..'
|
||||
config = ENV['CONFIG'] || 'opt'
|
||||
bin_dir = "#{repo_root}/bins/#{config}"
|
||||
bazel_exec_root = "#{repo_root}/bazel-out/darwin-fastbuild/bin"
|
||||
|
||||
protoc = "#{bin_dir}/protobuf/protoc"
|
||||
protoc = "#{bazel_exec_root}/external/com_google_protobuf/protoc"
|
||||
well_known_types_dir = "#{repo_root}/third_party/protobuf/src"
|
||||
plugin = "#{bin_dir}/grpc_cpp_plugin"
|
||||
plugin = "#{bazel_exec_root}/src/compiler/grpc_cpp_plugin"
|
||||
proto_dir = "#{repo_root}/src/proto/grpc/testing"
|
||||
|
||||
s.prepare_command = <<-CMD
|
||||
if [ -f #{protoc} ]; then
|
||||
#{protoc} \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{proto_dir} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/echo.proto
|
||||
#{protoc} \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{proto_dir} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/echo_messages.proto
|
||||
#{protoc} \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{proto_dir} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/simple_messages.proto
|
||||
else
|
||||
# protoc was not found bin_dir, use installed version instead
|
||||
|
||||
if ! [ -x "$(command -v protoc)" ]; then
|
||||
(>&2 echo "\nERROR: protoc not found")
|
||||
exit 1
|
||||
fi
|
||||
(>&2 echo "\nWARNING: Using installed version of protoc. It might be incompatible with gRPC")
|
||||
|
||||
protoc \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{proto_dir} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/echo.proto
|
||||
protoc \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{proto_dir} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/echo_messages.proto
|
||||
protoc \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{proto_dir} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/simple_messages.proto
|
||||
fi
|
||||
#{protoc} \
|
||||
--plugin=protoc-gen-grpc=#{plugin} \
|
||||
--cpp_out=. \
|
||||
--grpc_out=. \
|
||||
-I #{repo_root} \
|
||||
-I #{well_known_types_dir} \
|
||||
#{proto_dir}/echo.proto #{proto_dir}/echo_messages.proto #{proto_dir}/simple_messages.proto
|
||||
CMD
|
||||
|
||||
s.pod_target_xcconfig = {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@ set -ev
|
|||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
echo "TIME: $(date)"
|
||||
|
||||
./build_tests.sh
|
||||
|
||||
echo "TIME: $(date)"
|
||||
|
||||
set -o pipefail
|
||||
|
||||
|
|
@ -44,6 +44,38 @@ config_setting(
|
|||
values = {"cpu": "ios_arm64"},
|
||||
)
|
||||
|
||||
# The following architectures are found in
|
||||
# https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java
|
||||
config_setting(
|
||||
name = "tvos_x86_64",
|
||||
values = {"cpu": "tvos_x86_64"},
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "tvos_arm64",
|
||||
values = {"cpu": "tvos_arm64"}
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "watchos_i386",
|
||||
values = {"cpu": "watchos_i386"},
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "watchos_x86_64",
|
||||
values = {"cpu": "watchos_x86_64"}
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "watchos_armv7k",
|
||||
values = {"cpu": "watchos_armv7k"},
|
||||
)
|
||||
|
||||
config_setting(
|
||||
name = "watchos_arm64_32",
|
||||
values = {"cpu": "watchos_arm64_32"}
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "ares_build_h",
|
||||
srcs = ["@com_github_grpc_grpc//third_party/cares:ares_build.h"],
|
||||
|
|
@ -58,6 +90,12 @@ genrule(
|
|||
":ios_armv7": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":ios_armv7s": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":ios_arm64": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":tvos_x86_64": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":tvos_arm64": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":watchos_i386": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":watchos_x86_64": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":watchos_armv7k": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":watchos_arm64_32": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":darwin": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":darwin_x86_64": ["@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h"],
|
||||
":windows": ["@com_github_grpc_grpc//third_party/cares:config_windows/ares_config.h"],
|
||||
|
|
|
|||
|
|
@ -1060,7 +1060,7 @@ class ObjCLanguage(object):
|
|||
out = []
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['src/objective-c/tests/build_one_example.sh'],
|
||||
['src/objective-c/tests/build_one_example_bazel.sh'],
|
||||
timeout_seconds=10 * 60,
|
||||
shortname='ios-buildtest-example-sample',
|
||||
cpu_cost=1e6,
|
||||
|
|
@ -1069,10 +1069,11 @@ class ObjCLanguage(object):
|
|||
'EXAMPLE_PATH': 'src/objective-c/examples/Sample',
|
||||
'FRAMEWORKS': 'NO'
|
||||
}))
|
||||
# Currently not supporting compiling as frameworks in Bazel
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['src/objective-c/tests/build_one_example.sh'],
|
||||
timeout_seconds=10 * 60,
|
||||
timeout_seconds=20 * 60,
|
||||
shortname='ios-buildtest-example-sample-frameworks',
|
||||
cpu_cost=1e6,
|
||||
environ={
|
||||
|
|
@ -1083,7 +1084,7 @@ class ObjCLanguage(object):
|
|||
out.append(
|
||||
self.config.job_spec(
|
||||
['src/objective-c/tests/build_one_example.sh'],
|
||||
timeout_seconds=10 * 60,
|
||||
timeout_seconds=20 * 60,
|
||||
shortname='ios-buildtest-example-switftsample',
|
||||
cpu_cost=1e6,
|
||||
environ={
|
||||
|
|
@ -1092,7 +1093,7 @@ class ObjCLanguage(object):
|
|||
}))
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['src/objective-c/tests/build_one_example.sh'],
|
||||
['src/objective-c/tests/build_one_example_bazel.sh'],
|
||||
timeout_seconds=10 * 60,
|
||||
shortname='ios-buildtest-example-tvOS-sample',
|
||||
cpu_cost=1e6,
|
||||
|
|
@ -1103,7 +1104,7 @@ class ObjCLanguage(object):
|
|||
}))
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['src/objective-c/tests/build_one_example.sh'],
|
||||
['src/objective-c/tests/build_one_example_bazel.sh'],
|
||||
timeout_seconds=20 * 60,
|
||||
shortname='ios-buildtest-example-watchOS-sample',
|
||||
cpu_cost=1e6,
|
||||
|
|
@ -1121,11 +1122,12 @@ class ObjCLanguage(object):
|
|||
environ=_FORCE_ENVIRON_FOR_WRAPPERS))
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['test/core/iomgr/ios/CFStreamTests/run_tests.sh'],
|
||||
['test/core/iomgr/ios/CFStreamTests/build_and_run_tests.sh'],
|
||||
timeout_seconds=20 * 60,
|
||||
shortname='ios-test-cfstream-tests',
|
||||
cpu_cost=1e6,
|
||||
environ=_FORCE_ENVIRON_FOR_WRAPPERS))
|
||||
# TODO: replace with run_one_test_bazel.sh when Bazel-Xcode is stable
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['src/objective-c/tests/run_one_test.sh'],
|
||||
|
|
@ -1155,7 +1157,7 @@ class ObjCLanguage(object):
|
|||
}))
|
||||
out.append(
|
||||
self.config.job_spec(
|
||||
['test/cpp/ios/run_tests.sh'],
|
||||
['test/cpp/ios/build_and_run_tests.sh'],
|
||||
timeout_seconds=20 * 60,
|
||||
shortname='ios-cpp-test-cronet',
|
||||
cpu_cost=1e6,
|
||||
|
|
@ -1187,17 +1189,13 @@ class ObjCLanguage(object):
|
|||
return []
|
||||
|
||||
def make_targets(self):
|
||||
return ['interop_server']
|
||||
return []
|
||||
|
||||
def make_options(self):
|
||||
return []
|
||||
|
||||
def build_steps(self):
|
||||
return [
|
||||
['src/objective-c/tests/build_tests.sh'],
|
||||
['test/core/iomgr/ios/CFStreamTests/build_tests.sh'],
|
||||
['test/cpp/ios/build_tests.sh'],
|
||||
]
|
||||
return []
|
||||
|
||||
def post_tests_steps(self):
|
||||
return []
|
||||
|
|
|
|||
Loading…
Reference in New Issue