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
72 changes: 42 additions & 30 deletions examples/make_simple/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,34 +1,46 @@
load("@rules_cc//cc:defs.bzl", "cc_test")
load("@rules_foreign_cc//foreign_cc:defs.bzl", "make")

make(
name = "make_lib",
build_data = [
"//make_simple/code:cxx_wrapper.sh",
"README.md",
],
copts = [
"-DREQUIRED_DEFINE",
],
env = {
"CXX_WRAPPER": "$(execpath //make_simple/code:cxx_wrapper.sh)",
"README_DIR": "$$(dirname $(execpath README.md))",
},
lib_source = "//make_simple/code:srcs",
out_data_dirs = ["share"],
out_static_libs = ["liba.a"],
)
SIZES = [
"default",
"tiny",
]

cc_test(
name = "test_lib",
srcs = [
"test_libb.cpp",
],
copts = [
"-std=c++11",
],
tags = ["windows"],
deps = [
":make_lib",
],
)
[
make(
name = "make_lib_" + size,
build_data = [
"//make_simple/code:cxx_wrapper.sh",
"README.md",
],
copts = [
"-DREQUIRED_DEFINE",
],
env = {
"CXX_WRAPPER": "$(execpath //make_simple/code:cxx_wrapper.sh)",
"README_DIR": "$$(dirname $(execpath README.md))",
},
lib_source = "//make_simple/code:srcs",
out_data_dirs = ["share"],
out_static_libs = ["liba.a"],
resource_size = size,
)
for size in SIZES
]

[
cc_test(
name = "test_lib_" + size,
srcs = [
"test_libb.cpp",
],
copts = [
"-std=c++11",
],
tags = ["windows"],
deps = [
":make_lib_" + size,
],
)
for size in SIZES
]
62 changes: 37 additions & 25 deletions examples/meson_simple/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,44 @@ load("@rules_cc//cc:defs.bzl", "cc_test")
load("@rules_foreign_cc//foreign_cc:defs.bzl", "meson")
load("@rules_shell//shell:sh_test.bzl", "sh_test")

meson(
name = "meson_lib",
build_data = ["//meson_simple/code:clang_wrapper.sh"],
env = select({
"//:windows": {
"CLANG_WRAPPER": "$(execpath //meson_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "/MD",
},
"//conditions:default": {
"CLANG_WRAPPER": "$(execpath //meson_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "-fPIC",
},
}),
lib_source = "//meson_simple/code:srcs",
out_static_libs = ["liba.a"],
)
SIZES = [
"default",
"tiny",
]

cc_test(
name = "test_lib",
srcs = [
"test_libb.cpp",
],
deps = [
":meson_lib",
],
)
[
meson(
name = "meson_lib_" + size,
build_data = ["//meson_simple/code:clang_wrapper.sh"],
env = select({
"//:windows": {
"CLANG_WRAPPER": "$(execpath //meson_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "/MD",
},
"//conditions:default": {
"CLANG_WRAPPER": "$(execpath //meson_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "-fPIC",
},
}),
lib_source = "//meson_simple/code:srcs",
out_static_libs = ["liba.a"],
resource_size = size,
)
for size in SIZES
]

[
cc_test(
name = "test_lib_" + size,
srcs = [
"test_libb.cpp",
],
deps = [
":meson_lib_" + size,
],
)
for size in SIZES
]

