# Copyright 2015 The Chromium 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("//build/config/compiler/compiler.gni")
import("//build/config/features.gni")
import("//build/config/nacl/config.gni")
import("//components/nacl/features.gni")
import("//ppapi/native_client/nacl_test_data.gni")

group("nacl") {
  newlib = "//build/toolchain/nacl:clang_newlib_${target_cpu}"
  pnacl = "//build/toolchain/nacl:newlib_pnacl"
  data_deps = [
    ":exit_status_test($newlib)",
    ":exit_status_test($pnacl)",
    ":extension_validation_cache($newlib)",
    ":irt_exception_test($newlib)",
    ":irt_exception_test($pnacl)",
    ":irt_manifest_file($newlib)",
    ":pnacl_debug_url_test($pnacl)",
    ":pnacl_dyncode_syscall_disabled_test($pnacl)",
    ":pnacl_error_handling_test($pnacl)",
    ":pnacl_hw_eh_disabled_test($pnacl)",
    ":pnacl_mime_type_test($newlib)",
    ":pnacl_mime_type_test($pnacl)",
    ":pnacl_options_test($pnacl)",
    ":pnacl_url_loader_test($pnacl)",
    ":ppapi_bad_get_ppp_instance_crash($newlib)",
    ":ppapi_bad_no_ppp_instance($newlib)",
    ":ppapi_bad_ppp_initialize($newlib)",
    ":ppapi_bad_ppp_initialize_crash($newlib)",
    ":ppapi_bad_ppp_instance_didcreate($newlib)",
    ":ppapi_bad_ppp_instance_didcreate_crash($newlib)",
    ":ppapi_crash_in_callback($newlib)",
    ":ppapi_crash_in_callback($pnacl)",
    ":ppapi_crash_off_main_thread($newlib)",
    ":ppapi_crash_off_main_thread($pnacl)",
    ":ppapi_crash_ppapi_off_main_thread($newlib)",
    ":ppapi_crash_ppapi_off_main_thread($pnacl)",
    ":ppapi_crash_via_check_failure($newlib)",
    ":ppapi_crash_via_check_failure($pnacl)",
    ":ppapi_crash_via_exit_call($newlib)",
    ":ppapi_crash_via_exit_call($pnacl)",
    ":ppapi_extension_mime_handler($newlib)",
    ":ppapi_ppb_core($newlib)",
    ":ppapi_ppb_core($pnacl)",
    ":ppapi_ppb_instance($newlib)",
    ":ppapi_ppb_instance($pnacl)",
    ":ppapi_ppp_instance($newlib)",
    ":ppapi_ppp_instance($pnacl)",
    ":ppapi_progress_events($newlib)",
    ":ppapi_progress_events($pnacl)",
    ":shared_test_files($newlib)",
    ":shared_test_files($pnacl)",
    ":simple_test($newlib)",
    ":simple_test($pnacl)",
    ":sysconf_nprocessors_onln_test($newlib)",
    ":sysconf_nprocessors_onln_test($pnacl)",
  ]
  if (target_cpu != "arm") {
    data_deps += [ ":partly_invalid($newlib)" ]
  }
  if (target_cpu != "mipsel") {
    glibc = "//build/toolchain/nacl:glibc_${target_cpu}"
    data_deps += [
      ":exit_status_test($glibc)",
      ":extension_validation_cache($glibc)",
      ":irt_exception_test($glibc)",
      ":pnacl_mime_type_test($glibc)",
      ":ppapi_crash_in_callback($glibc)",
      ":ppapi_crash_off_main_thread($glibc)",
      ":ppapi_crash_ppapi_off_main_thread($glibc)",
      ":ppapi_crash_via_check_failure($glibc)",
      ":ppapi_crash_via_exit_call($glibc)",
      ":ppapi_ppb_core($glibc)",
      ":ppapi_ppb_instance($glibc)",
      ":ppapi_ppp_instance($glibc)",
      ":ppapi_progress_events($glibc)",
      ":shared_test_files($glibc)",
      ":simple_test($glibc)",
      ":sysconf_nprocessors_onln_test($glibc)",
    ]
  }
  if (is_linux && enable_nacl_nonsfi) {
    nonsfi = "//build/toolchain/nacl:newlib_pnacl_nonsfi"
    data_deps += [
      ":irt_exception_test($nonsfi)",
      ":irt_manifest_file($nonsfi)",
      ":shared_test_files($nonsfi)",
    ]
    if (is_clang) {
      data_deps += [ ":nonsfi_libc_free" ]
    }
  }
}

