# 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.

import("//build/fuchsia/sdk.gni")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

executable("gtest_unittest_api_test") {
  testonly = true
  sources = [
    "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 = [ "googlemock" ]
}

config("gmock_config") {
  include_dirs = [ "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",
  ]
}

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

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

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

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

executable("gmock_stress_test") {
  testonly = true
  sources = [
    "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",
  ]
}
