| package(default_visibility = ["//visibility:private"]) |
| |
| filegroup( |
| name = "srcs", |
| srcs = glob( |
| ["**"], |
| exclude = [ |
| ".*", |
| "*~", |
| ], |
| ), |
| visibility = ["//tools/cpp:__pkg__"], |
| ) |
| |
| filegroup( |
| name = "embedded_tools", |
| srcs = [ |
| "BUILD.tools", |
| ":srcs_for_embedded_tools", |
| ], |
| visibility = ["//tools/cpp:__pkg__"], |
| ) |
| |
| # Rewrite the include path for runfiles.h in runfiles_src.cc, and create |
| # "generated_runfiles.{h,cc}". These files are renamed to "runfiles.{h,cc}" as |
| # part of creating the embedded tools of Bazel. |
| # |
| # We cannot just check in runfiles_src.{h,cc} as runfiles.{h,cc}, because it'd |
| # cause a header check failure on Windows when building targets in the Bazel |
| # source tree, if those targets depend on @bazel_tools//tools/cpp/runfiles, |
| # because due to lack of sandboxing they would accidentally pick up runfiles.h |
| # from //tools/cpp/runfiles. |
| genrule( |
| name = "srcs_for_embedded_tools", |
| srcs = [ |
| "runfiles_src.cc", |
| "runfiles_src.h", |
| ], |
| outs = [ |
| "generated_runfiles.cc", |
| "generated_runfiles.h", |
| ], |
| # Keep this transformation logic in sync with the |
| # //scripts/bootstrap/compile.sh |
| cmd = ("sed " + |
| " 's|^#include.*/runfiles_src.h.*|#include \"tools/cpp/runfiles/runfiles.h\"|' " + |
| " $(location runfiles_src.cc) > $(location generated_runfiles.cc) && " + |
| "cp $(location runfiles_src.h) $(location generated_runfiles.h)"), |
| ) |
| |
| cc_library( |
| name = "runfiles", |
| testonly = 1, |
| srcs = ["runfiles_src.cc"], |
| hdrs = ["runfiles_src.h"], |
| ) |
| |
| cc_test( |
| name = "runfiles_test", |
| srcs = ["runfiles_test.cc"], |
| visibility = ["//visibility:public"], |
| deps = [ |
| ":runfiles", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |