From 78e1f9db342c63055d2efca2bc1665ee9e215fde Mon Sep 17 00:00:00 2001 From: Michael Dagitses Date: Wed, 19 Jan 2022 12:48:21 -0800 Subject: [PATCH] port //c10/macros to common build structure (#70852) Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/70852 This is the first change that uses a common build file, build.bzl, to hold most of the build logic. ghstack-source-id: 147170895 Test Plan: Relying on internal and external CI. Reviewed By: malfet Differential Revision: D33299331 fbshipit-source-id: a66afffba6deec76b758dfb39bdf61d747b5bd99 (cherry picked from commit d9163c56f55cfc97c20f5a6d505474d5b8839201) --- c10/macros/BUILD.bazel | 35 +++-------------------------------- c10/macros/build.bzl | 31 +++++++++++++++++++++++++++++++ tools/bazel.bzl | 11 +++++++++++ 3 files changed, 45 insertions(+), 32 deletions(-) create mode 100644 c10/macros/build.bzl create mode 100644 tools/bazel.bzl 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, +)