# 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("cctest") {
  testonly = true
  deps = [
    ":cctest_sources",
  ]
  configs = [
    "../..:external_config",
    "../..:internal_config_base",
  ]

  ldflags = []

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

  # crbug.com/676417: Suppress symbol import warning from linker.
  if (is_win && is_component_build) {
    ldflags += [
      "/ignore:4217",
      "/ignore:4049",
    ]
    remove_configs = [ "//build/config/win:default_incremental_linking" ]
    configs += [ "//build/config/win:no_incremental_linking" ]
  }
}

v8_source_set("cctest_sources") {
  testonly = true

  sources = [
    "$target_gen_dir/resources.cc",

    ### gcmole(all) ###
    "../../test/common/wasm/flag-utils.h",
    "../../test/common/wasm/test-signatures.h",
    "../../test/common/wasm/wasm-macro-gen.h",
    "cctest.cc",
    "cctest.h",
    "compiler/c-signature.h",
    "compiler/call-tester.h",
    "compiler/code-assembler-tester.h",
    "compiler/codegen-tester.cc",
    "compiler/codegen-tester.h",
    "compiler/function-tester.cc",
    "compiler/function-tester.h",
    "compiler/graph-builder-tester.h",
    "compiler/test-basic-block-profiler.cc",
    "compiler/test-branch-combine.cc",
    "compiler/test-code-assembler.cc",
    "compiler/test-code-generator.cc",
    "compiler/test-gap-resolver.cc",
    "compiler/test-graph-visualizer.cc",
    "compiler/test-instruction.cc",
    "compiler/test-js-constant-cache.cc",
    "compiler/test-js-context-specialization.cc",
    "compiler/test-js-typed-lowering.cc",
    "compiler/test-jump-threading.cc",
    "compiler/test-linkage.cc",
    "compiler/test-loop-analysis.cc",
    "compiler/test-machine-operator-reducer.cc",
    "compiler/test-multiple-return.cc",
    "compiler/test-node.cc",
    "compiler/test-operator.cc",
    "compiler/test-representation-change.cc",
    "compiler/test-run-bytecode-graph-builder.cc",
    "compiler/test-run-calls-to-external-references.cc",
    "compiler/test-run-deopt.cc",
    "compiler/test-run-intrinsics.cc",
    "compiler/test-run-jsbranches.cc",
    "compiler/test-run-jscalls.cc",
    "compiler/test-run-jsexceptions.cc",
    "compiler/test-run-jsobjects.cc",
    "compiler/test-run-jsops.cc",
    "compiler/test-run-load-store.cc",
    "compiler/test-run-machops.cc",
    "compiler/test-run-native-calls.cc",
    "compiler/test-run-stackcheck.cc",
    "compiler/test-run-stubs.cc",
    "compiler/test-run-unwinding-info.cc",
    "compiler/test-run-variables.cc",
    "compiler/test-run-wasm-machops.cc",
    "compiler/value-helper.h",
    "expression-type-collector-macros.h",
    "ffi/test-ffi.cc",
    "gay-fixed.cc",
    "gay-fixed.h",
    "gay-precision.cc",
    "gay-precision.h",
    "gay-shortest.cc",
    "gay-shortest.h",
    "heap/heap-tester.h",
    "heap/heap-utils.cc",
    "heap/heap-utils.h",
    "heap/test-alloc.cc",
    "heap/test-array-buffer-tracker.cc",
    "heap/test-compaction.cc",
    "heap/test-concurrent-marking.cc",
    "heap/test-heap.cc",
    "heap/test-incremental-marking.cc",
    "heap/test-invalidated-slots.cc",
    "heap/test-lab.cc",
    "heap/test-mark-compact.cc",
    "heap/test-page-promotion.cc",
    "heap/test-spaces.cc",
    "interpreter/bytecode-expectations-printer.cc",
    "interpreter/bytecode-expectations-printer.h",
    "interpreter/interpreter-tester.cc",
    "interpreter/interpreter-tester.h",
    "interpreter/source-position-matcher.cc",
    "interpreter/source-position-matcher.h",
    "interpreter/test-bytecode-generator.cc",
    "interpreter/test-interpreter-intrinsics.cc",
    "interpreter/test-interpreter.cc",
    "interpreter/test-source-positions.cc",
    "libplatform/test-tracing.cc",
    "libsampler/test-sampler.cc",
    "parsing/test-parse-decision.cc",
    "parsing/test-preparser.cc",
    "parsing/test-scanner-streams.cc",
    "parsing/test-scanner.cc",
    "print-extension.cc",
    "print-extension.h",
    "profiler-extension.cc",
    "profiler-extension.h",
    "scope-test-helper.h",
    "setup-isolate-for-tests.cc",
    "setup-isolate-for-tests.h",
    "test-access-checks.cc",
    "test-accessor-assembler.cc",
    "test-accessors.cc",
    "test-allocation.cc",
    "test-api-accessors.cc",
    "test-api-interceptors.cc",
    "test-api.cc",
    "test-api.h",
    "test-array-list.cc",
    "test-atomicops.cc",
    "test-bignum-dtoa.cc",
    "test-bignum.cc",
    "test-bit-vector.cc",
    "test-circular-queue.cc",
    "test-code-layout.cc",
    "test-code-stub-assembler.cc",
    "test-compiler.cc",
    "test-constantpool.cc",
    "test-conversions.cc",
    "test-cpu-profiler.cc",
    "test-date.cc",
    "test-debug.cc",
    "test-decls.cc",
    "test-deoptimization.cc",
    "test-dictionary.cc",
    "test-diy-fp.cc",
    "test-double.cc",
    "test-dtoa.cc",
    "test-elements-kind.cc",
    "test-fast-dtoa.cc",
    "test-feedback-vector.cc",
    "test-feedback-vector.h",
    "test-field-type-tracking.cc",
    "test-fixed-dtoa.cc",
    "test-flags.cc",
    "test-func-name-inference.cc",
    "test-global-handles.cc",
    "test-global-object.cc",
    "test-hashcode.cc",
    "test-hashmap.cc",
    "test-heap-profiler.cc",
    "test-identity-map.cc",
    "test-inobject-slack-tracking.cc",
    "test-intl.cc",
    "test-liveedit.cc",
    "test-lockers.cc",
    "test-log.cc",
    "test-managed.cc",
    "test-mementos.cc",
    "test-modules.cc",
    "test-object.cc",
    "test-orderedhashtable.cc",
    "test-parsing.cc",
    "test-platform.cc",
    "test-profile-generator.cc",
    "test-random-number-generator.cc",
    "test-regexp.cc",
    "test-representation.cc",
    "test-sampler-api.cc",
    "test-serialize.cc",
    "test-strings.cc",
    "test-strtod.cc",
    "test-symbols.cc",
    "test-thread-termination.cc",
    "test-threads.cc",
    "test-trace-event.cc",
    "test-traced-value.cc",
    "test-transitions.cc",
    "test-transitions.h",
    "test-typedarrays.cc",
    "test-types.cc",
    "test-unbound-queue.cc",
    "test-unboxed-doubles.cc",
    "test-unscopables-hidden-prototype.cc",
    "test-usecounters.cc",
    "test-utils.cc",
    "test-version.cc",
    "test-weakmaps.cc",
    "test-weaksets.cc",
    "trace-extension.cc",
    "trace-extension.h",
    "types-fuzz.h",
    "unicode-helpers.h",
    "wasm/test-c-wasm-entry.cc",
    "wasm/test-run-wasm-64.cc",
    "wasm/test-run-wasm-asmjs.cc",
    "wasm/test-run-wasm-atomics.cc",
    "wasm/test-run-wasm-interpreter.cc",
    "wasm/test-run-wasm-js.cc",
    "wasm/test-run-wasm-module.cc",
    "wasm/test-run-wasm-relocation.cc",
    "wasm/test-run-wasm-simd.cc",
    "wasm/test-run-wasm.cc",
    "wasm/test-streaming-compilation.cc",
    "wasm/test-wasm-breakpoints.cc",
    "wasm/test-wasm-interpreter-entry.cc",
    "wasm/test-wasm-stack.cc",
    "wasm/test-wasm-trap-position.cc",
    "wasm/wasm-run-utils.cc",
    "wasm/wasm-run-utils.h",
  ]

  if (use_jumbo_build) {
    jumbo_excluded_sources = [
      # TODO(mostynb@opera.com): figure out the jumbo issues with these source
      # files, and include them in jumbo compilation units.
      "interpreter/bytecode-expectations-printer.cc",
      "interpreter/bytecode-expectations-printer.h",
      "interpreter/test-bytecode-generator.cc",
      "test-api.cc",
      "test-api.h",
    ]
  }

  if (v8_current_cpu == "arm") {
    sources += [  ### gcmole(arch:arm) ###
      "test-assembler-arm.cc",
      "test-code-stubs-arm.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-arm.cc",
      "test-macro-assembler-arm.cc",
      "test-run-wasm-relocation-arm.cc",
      "test-simulator-arm.cc",
    ]
  } else if (v8_current_cpu == "arm64") {
    sources += [  ### gcmole(arch:arm64) ###
      "test-assembler-arm64.cc",
      "test-code-stubs-arm64.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-arm64.cc",
      "test-fuzz-arm64.cc",
      "test-javascript-arm64.cc",
      "test-js-arm64-variables.cc",
      "test-run-wasm-relocation-arm64.cc",
      "test-simulator-arm64.cc",
      "test-utils-arm64.cc",
      "test-utils-arm64.h",
    ]
  } else if (v8_current_cpu == "x86") {
    sources += [  ### gcmole(arch:ia32) ###
      "test-assembler-ia32.cc",
      "test-code-stubs-ia32.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-ia32.cc",
      "test-log-stack-tracer.cc",
      "test-run-wasm-relocation-ia32.cc",
    ]
  } else if (v8_current_cpu == "mips") {
    sources += [  ### gcmole(arch:mips) ###
      "test-assembler-mips.cc",
      "test-code-stubs-mips.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-mips.cc",
      "test-macro-assembler-mips.cc",
    ]
  } else if (v8_current_cpu == "mipsel") {
    sources += [  ### gcmole(arch:mipsel) ###
      "test-assembler-mips.cc",
      "test-code-stubs-mips.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-mips.cc",
      "test-macro-assembler-mips.cc",
    ]
  } else if (v8_current_cpu == "mips64") {
    sources += [  ### gcmole(arch:mips64) ###
      "test-assembler-mips64.cc",
      "test-code-stubs-mips64.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-mips64.cc",
      "test-macro-assembler-mips64.cc",
    ]
  } else if (v8_current_cpu == "mips64el") {
    sources += [  ### gcmole(arch:mips64el) ###
      "test-assembler-mips64.cc",
      "test-code-stubs-mips64.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-mips64.cc",
      "test-macro-assembler-mips64.cc",
    ]
  } else if (v8_current_cpu == "x64") {
    sources += [  ### gcmole(arch:x64) ###
      "test-assembler-x64.cc",
      "test-code-stubs-x64.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-x64.cc",
      "test-log-stack-tracer.cc",
      "test-macro-assembler-x64.cc",
      "test-run-wasm-relocation-x64.cc",
    ]
  } else if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64") {
    sources += [  ### gcmole(arch:ppc) ###
      "test-assembler-ppc.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-ppc.cc",
    ]
  } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
    sources += [  ### gcmole(arch:s390) ###
      "test-assembler-s390.cc",
      "test-code-stubs.cc",
      "test-code-stubs.h",
      "test-disasm-s390.cc",
    ]
  }

  if (is_linux) {
    # TODO(machenbach): Translate 'or OS=="qnx"' from gyp.
    sources += [ "test-platform-linux.cc" ]
  } else if (is_win) {
    sources += [ "test-platform-win32.cc" ]
  }

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

  public_deps = [
    ":resources",
    "../..:v8_initializers",
    "../..:v8_libbase",
    "../..:v8_libplatform",
    "../..:wasm_module_runner",
    "//build/config:exe_and_shlib_deps",
    "//build/win:default_exe_manifest",
  ]

  defines = []
  deps = []

  if (is_component_build) {
    # cctest can't be built against a shared library, so we
    # need to depend on the underlying static target in that case.
    deps += [ "../..:v8_maybe_snapshot" ]
    defines += [ "BUILDING_V8_SHARED" ]
  } else {
    deps += [ "../..:v8" ]
  }

  if (v8_enable_i18n_support) {
    defines += [ "V8_INTL_SUPPORT" ]
  } else {
    sources -= [ "test-intl.cc" ]
  }

  cflags = []
  if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64" ||
      v8_current_cpu == "arm" || v8_current_cpu == "arm64" ||
      v8_current_cpu == "s390" || v8_current_cpu == "s390x" ||
      v8_current_cpu == "mips" || v8_current_cpu == "mips64" ||
      v8_current_cpu == "mipsel" || v8_current_cpu == "mipsel64") {
    # Disable fmadd/fmsub so that expected results match generated code in
    # RunFloat64MulAndFloat64Add1 and friends.
    cflags += [ "-ffp-contract=off" ]
  }

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

    # MSVS wants this for gay-{precision,shortest}.cc.
    cflags += [ "/bigobj" ]
  }
}

