chromium/third_party/libFuzzer/BUILD.gn

# 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" ]
  }
}