if (is_nacl) {
  copy("shared_test_files") {
    sources = [
      # TODO(ncbray) move into chrome/test/data/nacl when all tests are
      # converted.
      "//ppapi/native_client/tools/browser_tester/browserdata/nacltest.js",

      # Files that aren't associated with any particular executable.
      "bad/ppapi_bad.html",
      "bad/ppapi_bad.js",
      "bad/ppapi_bad_doesnotexist.nmf",
      "bad/ppapi_bad_magic.nmf",
      "bad/ppapi_bad_manifest_bad_files.nmf",
      "bad/ppapi_bad_manifest_nexe_arch.nmf",
      "bad/ppapi_bad_manifest_uses_nexes.nmf",
      "bad/ppapi_bad_native.html",
      "crash/ppapi_crash.js",
      "crash/ppapi_crash_in_callback.html",
      "crash/ppapi_crash_off_main_thread.html",
      "crash/ppapi_crash_ppapi_off_main_thread.html",
      "crash/ppapi_crash_via_check_failure.html",
      "crash/ppapi_crash_via_exit_call.html",
      "load_util.js",
      "manifest_file/test_file.txt",
      "progress_event_listener.js",
      "simple_cc.js",
    ]
    outputs = [
      "${root_build_dir}/nacl_test_data/${nacl_toolchain_variant}/{{source_file_part}}",
    ]
  }

  source_set("ppapi_test_lib") {
    sources = [
      "ppapi_test_lib/get_browser_interface.cc",
      "ppapi_test_lib/get_browser_interface.h",
      "ppapi_test_lib/internal_utils.cc",
      "ppapi_test_lib/internal_utils.h",
      "ppapi_test_lib/module_instance.cc",
      "ppapi_test_lib/test_interface.cc",
      "ppapi_test_lib/test_interface.h",
      "ppapi_test_lib/testable_callback.cc",
      "ppapi_test_lib/testable_callback.h",
    ]
    deps = [
      "//native_client/src/shared/gio",
      "//native_client/src/shared/platform",
      "//ppapi/native_client:ppapi_lib",
    ]
  }

  nacl_test_data("irt_manifest_file") {
    sources = [
      "manifest_file/irt_manifest_file_test.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    nmfflags = [
      "-xtest_file:test_file.txt",
      "-xnmf says hello world:test_file.txt",

      # There is no dummy_test_file.txt file intentionally. This is just for
      # a test case where there is a manifest entry, but no actual file.
      "-xdummy_test_file:dummy_test_file.txt",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "manifest_file/irt_manifest_file_test.html" ]
  }

  nacl_test_data("irt_exception_test") {
    sources = [
      "irt_exception/irt_exception_test.cc",
    ]
    deps = [
      ":ppapi_test_lib",
    ]
    libs = [ "nacl_exception" ]
    destination_dir = "nacl_test_data"
    test_files = [ "irt_exception/irt_exception_test.html" ]
  }
}

