# Copyright 2015 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.

# LibFuzzer is a LLVM tool for coverage-guided fuzz testing.
# See http://www.chromium.org/developers/testing/libfuzzer
#
# To enable libfuzzer, 'use_libfuzzer' GN option should be set to true.
# Or to enable afl, 'use_afl' GN option should be set to true.

import("//build/config/features.gni")
import("//build/config/sanitizers/sanitizers.gni")

source_set("libfuzzer_main") {
  deps = []
  sources = []
  if (use_libfuzzer) {
    deps += [ "//third_party/libFuzzer:libfuzzer" ]
  } else if (use_afl) {
    deps += [ "//third_party/libFuzzer:afl_driver" ]
  } else if (use_drfuzz) {
    sources += [ "drfuzz_main.cc" ]
  } else {
    sources += [ "unittest_main.cc" ]
  }
}

# A config used by all fuzzer_tests.
config("fuzzer_test_config") {
  if (use_libfuzzer && is_mac) {
    ldflags = [
      "-Wl,-U,_LLVMFuzzerCustomMutator",
      "-Wl,-U,_LLVMFuzzerInitialize",
    ]
  }
}

# Noop config used to tag fuzzer tests excluded from clusterfuzz.
# Libfuzzer build bot uses this to filter out targets while
# building an archive for clusterfuzz.
config("no_clusterfuzz") {
}

# noop to tag seed corpus rules.
source_set("seed_corpus") {
}
