# Copyright 2016 The V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("../../gni/v8.gni")

v8_executable("unittests") {
  testonly = true

  # TODO(machenbach): Translate from gyp.
  #['OS=="aix"', {
  #  'ldflags': [ '-Wl,-bbigtoc' ],
  #}],

  deps = [
    ":unittests_sources",
    "../..:v8_for_testing",
    "../..:v8_libbase",
    "../..:v8_libplatform",
    "//build/win:default_exe_manifest",
    "//testing/gmock",
    "//testing/gtest",
  ]

  data_deps = [
    "../../tools:v8_testrunner",
  ]

  data = [
    "testcfg.py",
    "unittests.status",
  ]

  configs = [
    "../..:external_config",
    "../..:internal_config_base",
  ]
}

v8_source_set("unittests_sources") {
  testonly = true

  sources = [
    "../../test/common/assembler-tester.h",
    "../../test/common/wasm/wasm-macro-gen.h",
    "../../testing/gmock-support.h",
    "../../testing/gtest-support.h",
    "api/access-check-unittest.cc",
    "api/exception-unittest.cc",
    "api/interceptor-unittest.cc",
    "api/isolate-unittest.cc",
    "api/remote-object-unittest.cc",
    "api/resource-constraints-unittest.cc",
    "api/v8-object-unittest.cc",
    "asmjs/asm-scanner-unittest.cc",
    "asmjs/asm-types-unittest.cc",
    "base/address-region-unittest.cc",
    "base/atomic-utils-unittest.cc",
    "base/bits-unittest.cc",
    "base/cpu-unittest.cc",
    "base/division-by-constant-unittest.cc",
    "base/flags-unittest.cc",
    "base/functional-unittest.cc",
    "base/ieee754-unittest.cc",
    "base/iterator-unittest.cc",
    "base/list-unittest.cc",
    "base/logging-unittest.cc",
    "base/macros-unittest.cc",
    "base/ostreams-unittest.cc",
    "base/platform/condition-variable-unittest.cc",
    "base/platform/mutex-unittest.cc",
    "base/platform/platform-unittest.cc",
    "base/platform/semaphore-unittest.cc",
    "base/platform/time-unittest.cc",
    "base/region-allocator-unittest.cc",
    "base/sys-info-unittest.cc",
    "base/template-utils-unittest.cc",
    "base/threaded-list-unittest.cc",
    "base/utils/random-number-generator-unittest.cc",
    "base/vlq-base64-unittest.cc",
    "codegen/code-stub-assembler-unittest.cc",
    "codegen/code-stub-assembler-unittest.h",
    "codegen/register-configuration-unittest.cc",
    "codegen/source-position-table-unittest.cc",
    "compiler-dispatcher/compiler-dispatcher-unittest.cc",
    "compiler-dispatcher/optimizing-compile-dispatcher-unittest.cc",
    "compiler/backend/instruction-selector-unittest.cc",
    "compiler/backend/instruction-selector-unittest.h",
    "compiler/backend/instruction-sequence-unittest.cc",
    "compiler/backend/instruction-sequence-unittest.h",
    "compiler/backend/instruction-unittest.cc",
    "compiler/branch-elimination-unittest.cc",
    "compiler/bytecode-analysis-unittest.cc",
    "compiler/checkpoint-elimination-unittest.cc",
    "compiler/code-assembler-unittest.cc",
    "compiler/code-assembler-unittest.h",
    "compiler/common-operator-reducer-unittest.cc",
    "compiler/common-operator-unittest.cc",
    "compiler/compiler-test-utils.h",
    "compiler/constant-folding-reducer-unittest.cc",
    "compiler/control-equivalence-unittest.cc",
    "compiler/control-flow-optimizer-unittest.cc",
    "compiler/dead-code-elimination-unittest.cc",
    "compiler/decompression-elimination-unittest.cc",
    "compiler/diamond-unittest.cc",
    "compiler/effect-control-linearizer-unittest.cc",
    "compiler/graph-reducer-unittest.cc",
    "compiler/graph-reducer-unittest.h",
    "compiler/graph-trimmer-unittest.cc",
    "compiler/graph-unittest.cc",
    "compiler/graph-unittest.h",
    "compiler/int64-lowering-unittest.cc",
    "compiler/js-call-reducer-unittest.cc",
    "compiler/js-create-lowering-unittest.cc",
    "compiler/js-intrinsic-lowering-unittest.cc",
    "compiler/js-native-context-specialization-unittest.cc",
    "compiler/js-operator-unittest.cc",
    "compiler/js-typed-lowering-unittest.cc",
    "compiler/linkage-tail-call-unittest.cc",
    "compiler/load-elimination-unittest.cc",
    "compiler/loop-peeling-unittest.cc",
    "compiler/machine-operator-reducer-unittest.cc",
    "compiler/machine-operator-unittest.cc",
    "compiler/node-cache-unittest.cc",
    "compiler/node-matchers-unittest.cc",
    "compiler/node-properties-unittest.cc",
    "compiler/node-test-utils.cc",
    "compiler/node-test-utils.h",
    "compiler/node-unittest.cc",
    "compiler/opcodes-unittest.cc",
    "compiler/persistent-unittest.cc",
    "compiler/redundancy-elimination-unittest.cc",
    "compiler/regalloc/live-range-unittest.cc",
    "compiler/regalloc/move-optimizer-unittest.cc",
    "compiler/regalloc/register-allocator-unittest.cc",
    "compiler/schedule-unittest.cc",
    "compiler/scheduler-rpo-unittest.cc",
    "compiler/scheduler-unittest.cc",
    "compiler/simplified-lowering-unittest.cc",
    "compiler/simplified-operator-reducer-unittest.cc",
    "compiler/simplified-operator-unittest.cc",
    "compiler/state-values-utils-unittest.cc",
    "compiler/typed-optimization-unittest.cc",
    "compiler/typer-unittest.cc",
    "compiler/value-numbering-reducer-unittest.cc",
    "compiler/zone-stats-unittest.cc",
    "date/date-cache-unittest.cc",
    "diagnostics/eh-frame-iterator-unittest.cc",
    "diagnostics/eh-frame-writer-unittest.cc",
    "execution/microtask-queue-unittest.cc",
    "heap/barrier-unittest.cc",
    "heap/bitmap-test-utils.h",
    "heap/bitmap-unittest.cc",
    "heap/code-object-registry-unittest.cc",
    "heap/embedder-tracing-unittest.cc",
    "heap/gc-idle-time-handler-unittest.cc",
    "heap/gc-tracer-unittest.cc",
    "heap/heap-controller-unittest.cc",
    "heap/heap-unittest.cc",
    "heap/item-parallel-job-unittest.cc",
    "heap/marking-unittest.cc",
    "heap/memory-reducer-unittest.cc",
    "heap/object-stats-unittest.cc",
    "heap/scavenge-job-unittest.cc",
    "heap/slot-set-unittest.cc",
    "heap/spaces-unittest.cc",
    "heap/unmapper-unittest.cc",
    "heap/worklist-unittest.cc",
    "interpreter/bytecode-array-builder-unittest.cc",
    "interpreter/bytecode-array-iterator-unittest.cc",
    "interpreter/bytecode-array-random-iterator-unittest.cc",
    "interpreter/bytecode-array-writer-unittest.cc",
    "interpreter/bytecode-decoder-unittest.cc",
    "interpreter/bytecode-node-unittest.cc",
    "interpreter/bytecode-operands-unittest.cc",
    "interpreter/bytecode-register-allocator-unittest.cc",
    "interpreter/bytecode-register-optimizer-unittest.cc",
    "interpreter/bytecode-source-info-unittest.cc",
    "interpreter/bytecode-utils.h",
    "interpreter/bytecodes-unittest.cc",
    "interpreter/constant-array-builder-unittest.cc",
    "interpreter/interpreter-assembler-unittest.cc",
    "interpreter/interpreter-assembler-unittest.h",
    "libplatform/default-platform-unittest.cc",
    "libplatform/default-worker-threads-task-runner-unittest.cc",
    "libplatform/task-queue-unittest.cc",
    "libplatform/worker-thread-unittest.cc",
    "logging/counters-unittest.cc",
    "numbers/bigint-unittest.cc",
    "numbers/conversions-unittest.cc",
    "objects/object-unittest.cc",
    "objects/value-serializer-unittest.cc",
    "parser/ast-value-unittest.cc",
    "parser/preparser-unittest.cc",
    "profiler/strings-storage-unittest.cc",
    "regress/regress-crbug-938251-unittest.cc",
    "run-all-unittests.cc",
    "strings/char-predicates-unittest.cc",
    "strings/unicode-unittest.cc",
    "tasks/background-compile-task-unittest.cc",
    "tasks/cancelable-tasks-unittest.cc",
    "test-helpers.cc",
    "test-helpers.h",
    "test-utils.cc",
    "test-utils.h",
    "torque/earley-parser-unittest.cc",
    "torque/ls-json-unittest.cc",
    "torque/ls-message-unittest.cc",
    "torque/ls-server-data-unittest.cc",
    "torque/torque-unittest.cc",
    "torque/torque-utils-unittest.cc",
    "utils/allocation-unittest.cc",
    "utils/detachable-vector-unittest.cc",
    "utils/locked-queue-unittest.cc",
    "utils/utils-unittest.cc",
    "wasm/control-transfer-unittest.cc",
    "wasm/decoder-unittest.cc",
    "wasm/function-body-decoder-unittest.cc",
    "wasm/leb-helper-unittest.cc",
    "wasm/loop-assignment-analysis-unittest.cc",
    "wasm/module-decoder-unittest.cc",
    "wasm/streaming-decoder-unittest.cc",
    "wasm/wasm-code-manager-unittest.cc",
    "wasm/wasm-compiler-unittest.cc",
    "wasm/wasm-macro-gen-unittest.cc",
    "wasm/wasm-module-builder-unittest.cc",
    "wasm/wasm-opcodes-unittest.cc",
    "wasm/wasm-text-unittest.cc",
    "zone/zone-allocator-unittest.cc",
    "zone/zone-chunk-list-unittest.cc",
    "zone/zone-unittest.cc",
  ]

  if (use_jumbo_build) {
    jumbo_excluded_sources = [
      # TODO(mostynb@opera.com): figure out how to make this build in both
      # modes.  Template issues on windows if we add a functional_unittest
      # namespace as with the other files.
      "base/functional-unittest.cc",
    ]
  }

  if (v8_current_cpu == "arm") {
    sources += [
      "assembler/turbo-assembler-arm-unittest.cc",
      "compiler/arm/instruction-selector-arm-unittest.cc",
    ]
  } else if (v8_current_cpu == "arm64") {
    sources += [
      "assembler/turbo-assembler-arm64-unittest.cc",
      "compiler/arm64/instruction-selector-arm64-unittest.cc",
    ]
  } else if (v8_current_cpu == "x86") {
    sources += [
      "assembler/turbo-assembler-ia32-unittest.cc",
      "compiler/ia32/instruction-selector-ia32-unittest.cc",
    ]
  } else if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel") {
    sources += [
      "assembler/turbo-assembler-mips-unittest.cc",
      "compiler/mips/instruction-selector-mips-unittest.cc",
    ]
  } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") {
    sources += [
      "assembler/turbo-assembler-mips64-unittest.cc",
      "compiler/mips64/instruction-selector-mips64-unittest.cc",
    ]
  } else if (v8_current_cpu == "x64") {
    sources += [
      "assembler/turbo-assembler-x64-unittest.cc",
      "compiler/x64/instruction-selector-x64-unittest.cc",
      "wasm/trap-handler-x64-unittest.cc",
    ]
  } else if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64") {
    sources += [
      "assembler/turbo-assembler-ppc-unittest.cc",
      "compiler/ppc/instruction-selector-ppc-unittest.cc",
    ]
  } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
    sources += [
      "assembler/turbo-assembler-s390-unittest.cc",
      "compiler/s390/instruction-selector-s390-unittest.cc",
    ]
  }

  if (is_posix) {
    sources += [ "wasm/trap-handler-posix-unittest.cc" ]
  }

  if (is_win) {
    sources += [ "wasm/trap-handler-win-unittest.cc" ]
  }

  configs = [
    "../..:external_config",
    "../..:internal_config_base",
  ]

  deps = [
    "..:common_test_headers",
    "../..:v8_for_testing",
    "../..:v8_libbase",
    "../..:v8_libplatform",
    "../../third_party/inspector_protocol:encoding_test",
    "../../third_party/inspector_protocol:bindings_test",
    "//build/win:default_exe_manifest",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (is_win) {
    # This warning is benignly triggered by the U16 and U32 macros in
    # bytecode-utils.h.
    # C4309: 'static_cast': truncation of constant value
    cflags = [ "/wd4309" ]
  }
}
