bazel: Limit define scope to specific cc targets (see #3757)

- Add `declare_[cc|objc]_library` macros to configure common `copts`
  and `local_defines` (where supported) on `[cc|objc]_library`
  targets. This limits the scope of defines to the specific target
  without inheritance by dependent targets.
- `objc_library` does not currently support `local_defines` so we
  use `copts` instead of MacOS.
- Use `**kwargs` to pass all other arguments to the actual cc
  target declaration.
This commit is contained in:
Marshall Greenblatt
2024-08-06 11:57:15 -04:00
parent 166eec85e0
commit 9e9ba2c543
9 changed files with 149 additions and 104 deletions

View File

@@ -9,33 +9,16 @@ package(default_visibility = [
load("@bazel_skylib//lib:selects.bzl", "selects")
load("@build_bazel_rules_apple//apple:apple.bzl", "apple_dynamic_framework_import")
load("//bazel:library_helpers.bzl", "declare_cc_library", "declare_objc_library")
load("//bazel/win:variables.bzl",
WIN_DLLS="DLLS",
WIN_DLLS_X64="DLLS_X64",
WIN_SANDBOX_LIBS="SANDBOX_LIBS",
WIN_COMMON_COPTS="COMMON_COPTS",
WIN_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
WIN_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
WIN_COMMON_DEFINES="COMMON_DEFINES",
WIN_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
WIN_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
WIN_SANDBOX_LIBS="SANDBOX_LIBS")
load("//bazel/linux:variables.bzl",
LINUX_SOS="SOS",
LINUX_COMMON_COPTS="COMMON_COPTS",
LINUX_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
LINUX_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
LINUX_COMMON_DEFINES="COMMON_DEFINES",
LINUX_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
LINUX_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
LINUX_SOS="SOS")
load("//bazel/mac:variables.bzl",
"CEF_FRAMEWORK_NAME",
MAC_COMMON_COPTS="COMMON_COPTS",
MAC_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
MAC_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
MAC_COMMON_DEFINES="COMMON_DEFINES",
MAC_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
MAC_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
load("@rules_cc//cc:defs.bzl", "cc_import", "cc_library", "objc_library")
"CEF_FRAMEWORK_NAME")
load("@rules_cc//cc:defs.bzl", "cc_import")
#
# Define supported configurations.
@@ -124,7 +107,7 @@ selects.config_setting_group(
# Public headers for cef_wrapper here.
# Seperated from the actual cef_wrapper since the *.mm file needs access to these as well.
cc_library(
declare_cc_library(
name = "cef_wrapper_headers",
hdrs = glob(
[
@@ -137,7 +120,7 @@ cc_library(
),
)
objc_library(
declare_objc_library(
name = "cef_wrapper_apple",
srcs = [
"libcef_dll/wrapper/cef_library_loader_mac.mm",
@@ -145,7 +128,7 @@ objc_library(
implementation_deps = [":cef_wrapper_headers"],
)
cc_library(
declare_cc_library(
name = "cef_wrapper",
srcs = glob(
[
@@ -159,42 +142,9 @@ cc_library(
"include/test/*.h",
],
),
copts = select({
"@platforms//os:windows": WIN_COMMON_COPTS,
"@platforms//os:linux": LINUX_COMMON_COPTS,
"@platforms//os:macos": MAC_COMMON_COPTS,
"//conditions:default": None,
}) + select({
"@cef//:windows_opt": WIN_COMMON_COPTS_RELEASE,
"@cef//:windows_dbg": WIN_COMMON_COPTS_DEBUG,
"@cef//:windows_fastbuild": WIN_COMMON_COPTS_RELEASE,
"@cef//:linux_opt": LINUX_COMMON_COPTS_RELEASE,
"@cef//:linux_dbg": LINUX_COMMON_COPTS_DEBUG,
"@cef//:linux_fastbuild": LINUX_COMMON_COPTS_RELEASE,
"@cef//:macos_opt": MAC_COMMON_COPTS_RELEASE,
"@cef//:macos_dbg": MAC_COMMON_COPTS_DEBUG,
"@cef//:macos_fastbuild": MAC_COMMON_COPTS_RELEASE,
"//conditions:default": None,
}),
defines = [
"WRAPPING_CEF_SHARED",
] + select({
"@platforms//os:windows": WIN_COMMON_DEFINES,
"@platforms//os:linux": LINUX_COMMON_DEFINES,
"@platforms//os:macos": MAC_COMMON_DEFINES,
"//conditions:default": None,
}) + select({
"@cef//:windows_opt": WIN_COMMON_DEFINES_RELEASE,
"@cef//:windows_dbg": WIN_COMMON_DEFINES_DEBUG,
"@cef//:windows_fastbuild": WIN_COMMON_DEFINES_RELEASE,
"@cef//:linux_opt": LINUX_COMMON_DEFINES_RELEASE,
"@cef//:linux_dbg": LINUX_COMMON_DEFINES_DEBUG,
"@cef//:linux_fastbuild": LINUX_COMMON_DEFINES_RELEASE,
"@cef//:macos_opt": MAC_COMMON_DEFINES_RELEASE,
"@cef//:macos_dbg": MAC_COMMON_DEFINES_DEBUG,
"@cef//:macos_fastbuild": MAC_COMMON_DEFINES_RELEASE,
"//conditions:default": None,
}),
],
deps = [":cef_wrapper_headers"] +
select({
"@platforms//os:macos": [":cef_wrapper_apple"],
@@ -206,7 +156,7 @@ cc_library(
)
# Only available on MacOS/Windows.
cc_library(
declare_cc_library(
name = "cef_sandbox_linkflags",
linkopts = select({
"@platforms//os:macos": ["-lsandbox"],

View File

@@ -10,7 +10,8 @@ package(default_visibility = [
":__subpackages__",
])
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
load("//bazel:library_helpers.bzl", "declare_cc_library", "declare_objc_library")
load("@rules_cc//cc:defs.bzl", "cc_library")
#
# Source file lists.
@@ -53,7 +54,7 @@ filegroup(
# MacOS targets.
#
objc_library(
declare_objc_library(
name = "BrowserLibMac",
srcs = srcs_common + srcs_browser + srcs_browser_mac,
target_compatible_with = [
@@ -65,7 +66,7 @@ objc_library(
],
)
objc_library(
declare_objc_library(
name = "RendererLibMac",
srcs = srcs_common + srcs_renderer,
target_compatible_with = [

View File

@@ -10,7 +10,8 @@ package(default_visibility = [
":__subpackages__",
])
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
load("//bazel:library_helpers.bzl", "declare_cc_library", "declare_objc_library")
load("@rules_cc//cc:defs.bzl", "cc_library")
#
# Source file lists.
@@ -40,7 +41,7 @@ srcs_renderer_mac = [
# MacOS targets.
#
objc_library(
declare_objc_library(
name = "BrowserLibMac",
srcs = srcs_browser + srcs_browser_mac,
target_compatible_with = [
@@ -51,7 +52,7 @@ objc_library(
],
)
cc_library(
declare_cc_library(
name = "RendererLibMac",
srcs = srcs_renderer_mac,
target_compatible_with = [

View File

@@ -10,7 +10,8 @@ package(default_visibility = [
":__subpackages__",
])
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
load("//bazel:library_helpers.bzl", "declare_cc_library", "declare_objc_library")
load("@rules_cc//cc:defs.bzl", "cc_library")
#
# Source file lists.
@@ -51,7 +52,7 @@ filegroup(
srcs = ["resources/net"],
)
objc_library(
declare_objc_library(
name = "BrowserLibMac",
srcs = srcs_browser + srcs_browser_mac,
target_compatible_with = [
@@ -64,7 +65,7 @@ objc_library(
],
)
objc_library(
declare_objc_library(
name = "RendererLibMac",
srcs = srcs_renderer_mac,
target_compatible_with = [

View File

@@ -2,7 +2,8 @@
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
load("//bazel:library_helpers.bzl", "declare_cc_library", "declare_objc_library")
load("@rules_cc//cc:defs.bzl", "cc_library")
# Allow access from all //tests packages.
package(default_visibility = [
@@ -62,7 +63,7 @@ filegroup(
# MacOS targets.
#
objc_library(
declare_objc_library(
name = "BrowserLibMac",
srcs = srcs_common + srcs_browser + srcs_browser_mac,
target_compatible_with = [
@@ -73,7 +74,7 @@ objc_library(
],
)
cc_library(
declare_cc_library(
name = "RendererLibMac",
srcs = srcs_common + srcs_renderer + srcs_renderer_mac,
target_compatible_with = [
@@ -89,7 +90,7 @@ cc_library(
# Needs to be defined here because Bazel disallows direct access to files
# outside of the package directory.
objc_library(
declare_objc_library(
name = "BrowserLibMacCefTests",
srcs = srcs_browser_mac_ceftests,
target_compatible_with = [
@@ -101,7 +102,7 @@ objc_library(
],
)
objc_library(
declare_objc_library(
name = "RendererLibMacCefTests",
srcs = srcs_renderer_mac_ceftests,
target_compatible_with = [