# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(current_toolchain == host_toolchain)

source_set("transport_security_state_generator_sources") {
  sources = [
    "cert_util.cc",
    "cert_util.h",
    "input_file_parsers.cc",
    "input_file_parsers.h",
    "pinset.cc",
    "pinset.h",
    "pinsets.cc",
    "pinsets.h",
    "preloaded_state_generator.cc",
    "preloaded_state_generator.h",
    "spki_hash.cc",
    "spki_hash.h",
    "transport_security_state_entry.cc",
    "transport_security_state_entry.h",
  ]
  deps = [
    "//base",
    "//net/tools/huffman_trie:huffman_trie_generator_sources",
    "//third_party/boringssl",
  ]
}

source_set("transport_security_state_generator_test_sources") {
  testonly = true
  sources = [
    "cert_util_unittest.cc",
    "input_file_parsers_unittest.cc",
    "spki_hash_unittest.cc",
  ]
  deps = [
    ":transport_security_state_generator_sources",
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/boringssl",
  ]
}

executable("transport_security_state_generator") {
  sources = [
    "transport_security_state_generator.cc",
  ]
  deps = [
    ":transport_security_state_generator_sources",
    "//base",
    "//crypto",
    "//third_party/boringssl",
  ]
}
