Libuv pod and event engine core test suite setup for iOS/ObjC (#27563)

* Add podspec for libuv-grpc
* iOS Core test pod setup
pull/27644/head
Denny C. Dai 3 years ago committed by GitHub
parent ec4c61a3ae
commit b7b1ada924
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      gRPC-Core.podspec
  2. 151
      src/objective-c/Libuv-gRPC.podspec
  3. 2
      src/objective-c/examples/RemoteTestClient/RemoteTest.podspec
  4. 2
      src/objective-c/examples/Sample/Podfile
  5. 2
      src/objective-c/examples/SwiftSample/Podfile
  6. 367
      src/objective-c/tests/CoreTests/CoreTests.xcodeproj/project.pbxproj
  7. 51
      src/objective-c/tests/CoreTests/CoreTests/EventEngineTimerTests.mm
  8. 37
      src/objective-c/tests/CoreTests/Podfile
  9. 1
      src/objective-c/tests/Podfile
  10. 2
      templates/gRPC-Core.podspec.template
  11. 153
      templates/src/objective-c/Libuv-gRPC.podspec.template

2
gRPC-Core.podspec generated

@ -179,6 +179,7 @@ Pod::Spec.new do |s|
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
ss.dependency 'BoringSSL-GRPC', '0.0.21'
ss.dependency 'Libuv-gRPC', '0.0.10'
ss.dependency 'abseil/base/base', abseil_version
ss.dependency 'abseil/base/core_headers', abseil_version
ss.dependency 'abseil/container/flat_hash_map', abseil_version
@ -2277,6 +2278,7 @@ Pod::Spec.new do |s|
s.prepare_command = <<-END_OF_COMMAND
set -e
find src/core -type f \\( -path '*.h' -or -path '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include <openssl/(.*)>;#if COCOAPODS==1\\\n #include <openssl_grpc/\\1>\\\n#else\\\n #include <openssl/\\1>\\\n#endif;g'
find src/core -type f \\( -path '*.h' -or -path '*.cc' -or -path '*.c' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include <uv.h>;#if COCOAPODS==1\\\n #include <uv/uv.h>\\\n#else\\\n #include <uv.h>\\\n#endif;g'
find third_party/upb/ -type f \\( -name '*.h' -or -name '*.hpp' -or -name '*.c' -or -name '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "third_party/(.*)";#if COCOAPODS==1\\\n #include "third_party/upb/third_party/\\1"\\\n#else\\\n #include "third_party/\\1"\\\n#endif;g'
find src/core/ src/cpp/ third_party/upb/ -type f \\( -name '*.h' -or -name '*.hpp' -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/ src/cpp/ third_party/upb/ -type f -name '*.grpc_back' -print0 | xargs -0 rm

@ -0,0 +1,151 @@
# This file has been automatically generated from a template file.
# Please make modifications to
# `templates/src/objective-c/libuv-gRPC.podspec.template` instead. This
# file can be regenerated from the template by running
# `tools/buildgen/generate_projects.sh`.
# Libuv CocoaPods podspec
# Copyright 2021, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Pod::Spec.new do |spec|
pod_version = "0.0.10"
libuv_version = "1.37.0"
spec.name = "Libuv-gRPC"
spec.version = pod_version
spec.summary = "gRPC-Only Libuv Pod"
spec.description = <<-DESC
Libuv pod intended to be used only by gRPC iOS. libuv is a multi-platform
support library with a focus on asynchronous I/O. It was primarily developed
for use by Node.js, but it's also used by Luvit, Julia, pyuv, and others.
DESC
spec.homepage = "https://libuv.org/"
spec.license = { :type => 'Mixed', :file => 'LICENSE' }
spec.author = "libuv"
# When using multiple platforms
spec.ios.deployment_target = '9.0'
spec.osx.deployment_target = '10.10'
spec.tvos.deployment_target = '10.0'
spec.watchos.deployment_target = '4.0'
spec.source = { :git => "https://github.com/libuv/libuv.git", :tag => "v#{libuv_version}" }
name = 'uv'
spec.module_name = name
spec.header_mappings_dir = 'include'
spec.header_dir = name
spec.subspec 'Interface' do |ss|
ss.header_mappings_dir = 'include'
ss.source_files = "include/uv.h",
"include/uv/errno.h",
"include/uv/threadpool.h",
"include/uv/version.h",
"include/uv/tree.h",
"include/uv/unix.h",
"include/uv/darwin.h"
end
spec.subspec 'Implementation' do |ss|
ss.header_mappings_dir = 'src'
ss.source_files =
"src/fs-poll.c",
"src/idna.c",
"src/inet.c",
"src/strscpy.c",
"src/threadpool.c",
"src/timer.c",
"src/uv-data-getter-setters.c",
"src/uv-common.c",
"src/version.c",
"src/unix/async.c",
"src/unix/core.c",
"src/unix/dl.c",
"src/unix/fs.c",
"src/unix/getaddrinfo.c",
"src/unix/getnameinfo.c",
"src/unix/loop.c",
"src/unix/loop-watcher.c",
"src/unix/pipe.c",
"src/unix/poll.c",
"src/unix/process.c",
"src/unix/signal.c",
"src/unix/stream.c",
"src/unix/tcp.c",
"src/unix/thread.c",
"src/unix/tty.c",
"src/unix/udp.c",
"src/unix/bsd-ifaddrs.c",
"src/unix/darwin.c",
"src/unix/fsevents.c",
"src/unix/kqueue.c",
"src/unix/darwin-proctitle.c",
"src/unix/proctitle.c",
"src/heap-inl.h",
"src/idna.h",
"src/queue.h",
"src/strscpy.h",
"src/uv-common.h",
"src/unix/atomic-ops.h",
"src/unix/internal.h",
"src/unix/spinlock.h"
ss.dependency "#{spec.name}/Interface", pod_version
end
spec.requires_arc = false
spec.pod_target_xcconfig = {
'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(PODS_TARGET_SRCROOT)/include"',
'USER_HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)" "$(PODS_TARGET_SRCROOT)/src" "$(PODS_TARGET_SRCROOT)/include"',
'CLANG_WARN_STRICT_PROTOTYPES' => 'NO',
'CLANG_WARN_DOCUMENTATION_COMMENTS' => 'NO',
'USE_HEADERMAP' => 'NO',
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
'GCC_TREAT_WARNINGS_AS_ERRORS' => 'NO',
'GCC_WARN_INHIBIT_ALL_WARNINGS' => 'YES'
}
spec.libraries = 'c++'
spec.compiler_flags =
"-D_LARGEFILE_SOURCE",
"-D_FILE_OFFSET_BITS=64",
"-D_GNU_SOURCE",
"-D_DARWIN_USE_64_BIT_INODE=1",
"-D_DARWIN_UNLIMITED_SELECT=1"
end

@ -70,5 +70,5 @@ Pod::Spec.new do |s|
# This is needed by all pods that depend on gRPC-RxLibrary:
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
}
end

@ -23,6 +23,7 @@ target 'Sample' do
pod 'Protobuf', :path => "#{GRPC_LOCAL_SRC}/third_party/protobuf"
pod 'BoringSSL-GRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c"
pod 'Libuv-gRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c"
pod 'gRPC', :path => GRPC_LOCAL_SRC
pod 'gRPC-Core', :path => GRPC_LOCAL_SRC
@ -48,4 +49,5 @@ pre_install do |installer|
'USE_HEADERMAP' => 'NO',
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
}
end

@ -20,6 +20,7 @@ target 'SwiftSample' do
pod 'Protobuf', :path => "#{GRPC_LOCAL_SRC}/third_party/protobuf"
pod 'BoringSSL-GRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c"
pod 'Libuv-gRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c"
pod 'gRPC', :path => GRPC_LOCAL_SRC
pod 'gRPC-Core', :path => GRPC_LOCAL_SRC
@ -45,4 +46,5 @@ pre_install do |installer|
'USE_HEADERMAP' => 'NO',
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
}
end

@ -0,0 +1,367 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 55;
objects = {
/* Begin PBXBuildFile section */
74EC3A952708149C005DF382 /* EventEngineTimerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 74EC3A942708149C005DF382 /* EventEngineTimerTests.mm */; };
AE7618A265DF8B92E93BDFFC /* libPods-CoreTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CC79A999099057E7806F7A4E /* libPods-CoreTests.a */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
74EC3A7527081130005DF382 /* CoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
74EC3A942708149C005DF382 /* EventEngineTimerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = EventEngineTimerTests.mm; path = CoreTests/EventEngineTimerTests.mm; sourceTree = "<group>"; };
BC32E593C6B40EAC11EDD29E /* Pods-CoreTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CoreTests.release.xcconfig"; path = "Target Support Files/Pods-CoreTests/Pods-CoreTests.release.xcconfig"; sourceTree = "<group>"; };
CC2F5D65EA0FAB6B5347995A /* Pods-CoreTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CoreTests.debug.xcconfig"; path = "Target Support Files/Pods-CoreTests/Pods-CoreTests.debug.xcconfig"; sourceTree = "<group>"; };
CC79A999099057E7806F7A4E /* libPods-CoreTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CoreTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
74EC3A7227081130005DF382 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AE7618A265DF8B92E93BDFFC /* libPods-CoreTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
3CD5ACD34F6BAA337C3076B2 /* Frameworks */ = {
isa = PBXGroup;
children = (
CC79A999099057E7806F7A4E /* libPods-CoreTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
653269393ADB5A6623AFDD4C /* Pods */ = {
isa = PBXGroup;
children = (
CC2F5D65EA0FAB6B5347995A /* Pods-CoreTests.debug.xcconfig */,
BC32E593C6B40EAC11EDD29E /* Pods-CoreTests.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
74EC3A512708112C005DF382 = {
isa = PBXGroup;
children = (
74EC3A942708149C005DF382 /* EventEngineTimerTests.mm */,
74EC3A5B2708112C005DF382 /* Products */,
653269393ADB5A6623AFDD4C /* Pods */,
3CD5ACD34F6BAA337C3076B2 /* Frameworks */,
);
sourceTree = "<group>";
};
74EC3A5B2708112C005DF382 /* Products */ = {
isa = PBXGroup;
children = (
74EC3A7527081130005DF382 /* CoreTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
74EC3A7427081130005DF382 /* CoreTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 74EC3A8C27081130005DF382 /* Build configuration list for PBXNativeTarget "CoreTests" */;
buildPhases = (
CCD5D09951B532EA7E1165AD /* [CP] Check Pods Manifest.lock */,
74EC3A7127081130005DF382 /* Sources */,
74EC3A7227081130005DF382 /* Frameworks */,
74EC3A7327081130005DF382 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = CoreTests;
productName = CoreTestsTests;
productReference = 74EC3A7527081130005DF382 /* CoreTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
74EC3A522708112C005DF382 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastUpgradeCheck = 1300;
TargetAttributes = {
74EC3A7427081130005DF382 = {
CreatedOnToolsVersion = 13.0;
};
};
};
buildConfigurationList = 74EC3A552708112C005DF382 /* Build configuration list for PBXProject "CoreTests" */;
compatibilityVersion = "Xcode 13.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 74EC3A512708112C005DF382;
productRefGroup = 74EC3A5B2708112C005DF382 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
74EC3A7427081130005DF382 /* CoreTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
74EC3A7327081130005DF382 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
CCD5D09951B532EA7E1165AD /* [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-CoreTests-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 */
74EC3A7127081130005DF382 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74EC3A952708149C005DF382 /* EventEngineTimerTests.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
74EC3A8727081130005DF382 /* 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++17";
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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
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;
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 = 15.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = "";
};
name = Debug;
};
74EC3A8827081130005DF382 /* 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++17";
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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
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;
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 = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
USER_HEADER_SEARCH_PATHS = "";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
74EC3A8D27081130005DF382 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = CC2F5D65EA0FAB6B5347995A /* Pods-CoreTests.debug.xcconfig */;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_ROOT}/Headers/Public\"",
"\"${PODS_ROOT}/Headers/Public/BoringSSL-GRPC\"",
"\"${PODS_ROOT}/Headers/Public/Libuv-gRPC\"",
"\"${PODS_ROOT}/Headers/Public/abseil\"",
"\"${PODS_ROOT}/Headers/Public/gRPC-Core\"",
);
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.google.CoreTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "\"$(PODS_ROOT)/../../../../../\"";
};
name = Debug;
};
74EC3A8E27081130005DF382 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = BC32E593C6B40EAC11EDD29E /* Pods-CoreTests.release.xcconfig */;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_ROOT}/Headers/Public\"",
"\"${PODS_ROOT}/Headers/Public/BoringSSL-GRPC\"",
"\"${PODS_ROOT}/Headers/Public/Libuv-gRPC\"",
"\"${PODS_ROOT}/Headers/Public/abseil\"",
"\"${PODS_ROOT}/Headers/Public/gRPC-Core\"",
);
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.google.CoreTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
TARGETED_DEVICE_FAMILY = "1,2";
USER_HEADER_SEARCH_PATHS = "\"$(PODS_ROOT)/../../../../../\"";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
74EC3A552708112C005DF382 /* Build configuration list for PBXProject "CoreTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
74EC3A8727081130005DF382 /* Debug */,
74EC3A8827081130005DF382 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
74EC3A8C27081130005DF382 /* Build configuration list for PBXNativeTarget "CoreTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
74EC3A8D27081130005DF382 /* Debug */,
74EC3A8E27081130005DF382 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 74EC3A522708112C005DF382 /* Project object */;
}

