blob: 1ac14ecce3083cde5c0e56503938449d11590d05 [file] [log] [blame]
# 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.
import("//build/config/features.gni")
import("//build/config/sanitizers/sanitizers.gni")
static_library("libfuzzer_main") {
# libfuzzer should be compiled without coverage (infinite loop in trace_cmp).
configs -= [ "//build/config/sanitizers:default_sanitizer_coverage_flags" ]
sources = []
if (use_libfuzzer) {
sources += [
"../../third_party/llvm/lib/Fuzzer/FuzzerCrossOver.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerDriver.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerFlags.def",
"../../third_party/llvm/lib/Fuzzer/FuzzerIO.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerInterface.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerLoop.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerMain.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerMutate.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerSHA1.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerTracePC.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerTraceState.cpp",
"../../third_party/llvm/lib/Fuzzer/FuzzerUtil.cpp",
]
} 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") {
}