# 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/nacl/config.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")

config("ipc_fuzzer_config") {
  defines = [ "ENABLE_IPC_FUZZER" ]
}

config("ipc_fuzzer_tool_config") {
  if (is_win) {
    cflags = [ "/wd4366" ]
  }
  defines = [ "ENABLE_IPC_FUZZER" ]
  include_dirs = [ "." ]
}

if (enable_ipc_fuzzer) {
  assert(!is_component_build, "IPC fuzzer does not support component builds.")

  group("ipc_fuzzer_all") {
    testonly = true
    deps = [
      "//tools/ipc_fuzzer/fuzzer:ipc_fuzzer",

      # Disable this until build is fixed.
      # TODO(1241274): Fix the build issue and reenable this.
      # "//tools/ipc_fuzzer/message_dump:ipc_message_dump",

      "//tools/ipc_fuzzer/message_replay:ipc_fuzzer_replay",
      "//tools/ipc_fuzzer/message_tools:ipc_message_list",
      "//tools/ipc_fuzzer/message_tools:ipc_message_util",
    ]
  }
} else {
  group("ipc_fuzzer_all") {
  }
}
