blob: 03736cbd56e73c5c5de615cb8e341cc18423baae [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_bloat/bloat.gni")
import("$dir_pw_build/target_types.gni")
# A convenient template for generating example applications with different
# tls/transport backends.
template("tls_client_example") {
assert(defined(invoker.tls_backend) && invoker.tls_backend != "",
"must provide a tls backend")
assert(defined(invoker.transport_backend) && invoker.transport_backend != "",
"must provide a transport backend")
example_binary_target_name = target_name + "_binary"
size_report_target_name = target_name + "_tls_size_report"
group(target_name) {
deps = [
":$example_binary_target_name",
":$size_report_target_name",
]
}
executable_exclude_vars = [
"tls_backend",
"transport_backend",
"no_bloaty",
"bloaty_config",
]
executable_common_vars = {
forward_variables_from(invoker, "*", executable_exclude_vars)
if (!defined(sources)) {
sources = []
}
sources += [
"sysdeps.cc",
"tls_client_example.cc",
]
if (!defined(deps)) {
deps = []
}
deps += [
"$dir_pw_log",
"$dir_pw_spin_delay",
"$dir_pw_sys_io",
invoker.transport_backend,
]
}
# Runnable target
pw_executable(example_binary_target_name) {
forward_variables_from(executable_common_vars, "*")
deps += [ invoker.tls_backend ]
}
# Size report target.
if (!defined(invoker.no_bloaty) || !invoker.no_bloaty) {
# A similar target but with a noop tls backend for size comparison
base_target_name = example_binary_target_name + "_without_tls"
pw_executable(base_target_name) {
forward_variables_from(executable_common_vars, "*")
deps += [ "//applications/tls_example/backends/tls/dummy:dummy" ]
}
# Bloaty size report.
pw_size_report(size_report_target_name) {
title = size_report_target_name
base = ":$base_target_name"
full_report = true
binaries = [
{
target = ":$example_binary_target_name"
label = "$example_binary_target_name"
if (defined(invoker.bloaty_config)) {
bloaty_config = invoker.bloaty_config
}
},
]
}
} else {
group(size_report_target_name) {
}
}
}