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

if (is_fuchsia) {
  import("//build/fuchsia/sdk.gni")
}

config("gtest_private_config") {
  visibility = [ ":*" ]
  include_dirs = [ "src/googletest" ]
}

config("gtest_config") {
  include_dirs = [ "src/googletest/include" ]

  # Suppress warnings from upstream code that happen in Fuchsia build
  cflags = [ "-Wno-conversion" ]
}

static_library("gtest") {
  testonly = true
  public = [
    "src/googletest/include/gtest/gtest-spi.h",
    "src/googletest/include/gtest/gtest.h",
  ]
  sources = [
    "src/googletest/include/gtest/gtest-death-test.h",
    "src/googletest/include/gtest/gtest-message.h",
    "src/googletest/include/gtest/gtest-param-test.h",
    "src/googletest/include/gtest/gtest-printers.h",
    "src/googletest/include/gtest/gtest-test-part.h",
    "src/googletest/include/gtest/gtest-typed-test.h",
    "src/googletest/include/gtest/gtest_pred_impl.h",
    "src/googletest/include/gtest/gtest_prod.h",
    "src/googletest/include/gtest/internal/custom/gtest-port.h",
    "src/googletest/include/gtest/internal/custom/gtest-printers.h",
    "src/googletest/include/gtest/internal/custom/gtest.h",
    "src/googletest/include/gtest/internal/gtest-death-test-internal.h",
    "src/googletest/include/gtest/internal/gtest-filepath.h",
    "src/googletest/include/gtest/internal/gtest-internal.h",
    "src/googletest/include/gtest/internal/gtest-linked_ptr.h",
    "src/googletest/include/gtest/internal/gtest-param-util-generated.h",
    "src/googletest/include/gtest/internal/gtest-param-util.h",
    "src/googletest/include/gtest/internal/gtest-port-arch.h",
    "src/googletest/include/gtest/internal/gtest-port.h",
    "src/googletest/include/gtest/internal/gtest-string.h",
    "src/googletest/include/gtest/internal/gtest-tuple.h",
    "src/googletest/include/gtest/internal/gtest-type-util.h",
    "src/googletest/src/gtest-all.cc",
    "src/googletest/src/gtest-death-test.cc",
    "src/googletest/src/gtest-filepath.cc",
    "src/googletest/src/gtest-internal-inl.h",
    "src/googletest/src/gtest-matchers.cc",
    "src/googletest/src/gtest-port.cc",
    "src/googletest/src/gtest-printers.cc",
    "src/googletest/src/gtest-test-part.cc",
    "src/googletest/src/gtest-typed-test.cc",
    "src/googletest/src/gtest.cc",
  ]
  sources -= [ "src/googletest/src/gtest-all.cc" ]
  public_configs = [ ":gtest_config" ]
  configs += [ ":gtest_private_config" ]

  # Avoid failure when subtracting if not already present.
  configs += [ "//build/config:no_rtti" ]
  configs -= [ "//build/config:no_rtti" ]

  if (is_fuchsia) {
    if (using_fuchsia_sdk) {
      deps = [
        "$fuchsia_sdk_root/pkg:fdio",
        "$fuchsia_sdk_root/pkg:zx",
      ]
    } else {
      deps = [
        "//sdk/lib/fdio",
        "//zircon/public/lib/zx",
      ]
    }
  }
}

# Library that defines the FRIEND_TEST macro.
source_set("gtest_prod") {
  testonly = false
  public = [ "src/googletest/include/gtest/gtest_prod.h" ]
  public_configs = [ ":gtest_config" ]
}

static_library("gtest_main") {
  testonly = true
  sources = [ "src/googletest/src/gtest_main.cc" ]
  public_deps = [ ":gtest" ]
}

executable("gtest_all_test") {
  testonly = true
  sources = [
    "src/googletest/test/gtest-death-test_test.cc",
    "src/googletest/test/gtest-filepath_test.cc",
    "src/googletest/test/gtest-linked_ptr_test.cc",
    "src/googletest/test/gtest-message_test.cc",
    "src/googletest/test/gtest-options_test.cc",
    "src/googletest/test/gtest-port_test.cc",
    "src/googletest/test/gtest-printers_test.cc",
    "src/googletest/test/gtest-test-part_test.cc",
    "src/googletest/test/gtest-typed-test2_test.cc",
    "src/googletest/test/gtest-typed-test_test.cc",
    "src/googletest/test/gtest-typed-test_test.h",
    "src/googletest/test/gtest_main_unittest.cc",
    "src/googletest/test/gtest_pred_impl_unittest.cc",
    "src/googletest/test/gtest_prod_test.cc",
    "src/googletest/test/gtest_unittest.cc",
    "src/googletest/test/production.cc",
    "src/googletest/test/production.h",
  ]
  configs += [ ":gtest_private_config" ]
  deps = [
    ":gtest",
    ":gtest_main",
  ]
}

executable("gtest_environment_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_environment_test.cc" ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_listener_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest-listener_test.cc" ]
  deps = [ ":gtest" ]
}

executable("gtest_no_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_no_test_unittest.cc" ]
  deps = [ ":gtest" ]
}

executable("gtest_param_test") {
  testonly = true
  sources = [
    "src/googletest/test/gtest-param-test2_test.cc",
    "src/googletest/test/gtest-param-test_test.cc",
    "src/googletest/test/gtest-param-test_test.h",
  ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_premature_exit_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_premature_exit_test.cc" ]
  deps = [ ":gtest" ]
}

executable("gtest_repeat_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_repeat_test.cc" ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_sole_header_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_sole_header_test.cc" ]
  deps = [
    ":gtest",
    ":gtest_main",
  ]
}

executable("gtest_stress_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest_stress_test.cc" ]
  configs += [ ":gtest_private_config" ]
  deps = [ ":gtest" ]
}

