mirror of https://github.com/grpc/grpc.git
parent
4bdb0e398c
commit
b24b212ee5
34 changed files with 12294 additions and 1549 deletions
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,40 @@ |
||||
%YAML 1.2 |
||||
--- | |
||||
<%! |
||||
def expand_symbol_list(symbol_list): |
||||
return '\n'.join('#define %s GRPC_SHADOW_%s' % (symbol, symbol) for symbol in symbol_list) |
||||
%> |
||||
/* |
||||
* |
||||
* Copyright 2018 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 file is autogenerated from a template file. Please make |
||||
// modifications to |
||||
// `templates/src/objective-c/tsi/grpc_shadow_boringssl.h.template` |
||||
// instead. This file can be regenerated from the template by running |
||||
// `tools/buildgen/generate_projects.sh`. |
||||
|
||||
#ifndef GRPC_CORE_TSI_GRPC_SHADOW_BORINGSSL_H |
||||
#define GRPC_CORE_TSI_GRPC_SHADOW_BORINGSSL_H |
||||
|
||||
#ifdef GRPC_SHADOW_BORINGSSL_SYMBOLS |
||||
|
||||
${expand_symbol_list(settings.grpc_shadow_boringssl_symbols)} |
||||
|
||||
#endif /* GRPC_SHADOW_BORINGSSL_SYMBOLS */ |
||||
|
||||
#endif /* GRPC_CORE_TSI_GRPC_SHADOW_BORINGSSL_H */ |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,32 @@ |
||||
# Copyright 2018 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. |
||||
"""Buldigen generate grpc_shadow_boringssl headers |
||||
This script takes the list of symbols from |
||||
src/objective-c/grpc_shadow_boringssl_symbols and populate them in |
||||
settings.grpc_shadow_boringssl_symbols |
||||
""" |
||||
|
||||
|
||||
def mako_plugin(dictionary): |
||||
with open('src/objective-c/grpc_shadow_boringssl_symbol_list') as f: |
||||
symbols = f.readlines() |
||||
# Remove trailing '\n' |
||||
symbols = [s.strip() for s in symbols] |
||||
# Remove comments |
||||
symbols = [s for s in symbols if s[0] != '#'] |
||||
# Remove the commit number |
||||
del symbols[0] |
||||
|
||||
settings = dictionary['settings'] |
||||
settings['grpc_shadow_boringssl_symbols'] = symbols |
@ -0,0 +1,32 @@ |
||||
#!/bin/bash |
||||
# Copyright 2018 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. |
||||
|
||||
|
||||
# Check if the commit version of BoringSSL podspec, BoringSSL submodule, and |
||||
# the shadowed symbol list are all based on the same BoringSSL commit. |
||||
set -e |
||||
|
||||
cd $(dirname $0) |
||||
|
||||
boringssl_podspec_original="../../src/objective-c/BoringSSL-GRPC.podspec" |
||||
symbol_list="../../src/objective-c/grpc_shadow_boringssl_symbol_list" |
||||
|
||||
# Check BoringSSL version matches |
||||
ver1=$(git submodule |grep "boringssl " | awk '{print $1}' | head -n 1) |
||||
ver2=$(cat $boringssl_podspec_original | grep ':commit =>' | sed -E 's/.*"(.*)".*/\1/g') |
||||
ver3=$(cat $symbol_list | sed -n '2 p') |
||||
[ $ver1 == $ver2 ] && [ $ver1 == $ver3 ] || { echo "BoringSSL podspec (src/objective-c/BoringSSL.podspec), BoringSSL submodule (third_party/boringssl), and BoringSSL symbol list (src/objective-c/grpc_shadow_boringssl_symbol_list) commit do not match." ; echo "BoringSSL podspec: $ver1" ; echo "BoringSSL submodule: $ver2" ; echo "BoringSSL symbol list: $ver3" ; exit 1 ; } |
||||
|
||||
exit 0 |
@ -0,0 +1,45 @@ |
||||
#!/bin/bash |
||||
# Copyright 2018 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. |
||||
|
||||
# Generate the list of boringssl symbols that need to be shadowed based on the |
||||
# current boringssl submodule. Requires local toolchain to build boringssl. |
||||
set -e |
||||
|
||||
cd $(dirname $0) |
||||
|
||||
symbol_list="../../src/objective-c/grpc_shadow_boringssl_symbol_list" |
||||
|
||||
ssl_lib='../../third_party/boringssl/build/ssl/libssl.a' |
||||
crypto_lib='../../third_party/boringssl/build/crypto/libcrypto.a' |
||||
|
||||
# Generate boringssl archives |
||||
( cd ../../third_party/boringssl ; mkdir -p build ; cd build ; cmake .. ; make ) |
||||
|
||||
# Generate shadow_boringssl.h |
||||
outputs="$(nm -C $ssl_lib)"$'\n'"$(nm -C $crypto_lib)" |
||||
symbols=$(echo "$outputs" | |
||||
grep '^[0-9a-f]* [A-Z] ' | # Only public symbols |
||||
grep -v ' bssl::' | # Filter BoringSSL symbols since they are already namespaced |
||||
sed 's/(.*//g' | # Remove parenthesis from C++ symbols |
||||
grep '^[0-9a-f]* [A-Z] _' | # Filter symbols that is not prefixed with '_' |
||||
sed 's/[0-9a-f]* [A-Z] _\(.*\)/\1/g') # Extract the symbol names |
||||
|
||||
commit=$(git submodule | grep "boringssl " | awk '{print $1}' | head -n 1) |
||||
|
||||
echo "# Automatically generated by tools/distrib/generate_grpc_shadow_boringssl_symbol_list.sh" > $symbol_list |
||||
echo $commit >> $symbol_list |
||||
echo "$symbols" >> $symbol_list |
||||
|
||||
exit 0 |
Loading…
Reference in new issue