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

import("//build/components.gni")
import("//build/fuzz.gni")

source_set("pkg_url") {
  sources = [
    "fuchsia_pkg_url.cc",
    "fuchsia_pkg_url.h",
    "url_resolver.cc",
    "url_resolver.h",
  ]

  public_deps = [ "//src/lib/fxl" ]
  deps = [ "//third_party/re2" ]
}

executable("tests") {
  testonly = true

  output_name = "pkg_url_unittests"

  sources = [
    "fuchsia_pkg_url_unittest.cc",
    "url_resolver_unittest.cc",
  ]

  deps = [
    ":pkg_url",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_unittest_package("pkg_url_unittests") {
  deps = [ ":tests" ]
}

fuchsia_fuzzer_component("fuchsia-pkg-url-fuzzer-component") {
  manifest = "meta/fuchsia_pkg_url_fuzzer.cml"
  deps = [ ":fuchsia_pkg_url_fuzzer" ]
}

fuchsia_fuzzer_component("url-resolver-fuzzer-component") {
  manifest = "meta/url_resolver_fuzzer.cml"
  deps = [ ":url_resolver_fuzzer" ]
}

fuchsia_fuzzer_package("pkg_url_fuzzers") {
  cpp_fuzzer_components = [
    ":fuchsia-pkg-url-fuzzer-component",
    ":url-resolver-fuzzer-component",
  ]
}

fuchsia_library_fuzzer("fuchsia_pkg_url_fuzzer") {
  sources = [ "fuchsia_pkg_url_fuzztest.cc" ]
  deps = [ ":pkg_url" ]
}

fuchsia_library_fuzzer("url_resolver_fuzzer") {
  sources = [ "url_resolver_fuzztest.cc" ]
  deps = [ ":pkg_url" ]
}
