# 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",
      ]
    }
  }
}

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

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