action("resources") {
  visibility = [ ":*" ]  # Only targets in this file can depend on this.

  script = "../../tools/js2c.py"

  # The script depends on this other script, this rule causes a rebuild if it
  # changes.
  inputs = [
    "../../tools/jsmin.py",
  ]

  # NOSORT
  sources = [
    "../../tools/splaytree.js",
    "../../tools/codemap.js",
    "../../tools/csvparser.js",
    "../../tools/consarray.js",
    "../../tools/profile.js",
    "../../tools/profile_view.js",
    "../../tools/logreader.js",
    "log-eq-of-logging-and-traversal.js",
  ]

  outputs = [
    "$target_gen_dir/resources.cc",
  ]

  args = [
    rebase_path("$target_gen_dir/resources.cc", root_build_dir),
    "TEST",
  ]
  args += rebase_path(sources, root_build_dir)
}

v8_executable("generate-bytecode-expectations") {
  sources = [
    "interpreter/bytecode-expectations-printer.cc",
    "interpreter/bytecode-expectations-printer.h",
    "interpreter/generate-bytecode-expectations.cc",
  ]

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

  deps = [
    "../..:v8",
    "../..:v8_libbase",
    "../..:v8_libplatform",
    "//build/config:exe_and_shlib_deps",
    "//build/win:default_exe_manifest",
  ]
}