meson(
name = "meson_lib-introspect",
Expand Down
70 changes: 41 additions & 29 deletions examples/ninja_simple/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,33 +1,45 @@
load("@rules_cc//cc:defs.bzl", "cc_test")
load("@rules_foreign_cc//foreign_cc:defs.bzl", "ninja")

ninja(
name = "ninja_lib",
build_data = ["//ninja_simple/code:clang_wrapper.sh"],
env = select({
"//:windows": {
"CLANG_WRAPPER": "$(execpath //ninja_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "/MD",
},
"//conditions:default": {
"CLANG_WRAPPER": "$(execpath //ninja_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "-fPIC",
},
}),
lib_source = "//ninja_simple/code:srcs",
out_static_libs = ["liba.a"],
targets = [
"",
"install",
],
)
SIZES = [
"default",
"tiny",
]

cc_test(
name = "test_lib",
srcs = [
"test_libb.cpp",
],
deps = [
":ninja_lib",
],
)
[
ninja(
name = "ninja_lib_" + size,
build_data = ["//ninja_simple/code:clang_wrapper.sh"],
env = select({
"//:windows": {
"CLANG_WRAPPER": "$(execpath //ninja_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "/MD",
},
"//conditions:default": {
"CLANG_WRAPPER": "$(execpath //ninja_simple/code:clang_wrapper.sh)",
"CXX_FLAGS": "-fPIC",
},
}),
lib_source = "//ninja_simple/code:srcs",
out_static_libs = ["liba.a"],
resource_size = size,
targets = [
"",
"install",
],
)
for size in SIZES
]

[
cc_test(
name = "test_lib_" + size,
srcs = [
"test_libb.cpp",
],
deps = [
":ninja_lib_" + size,
],
)
for size in SIZES
]
1 change: 1 addition & 0 deletions foreign_cc/built_tools/private/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ bzl_library(
"//foreign_cc/private:cc_toolchain_util",
"//foreign_cc/private:detect_root",
"//foreign_cc/private:framework",
"//foreign_cc/private:resource_sets",
"//foreign_cc/private/framework:helpers",
"@bazel_tools//tools/cpp:toolchain_utils.bzl",
],
Expand Down
6 changes: 6 additions & 0 deletions foreign_cc/built_tools/private/built_tools_framework.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
load("//foreign_cc/private:cc_toolchain_util.bzl", "absolutize_path_in_str")
load("//foreign_cc/private:detect_root.bzl", "detect_root")
load("//foreign_cc/private:framework.bzl", "get_env_prelude", "wrap_outputs")
load("//foreign_cc/private:resource_sets.bzl", "SIZE_ATTRIBUTES", "get_resource_env_vars")
load("//foreign_cc/private/framework:helpers.bzl", "convert_shell_script", "shebang")
load("//foreign_cc/private/framework:platform.bzl", "PLATFORM_CONSTRAINTS_RULE_ATTRIBUTES")

Expand Down Expand Up @@ -35,6 +36,7 @@ FOREIGN_CC_BUILT_TOOLS_ATTRS = {

# this would be cleaner as x | y, but that's not supported in bazel 5.4.0
FOREIGN_CC_BUILT_TOOLS_ATTRS.update(PLATFORM_CONSTRAINTS_RULE_ATTRIBUTES)
FOREIGN_CC_BUILT_TOOLS_ATTRS.update(SIZE_ATTRIBUTES)

# Common fragments for all built_tool rules
FOREIGN_CC_BUILT_TOOLS_FRAGMENTS = [
Expand Down Expand Up @@ -153,6 +155,8 @@ def built_tool_rule_impl(ctx, script_lines, out_dir, mnemonic, additional_tools
if additional_tools:
tools = depset(transitive = [tools, additional_tools])

resource_set, env = get_resource_env_vars(ctx.attr)

# The use of `run_shell` here is intended to ensure bash is correctly setup on windows
# environments. This should not be replaced with `run` until a cross platform implementation
# is found that guarantees bash exists or appropriately errors out.
Expand All @@ -161,6 +165,8 @@ def built_tool_rule_impl(ctx, script_lines, out_dir, mnemonic, additional_tools
inputs = ctx.attr.srcs.files,
outputs = [out_dir, wrapped_outputs.log_file],
tools = tools,
env = env,
resource_set = resource_set,
use_default_shell_env = True,
command = wrapped_outputs.wrapper_script_file.path,
execution_requirements = {"block-network": ""},
Expand Down
14 changes: 14 additions & 0 deletions foreign_cc/private/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library")

exports_files([
"runnable_binary_wrapper.sh",
"settings.sh.in",
])

bzl_library(
Expand Down Expand Up @@ -43,6 +44,7 @@ bzl_library(
":cc_toolchain_util",
":detect_root",
":detect_xcompile.bzl",
":resource_sets",
":run_shell_file_utils",
"//foreign_cc:providers",
"//foreign_cc/private/framework:helpers",
Expand Down Expand Up @@ -96,3 +98,15 @@ bzl_library(
srcs = ["run_shell_file_utils.bzl"],
visibility = ["//foreign_cc:__subpackages__"],
)

bzl_library(
name = "resource_sets",
srcs = ["resource_sets.bzl"],
visibility = ["//foreign_cc:__subpackages__"],
deps = [
"@bazel_lib//lib:expand_template",
"@bazel_lib//lib:resource_sets",
"@bazel_skylib//rules:common_settings",
"@rules_shell//shell:rules_bzl",
],
)
6 changes: 6 additions & 0 deletions foreign_cc/private/framework.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
load("@rules_cc//cc:defs.bzl", "CcInfo", "cc_common")
load("//foreign_cc:providers.bzl", "ForeignCcArtifactInfo", "ForeignCcDepsInfo")
load("//foreign_cc/private:detect_root.bzl", "filter_containing_dirs_from_inputs")
load("//foreign_cc/private:resource_sets.bzl", "SIZE_ATTRIBUTES", "get_resource_env_vars")
load(
"//foreign_cc/private/framework:helpers.bzl",
"convert_shell_script",
Expand Down Expand Up @@ -252,6 +253,7 @@ CC_EXTERNAL_RULE_ATTRIBUTES = {

# this would be cleaner as x | y, but that's not supported in bazel 5.4.0
CC_EXTERNAL_RULE_ATTRIBUTES.update(PLATFORM_CONSTRAINTS_RULE_ATTRIBUTES)
CC_EXTERNAL_RULE_ATTRIBUTES.update(SIZE_ATTRIBUTES)

# A list of common fragments required by rules using this framework
CC_EXTERNAL_RULE_FRAGMENTS = [
Expand Down Expand Up @@ -542,6 +544,8 @@ def cc_external_rule_impl(ctx, attrs):
for tool in attrs.tools_deps:
tool_runfiles += tool[DefaultInfo].default_runfiles.files.to_list()

resource_set, env = get_resource_env_vars(ctx.attr)

ctx.actions.run_shell(
mnemonic = "Cc" + attrs.configure_name.capitalize() + "MakeRule",
inputs = depset(inputs.declared_inputs),
Expand All @@ -561,6 +565,8 @@ def cc_external_rule_impl(ctx, attrs):
configure_name = attrs.configure_name,
lib_name = lib_name,
),
resource_set = resource_set,
env = env,
)

# Gather runfiles transitively as per the documentation in:
Expand Down
Loading