blob: ec3b716e35a8d5e40268e6a09ab0025b79ae8c4a [file] [log] [blame]
#!/usr/bin/env python2.7
# 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.
import json
import os
import sys
import yaml
run_dir = os.path.dirname(sys.argv[0])
sources_path = os.path.abspath(
os.path.join(run_dir, "../../third_party/boringssl-with-bazel/sources.json")
)
try:
with open(sources_path, "r") as s:
sources = json.load(s)
except IOError:
sources_path = os.path.abspath(
os.path.join(
run_dir, "../../../../third_party/openssl/boringssl/sources.json"
)
)
with open(sources_path, "r") as s:
sources = json.load(s)
def map_dir(filename):
return "third_party/boringssl-with-bazel/" + filename
class Grpc(object):
"""Adapter for boring-SSL json sources files."""
def __init__(self, sources):
self.yaml = None
self.WriteFiles(sources)
def WriteFiles(self, files):
test_binaries = ["ssl_test", "crypto_test"]
asm_outputs = {
key: value
for key, value in files.items()
if any(f.endswith(".S") or f.endswith(".asm") for f in value)
}
self.yaml = {
"#": "generated with src/boringssl/gen_build_yaml.py",
"raw_boringssl_build_output_for_debugging": {
"files": files,
},
"libs": [
{
"name": "boringssl",
"build": "private",
"language": "c",
"secure": False,
"src": sorted(
map_dir(f) for f in files["ssl"] + files["crypto"]
),
"asm_src": {
k: [map_dir(f) for f in value]
for k, value in asm_outputs.items()
},
"headers": sorted(
map_dir(f)
# We want to include files['fips_fragments'], but not build them as objects.
# See https://boringssl-review.googlesource.com/c/boringssl/+/16946
for f in files["ssl_headers"]
+ files["ssl_internal_headers"]
+ files["crypto_headers"]
+ files["crypto_internal_headers"]
+ files["fips_fragments"]
),
"boringssl": True,
"defaults": "boringssl",
},
{
"name": "boringssl_test_util",
"build": "private",
"language": "c++",
"secure": False,
"boringssl": True,
"defaults": "boringssl",
"src": [map_dir(f) for f in sorted(files["test_support"])],
},
],
"targets": [
{
"name": "boringssl_%s" % test,
"build": "test",
"run": False,
"secure": False,
"language": "c++",
"src": sorted(map_dir(f) for f in files[test]),
"vs_proj_dir": "test/boringssl",
"boringssl": True,
"defaults": "boringssl",
"deps": [
"boringssl_test_util",
"boringssl",
],
}
for test in test_binaries
],
"tests": [
{
"name": "boringssl_%s" % test,
"args": [],
"exclude_configs": ["asan", "ubsan"],
"ci_platforms": ["linux", "mac", "posix", "windows"],
"platforms": ["linux", "mac", "posix", "windows"],
"flaky": False,
"gtest": True,
"language": "c++",
"boringssl": True,
"defaults": "boringssl",
"cpu_cost": 1.0,
}
for test in test_binaries
],
}
grpc_platform = Grpc(sources)
print(yaml.dump(grpc_platform.yaml))