if (is_nacl && !is_nacl_nonsfi) {
  nacl_test_data("simple_test") {
    output_name = "simple"
    sources = [
      "simple.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "nacl_load_test.html" ]
  }

  nacl_test_data("exit_status_test") {
    output_name = "pm_exit_status_test"
    sources = [
      "exit_status/pm_exit_status_test.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "exit_status/pm_exit_status_test.html" ]
  }

  nacl_test_data("extension_validation_cache") {
    sources = [
      "simple.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]

    # Need a new directory to not clash with with other extension
    # tests's files (e.g., manifest.json).
    destination_dir = "nacl_test_data/extension_vcache_test"
    test_files = [
      # TODO(ncbray) move into chrome/test/data/nacl when all tests are
      # converted.
      "//ppapi/native_client/tools/browser_tester/browserdata/nacltest.js",
      "extension_validation_cache/extension_validation_cache.html",
      "extension_validation_cache/extension_validation_cache.js",

      # Turns the test data directory into an extension.
      # Use a different nexe_destination_dir to isolate the files.
      # Note that the .nexe names are embedded in this file.
      "extension_validation_cache/manifest.json",
      "load_util.js",
      "simple_cc.js",
    ]
  }

  nacl_test_data("sysconf_nprocessors_onln_test") {
    sources = [
      "sysconf_nprocessors_onln/sysconf_nprocessors_onln_test.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    destination_dir = "nacl_test_data"
    test_files =
        [ "sysconf_nprocessors_onln/sysconf_nprocessors_onln_test.html" ]
  }

  nacl_test_data("ppapi_progress_events") {
    sources = [
      "progress_events/ppapi_progress_events.cc",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "progress_events/ppapi_progress_events.html" ]
    deps = [
      ":ppapi_test_lib",
    ]
  }

  nacl_test_data("ppapi_bad_ppp_initialize") {
    sources = [
      "bad/ppapi_bad_ppp_initialize.cc",
    ]
    destination_dir = "nacl_test_data"
  }

  nacl_test_data("ppapi_bad_ppp_initialize_crash") {
    sources = [
      "bad/ppapi_bad_ppp_initialize_crash.cc",
    ]
    destination_dir = "nacl_test_data"
  }

  nacl_test_data("ppapi_bad_no_ppp_instance") {
    sources = [
      "bad/ppapi_bad_no_ppp_instance.cc",
    ]
    deps = [
      "//native_client/src/shared/platform",
    ]
    destination_dir = "nacl_test_data"
  }

  nacl_test_data("ppapi_bad_get_ppp_instance_crash") {
    sources = [
      "bad/ppapi_bad_get_ppp_instance_crash.cc",
    ]
    destination_dir = "nacl_test_data"
  }

  nacl_test_data("ppapi_bad_ppp_instance_didcreate") {
    sources = [
      "bad/ppapi_bad_ppp_instance_didcreate.cc",
    ]
    destination_dir = "nacl_test_data"
  }

  nacl_test_data("ppapi_bad_ppp_instance_didcreate_crash") {
    sources = [
      "bad/ppapi_bad_ppp_instance_didcreate_crash.cc",
    ]
    destination_dir = "nacl_test_data"
  }

  nacl_test_data("ppapi_crash_via_check_failure") {
    sources = [
      "crash/ppapi_crash_via_check_failure.cc",
    ]
    destination_dir = "nacl_test_data"
    deps = [
      ":ppapi_test_lib",
    ]
  }

  nacl_test_data("ppapi_crash_via_exit_call") {
    sources = [
      "crash/ppapi_crash_via_exit_call.cc",
    ]
    destination_dir = "nacl_test_data"
    deps = [
      ":ppapi_test_lib",
    ]
  }

  nacl_test_data("ppapi_crash_in_callback") {
    sources = [
      "crash/ppapi_crash_in_callback.cc",
    ]
    destination_dir = "nacl_test_data"
    deps = [
      ":ppapi_test_lib",
    ]
  }

  nacl_test_data("ppapi_crash_off_main_thread") {
    sources = [
      "crash/ppapi_crash_off_main_thread.cc",
    ]
    destination_dir = "nacl_test_data"
    deps = [
      ":ppapi_test_lib",
    ]
  }

  nacl_test_data("ppapi_crash_ppapi_off_main_thread") {
    sources = [
      "crash/ppapi_crash_ppapi_off_main_thread.cc",
    ]
    destination_dir = "nacl_test_data"
    deps = [
      ":ppapi_test_lib",
    ]
  }

  nacl_test_data("ppapi_extension_mime_handler") {
    sources = [
      "extension_mime_handler/ppapi_extension_mime_handler.cc",
    ]
    deps = [
      ":ppapi_test_lib",
    ]
    destination_dir = "nacl_test_data"
    test_files = [
      "extension_mime_handler/ppapi_extension_mime_handler.html",
      "extension_mime_handler/mime_test_data.dat",

      # For faking the file's MIME type.
      "extension_mime_handler/mime_test_data.dat.mock-http-headers",

      # Turns the test data directory into an extension.  Hackish.
      # Note that the .nexe names are embedded in this file.
      "extension_mime_handler/manifest.json",
    ]
  }

  nacl_test_data("pnacl_debug_url_test") {
    output_name = "pnacl_debug_url"
    sources = [
      "simple.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    generate_nmf = false
    if (current_cpu == "pnacl") {
      debug_pexe = true
    }
    destination_dir = "nacl_test_data"
    test_files = [
      "pnacl_debug_url/pnacl_debug_url.html",
      "pnacl_debug_url/pnacl_has_debug.nmf",
      "pnacl_debug_url/pnacl_has_debug_flag_off.nmf",
      "pnacl_debug_url/pnacl_no_debug.nmf",
    ]
  }

  nacl_test_data("pnacl_error_handling_test") {
    output_name = "pnacl_errors"
    sources = [
      "simple.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    generate_nmf = false
    if (current_cpu == "pnacl") {
      nonstable_pexe = true
    }
    destination_dir = "nacl_test_data"
    test_files = [
      "pnacl_error_handling/pnacl_error_handling.html",
      "pnacl_error_handling/bad.pexe",
      "pnacl_error_handling/pnacl_bad_pexe.nmf",
      "pnacl_error_handling/pnacl_bad_pexe_O0.nmf",
      "pnacl_error_handling/pnacl_bad_doesnotexist.nmf",
      "pnacl_error_handling/pnacl_illformed_manifest.nmf",
      "pnacl_error_handling/pnacl_nonfinal_pexe_O0.nmf",
    ]
  }

  copy("pnacl_mime_type_test") {
    sources = [
      "pnacl_mime_type/pnacl_mime_type.html",
    ]
    outputs = [
      "${root_build_dir}/nacl_test_data/${nacl_toolchain_variant}/{{source_file_part}}",
    ]
  }

  nacl_test_data("pnacl_options_test") {
    output_name = "pnacl_options"
    sources = [
      "simple.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    generate_nmf = false
    destination_dir = "nacl_test_data"
    test_files = [
      "pnacl_nmf_options/pnacl_options.html",
      "pnacl_nmf_options/pnacl_o_0.nmf",
      "pnacl_nmf_options/pnacl_o_2.nmf",
      "pnacl_nmf_options/pnacl_o_large.nmf",
    ]
  }

  nacl_test_data("pnacl_url_loader_test") {
    output_name = "pnacl_url_loader"
    sources = [
      "pnacl_url_loader/pnacl_url_loader.cc",
    ]
    deps = [
      "//ppapi/cpp",
    ]
    generate_nmf = true
    destination_dir = "nacl_test_data"
    test_files = [ "pnacl_url_loader/pnacl_url_loader.html" ]
  }

  nacl_test_data("pnacl_dyncode_syscall_disabled_test") {
    output_name = "pnacl_dyncode_syscall_disabled"
    sources = [
      "pnacl_dyncode_syscall_disabled/pnacl_dyncode_syscall_disabled.cc",
    ]
    deps = [
      ":ppapi_test_lib",
      "//native_client/src/untrusted/nacl:nacl_dyncode_private",
    ]
    destination_dir = "nacl_test_data"
    test_files =
        [ "pnacl_dyncode_syscall_disabled/pnacl_dyncode_syscall_disabled.html" ]
  }

  nacl_test_data("pnacl_hw_eh_disabled_test") {
    output_name = "pnacl_hw_eh_disabled"
    sources = [
      "pnacl_hw_eh_disabled/pnacl_hw_eh_disabled.cc",
    ]
    deps = [
      ":ppapi_test_lib",
      "//native_client/src/untrusted/nacl:nacl_exception_private",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "pnacl_hw_eh_disabled/pnacl_hw_eh_disabled.html" ]
  }

  # Legacy NaCl PPAPI interface tests being here.
  nacl_test_data("ppapi_ppb_core") {
    sources = [
      "ppapi/ppb_core/ppapi_ppb_core.cc",
    ]
    deps = [
      ":ppapi_test_lib",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "ppapi/ppb_core/ppapi_ppb_core.html" ]
  }

  nacl_test_data("ppapi_ppb_instance") {
    sources = [
      "ppapi/ppb_instance/ppapi_ppb_instance.cc",
    ]
    deps = [
      ":ppapi_test_lib",
    ]
    destination_dir = "nacl_test_data"
    test_files = [ "ppapi/ppb_instance/ppapi_ppb_instance.html" ]
  }

  nacl_test_data("ppapi_ppp_instance") {
    sources = [
      "ppapi/ppp_instance/ppapi_ppp_instance.cc",
    ]
    deps = [
      ":ppapi_test_lib",
    ]
    destination_dir = "nacl_test_data"
    test_files = [
      "ppapi/ppp_instance/ppapi_ppp_instance.html",
      "ppapi/ppp_instance/ppapi_ppp_instance.js",
    ]
  }

  if (target_cpu != "arm") {
    # Source file does not have asm for ARM.
    nacl_test_data("partly_invalid") {
      sources = [
        "//native_client/tests/stubout_mode/partly_invalid.c",
      ]
      destination_dir = "nacl_test_data"
    }
  }
}

if (is_linux && is_clang) {
  if (target_cpu == "x86") {
    arch = "x86_32"
  } else if (target_cpu == "x64") {
    arch = "x86_64"
  } else {
    arch = target_cpu
  }

  config("nonsfi_libc_free_nexe_config") {
    cflags = [
      "-Wno-sign-compare",

      # Stack-Smashing protector does not work with libc-free context.
      "-fno-stack-protector",

      # Optimizers may translate the original code to code which
      # requires builtin functions and/or relocations. Specifically,
      # the LLVM's optimizer translates for-loop based zero
      # clear to memset.
      "-O0",

      # ARM GCC emits symbols like __aeabi_unwind_cpp_pr0 in
      # .exidx sections without this flag.
      "-fno-unwind-tables",
    ]

    # Workaround against LLVM bug.
    # In short, an LTO optimization pass might recognize
    # naive implementations of builtins (such as memset)
    # and replace them with references to the real builtins,
    # which, in the case of -nostdlib, might cause the binary
    # to get undefined references to those symbols.
    #
    # See more details:
    # https://llvm.org/bugs/show_bug.cgi?id=30403
    if (use_thin_lto) {
      if (use_lld) {
        ldflags = [ "-Wl,--lto-O0" ]
      } else {
        ldflags = [ "-Wl,-plugin-opt,O0" ]
      }
    }
  }

  executable("nonsfi_libc_free_nexe") {
    output_name = "libc_free_$arch"
    output_extension = "nexe"
    sources = [
      "nonsfi/libc_free.c",
    ]

    no_default_deps = true

    # Here, we would like to link a relocatable, libc-free executable.
    # -shared/-fPIC make this binary relocatable. -nostdlib ensures
    # this is libc-free.
    # The program does not apply any dynamic relocations at start up,
    # so it cannot rely on relocations having been applied.
    # In addition, -fvisibility=hidden avoids creating some types
    # of relocation.
    cflags = [
      "-fPIC",
      "-fvisibility=hidden",
    ]
    ldflags = [
      "-nostdlib",
      "-shared",

      # This binary cannot relocate itself, so we should have no
      # undefined references left.
      "-Wl,--no-undefined",

      # Silence the warning about the unused '-pthread' argument.
      # TODO(gn): Come up with a way to remove the -pthread flag instead.
      "-Qunused-arguments",
    ]
    defines = [ "NACL_LINUX=1" ]
    include_dirs = [ "../../../.." ]

    # Do not use any sanitizers or coverage tools, which require a few symbols.
    configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
    configs -= [ "//build/config/coverage:default_coverage" ]
    configs += [ ":nonsfi_libc_free_nexe_config" ]
  }

  copy("nonsfi_libc_free") {
    sources = [
      "${root_out_dir}/libc_free_${arch}.nexe",

      # TODO(ncbray) move into chrome/test/data/nacl when all tests are
      # converted.
      "//ppapi/native_client/tools/browser_tester/browserdata/nacltest.js",
      "nonsfi/irt_test.html",
      "nonsfi/libc_free.html",
      "nonsfi/libc_free.nmf",
    ]
    outputs = [
      "${root_build_dir}/nacl_test_data/libc-free/{{source_file_part}}",
    ]
    deps = [
      ":nonsfi_libc_free_nexe",
    ]
  }
}
