# 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/fuzzing/fuchsia_library_fuzzer.gni")
import("//build/fuzzing/host_library_fuzzer.gni")

# Creates a C++ fuzzer binary.
#
# This template can be used to create fuzzers for both the Fuchsia and development host platforms.
#
# Parameters are the same as `executable`, plus:
#
#   test_inputs
#     Same meaning as for `host_library_fuzzer` when building for host, ignored otherwise.
#
template("cpp_fuzzer") {
  ignored_parameters = []
  if (is_fuchsia) {
    ignored_parameters += [ "test_inputs" ]
    fuchsia_library_fuzzer(target_name) {
      forward_variables_from(invoker, "*", ignored_parameters)
    }
  } else {
    host_library_fuzzer(target_name) {
      forward_variables_from(invoker, "*", ignored_parameters)
    }
  }
  not_needed(invoker, ignored_parameters)
}

set_defaults("cpp_fuzzer") {
  configs = default_executable_configs
}
