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

# This file is a clean copy of Chromium's third_party/libFuzzer/BUILD.gn

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