executable("gtest_unittest_api_test") {
  testonly = true
  sources = [ "src/googletest/test/gtest-unittest-api_test.cc" ]
  deps = [ ":gtest" ]
}

group("gtest_all_tests") {
  testonly = true
  deps = [
    ":gtest_all_test",
    ":gtest_environment_test",
    ":gtest_listener_test",
    ":gtest_no_test",
    ":gtest_param_test",
    ":gtest_premature_exit_test",
    ":gtest_repeat_test",
    ":gtest_sole_header_test",
    ":gtest_stress_test",
    ":gtest_unittest_api_test",
  ]
}

config("gmock_private_config") {
  visibility = [ ":*" ]
  include_dirs = [ "src/googlemock" ]
}

config("gmock_config") {
  include_dirs = [ "src/googlemock/include" ]

  cflags_cc = [
    # The MOCK_METHODn() macros do not specify "override", which triggers this
    # warning in users: "error: 'Method' overrides a member function but is not
    # marked 'override' [-Werror,-Winconsistent-missing-override]". Suppress
    # these warnings until https://github.com/google/googletest/issues/533 is
    # fixed.
    "-Wno-inconsistent-missing-override",
  ]

  # Suppress warnings from upstream code that happen in Fuchsia build
  cflags = [ "-Wno-conversion" ]
}

static_library("gmock") {
  testonly = true
  public = [ "src/googlemock/include/gmock/gmock.h" ]
  sources = [
    "src/googlemock/include/gmock/gmock-actions.h",
    "src/googlemock/include/gmock/gmock-cardinalities.h",
    "src/googlemock/include/gmock/gmock-generated-actions.h",
    "src/googlemock/include/gmock/gmock-generated-function-mockers.h",
    "src/googlemock/include/gmock/gmock-generated-matchers.h",
    "src/googlemock/include/gmock/gmock-generated-nice-strict.h",
    "src/googlemock/include/gmock/gmock-matchers.h",
    "src/googlemock/include/gmock/gmock-more-actions.h",
    "src/googlemock/include/gmock/gmock-more-matchers.h",
    "src/googlemock/include/gmock/gmock-spec-builders.h",
    "src/googlemock/include/gmock/internal/custom/gmock-generated-actions.h",
    "src/googlemock/include/gmock/internal/custom/gmock-matchers.h",
    "src/googlemock/include/gmock/internal/custom/gmock-port.h",
    "src/googlemock/include/gmock/internal/gmock-generated-internal-utils.h",
    "src/googlemock/include/gmock/internal/gmock-internal-utils.h",
    "src/googlemock/include/gmock/internal/gmock-port.h",
    "src/googlemock/src/gmock-all.cc",
    "src/googlemock/src/gmock-cardinalities.cc",
    "src/googlemock/src/gmock-internal-utils.cc",
    "src/googlemock/src/gmock-matchers.cc",
    "src/googlemock/src/gmock-spec-builders.cc",
    "src/googlemock/src/gmock.cc",
  ]
  sources -= [ "src/googlemock/src/gmock-all.cc" ]
  public_configs = [ ":gmock_config" ]
  configs += [ ":gmock_private_config" ]
  deps = [ ":gtest" ]
}

static_library("gmock_main") {
  testonly = true
  sources = [ "src/googlemock/src/gmock_main.cc" ]
  public_deps = [
    ":gmock",
    ":gtest",
  ]
}

executable("gmock_all_test") {
  testonly = true
  sources = [
    "src/googlemock/test/gmock-actions_test.cc",
    "src/googlemock/test/gmock-cardinalities_test.cc",
    "src/googlemock/test/gmock-generated-actions_test.cc",
    "src/googlemock/test/gmock-generated-function-mockers_test.cc",
    "src/googlemock/test/gmock-generated-internal-utils_test.cc",
    "src/googlemock/test/gmock-generated-matchers_test.cc",
    "src/googlemock/test/gmock-internal-utils_test.cc",
    "src/googlemock/test/gmock-matchers_test.cc",
    "src/googlemock/test/gmock-more-actions_test.cc",
    "src/googlemock/test/gmock-nice-strict_test.cc",
    "src/googlemock/test/gmock-port_test.cc",
    "src/googlemock/test/gmock-spec-builders_test.cc",
    "src/googlemock/test/gmock_test.cc",
  ]
  configs += [
    ":gmock_private_config",
    ":gtest_private_config",
  ]
  deps = [
    ":gmock",
    ":gmock_main",
    ":gtest",
  ]
}

executable("gmock_link_test") {
  testonly = true
  sources = [
    "src/googlemock/test/gmock_link2_test.cc",
    "src/googlemock/test/gmock_link_test.cc",
    "src/googlemock/test/gmock_link_test.h",
  ]
  configs += [ ":gmock_private_config" ]
  deps = [
    ":gmock",
    ":gmock_main",
    ":gtest",
  ]
}

executable("gmock_stress_test") {
  testonly = true
  sources = [ "src/googlemock/test/gmock_stress_test.cc" ]
  configs += [ ":gmock_private_config" ]
  deps = [
    ":gmock",
    ":gtest",
  ]
}

group("gmock_all_tests") {
  testonly = true
  deps = [
    ":gmock_all_test",
    ":gmock_link_test",
    ":gmock_stress_test",
  ]
}
