diff --git a/c10/macros/BUILD.bazel b/c10/macros/BUILD.bazel index dc354d31f55b..d1a0db360d23 100644 --- a/c10/macros/BUILD.bazel +++ b/c10/macros/BUILD.bazel @@ -1,33 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load(":cmake_configure_file.bzl", "cmake_configure_file") +load("//:tools/bazel.bzl", "rules") +load(":build.bzl", "define_targets") -cc_library( - name = "macros", - srcs = [":cmake_macros_h"], - hdrs = [ - "Macros.h", - # Despite the documentation in Macros.h, Export.h is included - # directly by many downstream files. Thus, we declare it as a - # public header in this file. - "Export.h", - ], - linkstatic = True, - local_defines = ["C10_BUILD_MAIN_LIB"], - visibility = ["//visibility:public"], -) - -cmake_configure_file( - name = "cmake_macros_h", - src = "cmake_macros.h.in", - out = "cmake_macros.h", - definitions = [ - "C10_BUILD_SHARED_LIBS", - "C10_USE_MSVC_STATIC_RUNTIME", - ] + select({ - "//c10:using_gflags": ["C10_USE_GFLAGS"], - "//conditions:default": [], - }) + select({ - "//c10:using_glog": ["C10_USE_GLOG"], - "//conditions:default": [], - }), -) +define_targets(rules = rules) diff --git a/c10/macros/build.bzl b/c10/macros/build.bzl new file mode 100644 index 000000000000..932d0cabac4c --- /dev/null +++ b/c10/macros/build.bzl @@ -0,0 +1,31 @@ +def define_targets(rules): + rules.cc_library( + name = "macros", + srcs = [":cmake_macros_h"], + hdrs = [ + "Macros.h", + # Despite the documentation in Macros.h, Export.h is included + # directly by many downstream files. Thus, we declare it as a + # public header in this file. + "Export.h", + ], + linkstatic = True, + local_defines = ["C10_BUILD_MAIN_LIB"], + visibility = ["//visibility:public"], + ) + + rules.cmake_configure_file( + name = "cmake_macros_h", + src = "cmake_macros.h.in", + out = "cmake_macros.h", + definitions = [ + "C10_BUILD_SHARED_LIBS", + "C10_USE_MSVC_STATIC_RUNTIME", + ] + rules.select({ + "//c10:using_gflags": ["C10_USE_GFLAGS"], + "//conditions:default": [], + }) + rules.select({ + "//c10:using_glog": ["C10_USE_GLOG"], + "//conditions:default": [], + }), + ) diff --git a/tools/bazel.bzl b/tools/bazel.bzl new file mode 100644 index 000000000000..c7785f639690 --- /dev/null +++ b/tools/bazel.bzl @@ -0,0 +1,11 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") +load("//c10/macros:cmake_configure_file.bzl", "cmake_configure_file") + +# Rules implementation for the Bazel build system. Since the common +# build structure aims to replicate Bazel as much as possible, most of +# the rules simply forward to the Bazel definitions. +rules = struct( + cc_library = cc_library, + cmake_configure_file = cmake_configure_file, + select = select, +)