Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,20 @@ bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "platforms", version = "0.0.10")
bazel_dep(name = "protobuf", version = "27.0", repo_name = "com_google_protobuf")

bazel_dep(name = "apple_support", version = "2.3.0", dev_dependency = True)

apple_cc_configure = use_extension(
"@apple_support//crosstool:setup.bzl",
"apple_cc_configure_extension",
dev_dependency = True,
)
use_repo(apple_cc_configure, "local_config_apple_cc_toolchains")

register_toolchains(
"@local_config_apple_cc_toolchains//:all",
dev_dependency = True,
)

cc_configure = use_extension("//cc:extensions.bzl", "cc_configure_extension")
use_repo(cc_configure, "local_config_cc", "local_config_cc_toolchains")

Expand Down
24 changes: 23 additions & 1 deletion cc/private/rules_impl/objc_library.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,32 @@ def _objc_library_impl(ctx):
metadata_files = gcno_files + pic_gcno_files,
)

runfiles_list = []
for data_dep in ctx.attr.data:
if data_dep[DefaultInfo].data_runfiles.files:
runfiles_list.append(data_dep[DefaultInfo].data_runfiles)
else:
# This branch ensures interop with custom Starlark rules following
# https://bazel.build/extending/rules#runfiles_features_to_avoid
runfiles_list.append(ctx.runfiles(transitive_files = data_dep[DefaultInfo].files))
runfiles_list.append(data_dep[DefaultInfo].default_runfiles)

for src in ctx.attr.srcs:
runfiles_list.append(src[DefaultInfo].default_runfiles)

for dep in ctx.attr.deps:
runfiles_list.append(dep[DefaultInfo].default_runfiles)

for dep in ctx.attr.implementation_deps:
runfiles_list.append(dep[DefaultInfo].default_runfiles)

runfiles = ctx.runfiles(files = files).merge_all(runfiles_list)

return [
DefaultInfo(
files = depset(files),
data_runfiles = ctx.runfiles(files = files),
default_runfiles = runfiles,
data_runfiles = runfiles,
),
CcInfo(
compilation_context = compilation_context,
Expand Down
3 changes: 3 additions & 0 deletions tests/cc/common/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
load(":cc_binary_configured_target_tests.bzl", "cc_binary_configured_target_tests")
load(":cc_objc_library_configured_target_tests.bzl", "cc_objc_library_configured_target_tests")

cc_binary_configured_target_tests(name = "cc_binary_configured_target_tests")

cc_objc_library_configured_target_tests(name = "cc_objc_library_configured_target_tests")
37 changes: 37 additions & 0 deletions tests/cc/common/cc_objc_library_configured_target_tests.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"""Tests for objc_library."""

load("@bazel_features//private:util.bzl", _bazel_version_ge = "ge")
load("@rules_testing//lib:truth.bzl", "matching")
load("@rules_testing//lib:util.bzl", "util")
load("//cc:objc_library.bzl", "objc_library")
load("//tests/cc/testutil:cc_analysis_test.bzl", "cc_analysis_test", "cc_test_suite")

_use_rules_cc_impls = _bazel_version_ge("9.0.0-pre.20250911")

def _test_data_in_runfiles(name, **kwargs):
util.helper_target(
objc_library,
name = name + "_lib_with_data",
hdrs = ["header.h"],
data = ["data_file.txt"],
target_compatible_with = ["@platforms//os:macos"],
)
cc_analysis_test(
name = name,
impl = _test_data_in_runfiles_impl,
target = name + "_lib_with_data",
**kwargs
)

def _test_data_in_runfiles_impl(env, target):
target = env.expect.that_target(target)
target.runfiles().contains_predicate(matching.str_endswith("/data_file.txt"))
target.data_runfiles().contains_predicate(matching.str_endswith("/data_file.txt"))

def cc_objc_library_configured_target_tests(name):
cc_test_suite(
name = name,
tests = [
_test_data_in_runfiles,
] if _use_rules_cc_impls else [],
)
1 change: 1 addition & 0 deletions tests/cc/common/data_file.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test data
1 change: 1 addition & 0 deletions tests/cc/common/header.h
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// Empty header for testing.