# Copyright 2020 Google LLC
#
# 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")

config("external_config") {
  include_dirs = [ "src/include" ]
}

config("internal_config") {
  visibility = [ ":*" ]  # Only targets in this file can depend on this.
  defines = [ "MBEDTLS_CONFIG_FILE=\"custom_config.h\"" ]
  include_dirs = [ get_path_info(get_path_info("BUILD.gn", "abspath"), "dir") ]
  cflags = [ "-Wno-cast-qual" ]
}

pw_static_library("mbedcrypto") {
  sources = [
    "src/library/asn1parse.c",
    "src/library/asn1write.c",
    "src/library/bignum.c",
    "src/library/ecdsa.c",
    "src/library/ecp.c",
    "src/library/ecp_curves.c",
    "src/library/hkdf.c",
    "src/library/hmac_drbg.c",
    "src/library/md.c",
    "src/library/oid.c",
    "src/library/pk.c",
    "src/library/pk_wrap.c",
    "src/library/pkwrite.c",
    "src/library/platform_util.c",
    "src/library/sha512.c",
    "src/library/x509_create.c",
    "src/library/x509write_crt.c",
  ]

  public_configs = [ ":external_config" ]
  configs = [ ":internal_config" ]
}
