# 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",
    "allocation-unittest.cc",
    "api/access-check-unittest.cc",
    "api/exception-unittest.cc",
    "api/interceptor-unittest.cc",
    "api/isolate-unittest.cc",
    "api/remote-object-unittest.cc",
    "api/v8-object-unittest.cc",
    "asmjs/asm-scanner-unittest.cc",
    "asmjs/asm-types-unittest.cc",
    "asmjs/switch-logic-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/sys-info-unittest.cc",
    "base/template-utils-unittest.cc",
    "base/utils/random-number-generator-unittest.cc",
    "bigint-unittest.cc",
    "cancelable-tasks-unittest.cc",
    "char-predicates-unittest.cc",
    "code-stub-assembler-unittest.cc",
    "code-stub-assembler-unittest.h",
    "compiler-dispatcher/compiler-dispatcher-tracer-unittest.cc",
    "compiler-dispatcher/compiler-dispatcher-unittest.cc",
    "compiler-dispatcher/optimizing-compile-dispatcher-unittest.cc",
    "compiler-dispatcher/unoptimized-compile-job-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/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/instruction-selector-unittest.cc",
    "compiler/instruction-selector-unittest.h",
    "compiler/instruction-sequence-unittest.cc",
    "compiler/instruction-sequence-unittest.h",
    "compiler/instruction-unittest.cc",
    "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-operator-unittest.cc",
    "compiler/js-typed-lowering-unittest.cc",
    "compiler/linkage-tail-call-unittest.cc",
    "compiler/live-range-builder.h",
    "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/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",
    "counters-unittest.cc",
    "detachable-vector-unittest.cc",
    "eh-frame-iterator-unittest.cc",
    "eh-frame-writer-unittest.cc",
    "heap/barrier-unittest.cc",
    "heap/bitmap-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/task-queue-unittest.cc",
    "libplatform/worker-thread-unittest.cc",
    "locked-queue-unittest.cc",
    "object-unittest.cc",
    "parser/ast-value-unittest.cc",
    "parser/preparser-unittest.cc",
    "register-configuration-unittest.cc",
    "run-all-unittests.cc",
    "source-position-table-unittest.cc",
    "strings-storage-unittest.cc",
    "test-helpers.cc",
    "test-helpers.h",
    "test-utils.cc",
    "test-utils.h",
    "torque/earley-parser-unittest.cc",
    "unicode-unittest.cc",
    "utils-unittest.cc",
    "value-serializer-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/trap-handler-unittest.cc",
    "wasm/wasm-code-manager-unittest.cc",
    "wasm/wasm-macro-gen-unittest.cc",
    "wasm/wasm-module-builder-unittest.cc",
    "wasm/wasm-opcodes-unittest.cc",
    "zone/segmentpool-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",
    ]
  } 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",
    ]
  }

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

  deps = [
    "../..:v8_for_testing",
    "../..:v8_libbase",
    "../..:v8_libplatform",
    "//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" ]
  }
}
