# This file is licensed under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception package(default_visibility = ["//visibility:public"]) licenses(["notice"]) exports_files(["LICENSE.TXT"]) # It may be tempting to add compiler flags here, but that should be avoided. # The necessary warnings and other compile flags should be provided by the # toolchain or the `.bazelrc` file. This is just a workaround until we have a # widely available feature to enable unlimited stack frame instead of using # this `Make` variable. llvm_copts = [ "$(STACK_FRAME_UNLIMITED)", ] # A hacky library to expose some internal headers of gtest to its own # implementation source files using a stripped include prefix rather than # file-relative-inclusion. # # FIXME: This file should be in `textual_hdrs` instead of `hdrs`, but # unfortunately that doesn't work with `strip_include_prefix`: # https://github.com/bazelbuild/bazel/issues/12424 # # For now, simply disable parsing and header modules. cc_library( name = "gtest_internal_headers", testonly = True, hdrs = ["googletest/src/gtest-internal-inl.h"], features = [ "-parse_headers", "-header_modules", ], strip_include_prefix = "googletest", ) cc_library( name = "gtest", testonly = True, srcs = glob( [ "googletest/include/**/*.h", "googletest/src/*.cc", ], exclude = [ "googletest/src/gtest-all.cc", "googletest/include/gtest/gtest_pred_impl.h", ], ) + [ ], hdrs = [ "googletest/include/gtest/internal/gtest-port.h", "googletest/include/gtest/gtest.h", "googletest/include/gtest/gtest-spi.h", ], copts = llvm_copts, defines = [ "GTEST_HAS_RTTI=0", "__STDC_LIMIT_MACROS", "__STDC_CONSTANT_MACROS", ] + select({ "@platforms//os:windows": ["GTEST_USE_OWN_TR1_TUPLE=0"], "//conditions:default": ["GTEST_USE_OWN_TR1_TUPLE=1"], }), includes = [ "googletest/include", "include", ], textual_hdrs = [ "googletest/include/gtest/gtest_pred_impl.h", ], deps = [ ":gtest_internal_headers", "//llvm:Support", ], ) cc_library( name = "gtest_main", testonly = True, srcs = ["UnitTestMain/TestMain.cpp"], copts = llvm_copts, deps = [ ":gmock", ":gtest", "//llvm:Support", ], ) cc_library( name = "gmock", testonly = True, srcs = glob( [ "googlemock/include/**/*.h", "googlemock/src/*.cc", ], exclude = ["googlemock/src/gmock-all.cc"], ), hdrs = [ "googlemock/include/gmock/gmock.h", "googlemock/include/gmock/gmock-matchers.h", ], copts = llvm_copts, includes = [ "googlemock/include", "include", ], deps = [":gtest"], )