# 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/target_types.gni")
import("tls_client_example.gni")

teensy_bloaty_config = rebase_path("./teensy41_bloaty_config.bloaty")

tls_client_example("boringssl_teensy_ethernet") {
  tls_backend = "backends/tls/boringssl"
  transport_backend = "backends/transport/teensy_ethernet"
  bloaty_config = teensy_bloaty_config
}

tls_client_example("picotls_teensy_ethernet") {
  tls_backend = "backends/tls/picotls"
  transport_backend = "backends/transport/teensy_ethernet"
  bloaty_config = teensy_bloaty_config
}

tls_client_example("mbedtls_teensy_ethernet") {
  tls_backend = "backends/tls/mbedtls"
  transport_backend = "backends/transport/teensy_ethernet"
  bloaty_config = teensy_bloaty_config
}
