# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("///build/config/sanitizers/sanitizers.gni")
config("warnings") {
if (is_clang) {
cflags = [
"-Wno-shadow",
# See crbug.com/932188, libFuzzer does not check the result of write()
# when it does raw printing.
"-Wno-unused-result",
]
}
}
# Depend on this if you wish to use LLVMFuzzerRunDriver from within
# some existing code
source_set("libfuzzer") {
sources = [
"src/FuzzerCrossOver.cpp",
"src/FuzzerDataFlowTrace.cpp",
"src/FuzzerDriver.cpp",
"src/FuzzerExtFunctionsDlsym.cpp",
"src/FuzzerExtFunctionsWeak.cpp",
"src/FuzzerExtFunctionsWindows.cpp",
"src/FuzzerExtraCounters.cpp",
"src/FuzzerExtraCountersDarwin.cpp",
"src/FuzzerExtraCountersWindows.cpp",
"src/FuzzerFork.cpp",
"src/FuzzerIO.cpp",
"src/FuzzerIOPosix.cpp",
"src/FuzzerIOWindows.cpp",
"src/FuzzerLoop.cpp",
"src/FuzzerMerge.cpp",
"src/FuzzerMutate.cpp",
"src/FuzzerSHA1.cpp",
"src/FuzzerTracePC.cpp",
"src/FuzzerUtil.cpp",
"src/FuzzerUtilDarwin.cpp",
"src/FuzzerUtilFuchsia.cpp",
"src/FuzzerUtilLinux.cpp",
"src/FuzzerUtilPosix.cpp",
"src/FuzzerUtilWindows.cpp",
]
if (!using_sanitizer) {
sources += [ "src/FuzzerInterceptors.cpp" ]
}
configs -= fuzzing_engine_remove_configs
configs += fuzzing_engine_add_configs
configs += [ ":warnings" ]
deps = []
if (is_fuchsia) {
deps += [ "//third_party/fuchsia-sdk/sdk:fdio" ]
}
}
# Depend on this if you wish for libfuzzer to provide the main()
# function for your target.
source_set("libfuzzer_main") {
deps = [ ":libfuzzer" ]
configs -= fuzzing_engine_remove_configs
configs += fuzzing_engine_add_configs
sources = []
if (!is_ios) {
sources += [ "src/FuzzerMain.cpp" ]
}
}
if (use_afl) {
source_set("afl_driver") {
sources = [ "src/afl/afl_driver.cpp" ]
configs -= fuzzing_engine_remove_configs
configs += fuzzing_engine_add_configs
configs += [ ":warnings" ]
}
}