blob: 8e72dd2830e5bd6c6a2a1f6900262f8b10664780 [file] [log] [blame]
# Copyright 2021 The Pigweed 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
#
# https://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("//build_overrides/pigweed.gni")
import("$dir_pw_build/facade.gni")
import("$dir_pw_build/target_types.gni")
import("$dir_pw_docgen/docs.gni")
import("$dir_pw_tls_client/configs.gni")
config("public_includes") {
include_dirs = [ "public" ]
}
pw_facade("pw_tls_client") {
backend = pw_tls_client_BACKEND
public_configs = [ ":public_includes" ]
public = [
"public/pw_tls_client/options.h",
"public/pw_tls_client/session.h",
"public/pw_tls_client/status.h",
]
public_deps = [
"$dir_pw_assert",
"$dir_pw_bytes",
"$dir_pw_result",
"$dir_pw_status",
"$dir_pw_stream",
"$dir_pw_string",
]
}
pw_facade("tls_entropy") {
backend = pw_tls_client_ENTROPY_BACKEND
public_configs = [ ":public_includes" ]
public = [ "public/pw_tls_client/entropy.h" ]
public_deps = [
"$dir_pw_bytes",
"$dir_pw_status",
]
}
# A fake entropy source that does nothing. It should only be used for
# demo and test purpose only. Production code shall not use it.
pw_source_set("fake_entropy") {
public_deps = [ ":tls_entropy.facade" ]
sources = [ "fake_entropy.cc" ]
deps = [ "$dir_pw_log" ]
}
# The ":time" target wraps the time() and gettimeofday(), which are
# commonly used by TLS libraries for expiration check.
config("time_wrap") {
# Link options that wrap C time calls.
ldflags = [
"-Wl,--wrap=time",
"-Wl,--wrap=gettimeofday",
]
}
pw_facade("time") {
backend = pw_tls_client_TIME_BACKEND
public_configs = [ ":time_wrap" ]
public = []
# The target should only be used by TLS libraries to obtain date time
visibility = [
":*",
"$dir_pw_third_party/boringssl",
"$dir_pw_third_party/mbedtls",
]
}
# The build time is obtained with a python script and put in a generated header
# file. The header file is included in build_time.cc
pw_python_action("generate_buid_time_header") {
header_output = "$target_gen_dir/$target_name/build_time.h"
script = "generate_build_time_header.py"
outputs = [
header_output,
# A output file that is never generated so that this action is always
# re-run. This is to make sure that the build time in the header is always
# up-to-date.
"$target_gen_dir/non_exists",
]
args = [ rebase_path(header_output) ]
}
# The target provides a backend to :time that returns build time.
pw_source_set("build_time") {
time_injection_outputs = get_target_outputs(":generate_buid_time_header")
include_dirs = [ get_path_info(time_injection_outputs[0], "dir") ]
sources = [ "build_time.cc" ]
deps = [
":generate_buid_time_header",
":time.facade",
]
}
# TODO(pwbug/396): Add a python target to generate source file from the
# specified CRLSet file in `pw_tls_client_CRLSET_FILE`
pw_source_set("crlset") {
public_configs = [ ":public_includes" ]
public = [ "public/pw_tls_client/crlset.h" ]
# TODO(pwbug/396): Add sources generated from a CRLSet file to build.
}
pw_doc_group("docs") {
sources = [ "docs.rst" ]
}