@ -0,0 +1,51 @@
/*
*
* Copyright 2021 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 <XCTest/XCTest.h>
#include <absl/functional/bind_front.h>
#include <absl/time/time.h>
#include <grpc/event_engine/event_engine.h>
#include <grpc/grpc.h>
#include <grpc/test/core/util/test_config.h>
@interface EventEngineTimerTests : XCTestCase
@end
@implementation EventEngineTimerTests
+ (void)setUp {
grpc_init();
}
+ (void)tearDown {
grpc_shutdown();
}
- (void)setUp {
}
- (void)tearDown {
}
- (void)testDummy {
}
@end

@ -0,0 +1,37 @@
source 'https://github.com/CocoaPods/Specs.git'
install! 'cocoapods', :deterministic_uuids => false
GRPC_LOCAL_SRC = '../../../..'
def grpc_deps
pod 'gRPC-Core', :path => GRPC_LOCAL_SRC
pod 'gRPC-Core/Tests', :path => GRPC_LOCAL_SRC
end
target 'CoreTests' do
platform :ios, '9.0'
grpc_deps
end
pre_install do |installer|
grpc_core_spec = installer.pod_targets.find{|t| t.name.start_with?('gRPC-Core')}.root_spec
src_root = "$(PODS_ROOT)/../#{GRPC_LOCAL_SRC}"
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)"',
'USE_HEADERMAP' => 'NO',
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
}
end
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "CoreTests"
target.build_configurations.each do |config|
config.build_settings['USER_HEADER_SEARCH_PATHS'] = "$(inherited) $(PODS_ROOT)/../#{GRPC_LOCAL_SRC}"
end
end
end
end

@ -12,6 +12,7 @@ def grpc_deps
pod '!ProtoCompiler-gRPCPlugin', :path => "#{GRPC_LOCAL_SRC}/src/objective-c"
pod 'BoringSSL-GRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c", :inhibit_warnings => true
pod 'Libuv-gRPC', :podspec => "#{GRPC_LOCAL_SRC}/src/objective-c", :inhibit_warnings => true
pod 'gRPC/InternalTesting', :path => GRPC_LOCAL_SRC
pod 'gRPC-Core', :path => GRPC_LOCAL_SRC, :inhibit_warnings => true

@ -206,6 +206,7 @@
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
ss.dependency 'BoringSSL-GRPC', '0.0.21'
ss.dependency 'Libuv-gRPC', '0.0.10'
% for abseil_spec in grpc_abseil_specs:
ss.dependency '${abseil_spec}', abseil_version
% endfor
@ -251,6 +252,7 @@
s.prepare_command = <<-END_OF_COMMAND
set -e
find src/core -type f \\( -path '*.h' -or -path '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include <openssl/(.*)>;#if COCOAPODS==1\\\n #include <openssl_grpc/\\1>\\\n#else\\\n #include <openssl/\\1>\\\n#endif;g'
find src/core -type f \\( -path '*.h' -or -path '*.cc' -or -path '*.c' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include <uv.h>;#if COCOAPODS==1\\\n #include <uv/uv.h>\\\n#else\\\n #include <uv.h>\\\n#endif;g'
find third_party/upb/ -type f \\( -name '*.h' -or -name '*.hpp' -or -name '*.c' -or -name '*.cc' \\) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "third_party/(.*)";#if COCOAPODS==1\\\n #include "third_party/upb/third_party/\\1"\\\n#else\\\n #include "third_party/\\1"\\\n#endif;g'
find src/core/ src/cpp/ third_party/upb/ -type f \\( -name '*.h' -or -name '*.hpp' -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/ src/cpp/ third_party/upb/ -type f -name '*.grpc_back' -print0 | xargs -0 rm

@ -0,0 +1,153 @@
%YAML 1.2
--- |
# This file has been automatically generated from a template file.
# Please make modifications to
# `templates/src/objective-c/libuv-gRPC.podspec.template` instead. This
# file can be regenerated from the template by running
# `tools/buildgen/generate_projects.sh`.
# Libuv CocoaPods podspec
# Copyright 2021, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Pod::Spec.new do |spec|
pod_version = "0.0.10"
libuv_version = "1.37.0"
spec.name = "Libuv-gRPC"
spec.version = pod_version
spec.summary = "gRPC-Only Libuv Pod"
spec.description = <<-DESC
Libuv pod intended to be used only by gRPC iOS. libuv is a multi-platform
support library with a focus on asynchronous I/O. It was primarily developed
for use by Node.js, but it's also used by Luvit, Julia, pyuv, and others.
DESC
spec.homepage = "https://libuv.org/"
spec.license = { :type => 'Mixed', :file => 'LICENSE' }
spec.author = "libuv"
# When using multiple platforms
spec.ios.deployment_target = '9.0'
spec.osx.deployment_target = '10.10'
spec.tvos.deployment_target = '10.0'
spec.watchos.deployment_target = '4.0'
spec.source = { :git => "https://github.com/libuv/libuv.git", :tag => "v#{libuv_version}" }
name = 'uv'
spec.module_name = name
spec.header_mappings_dir = 'include'
spec.header_dir = name
spec.subspec 'Interface' do |ss|
ss.header_mappings_dir = 'include'
ss.source_files = "include/uv.h",
"include/uv/errno.h",
"include/uv/threadpool.h",
"include/uv/version.h",
"include/uv/tree.h",
"include/uv/unix.h",
"include/uv/darwin.h"
end
spec.subspec 'Implementation' do |ss|
ss.header_mappings_dir = 'src'
ss.source_files =
"src/fs-poll.c",
"src/idna.c",
"src/inet.c",
"src/strscpy.c",
"src/threadpool.c",
"src/timer.c",
"src/uv-data-getter-setters.c",
"src/uv-common.c",
"src/version.c",
"src/unix/async.c",
"src/unix/core.c",
"src/unix/dl.c",
"src/unix/fs.c",
"src/unix/getaddrinfo.c",
"src/unix/getnameinfo.c",
"src/unix/loop.c",
"src/unix/loop-watcher.c",
"src/unix/pipe.c",
"src/unix/poll.c",
"src/unix/process.c",
"src/unix/signal.c",
"src/unix/stream.c",
"src/unix/tcp.c",
"src/unix/thread.c",
"src/unix/tty.c",
"src/unix/udp.c",
"src/unix/bsd-ifaddrs.c",
"src/unix/darwin.c",
"src/unix/fsevents.c",
"src/unix/kqueue.c",
"src/unix/darwin-proctitle.c",
"src/unix/proctitle.c",
"src/heap-inl.h",
"src/idna.h",
"src/queue.h",
"src/strscpy.h",
"src/uv-common.h",
"src/unix/atomic-ops.h",
"src/unix/internal.h",
"src/unix/spinlock.h"
ss.dependency "#{spec.name}/Interface", pod_version
end
spec.requires_arc = false
spec.pod_target_xcconfig = {
'HEADER_SEARCH_PATHS' => '"$(inherited)" "$(PODS_TARGET_SRCROOT)/include"',
'USER_HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)" "$(PODS_TARGET_SRCROOT)/src" "$(PODS_TARGET_SRCROOT)/include"',
'CLANG_WARN_STRICT_PROTOTYPES' => 'NO',
'CLANG_WARN_DOCUMENTATION_COMMENTS' => 'NO',
'USE_HEADERMAP' => 'NO',
'ALWAYS_SEARCH_USER_PATHS' => 'NO',
'GCC_TREAT_WARNINGS_AS_ERRORS' => 'NO',
'GCC_WARN_INHIBIT_ALL_WARNINGS' => 'YES'
}
spec.libraries = 'c++'
spec.compiler_flags =
"-D_LARGEFILE_SOURCE",
"-D_FILE_OFFSET_BITS=64",
"-D_GNU_SOURCE",
"-D_DARWIN_USE_64_BIT_INODE=1",
"-D_DARWIN_UNLIMITED_SELECT=1"
end
Loading…
Cancel
Save