Skip to content
Closed
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
4 changes: 4 additions & 0 deletions scripts/bootstrap/compile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,10 @@ EOF
link_file "${PWD}/tools/cpp/runfiles/BUILD.tools" \
"${BAZEL_TOOLS_REPO}/tools/cpp/runfiles/BUILD"

# Create @bazel_tools//tools/cpp/modules_tools
mkdir -p ${BAZEL_TOOLS_REPO}/tools/cpp/modules_tools
link_file "${PWD}/tools/cpp/modules_tools/BUILD.tools" "${BAZEL_TOOLS_REPO}/tools/cpp/modules_tools/BUILD"

# Create @bazel_tools//tools/sh
mkdir -p ${BAZEL_TOOLS_REPO}/tools/sh
link_file "${PWD}/tools/sh/sh_configure.bzl" "${BAZEL_TOOLS_REPO}/tools/sh/sh_configure.bzl"
Expand Down
4 changes: 3 additions & 1 deletion src/main/starlark/builtins_bzl/common/cc/cc_toolchain.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ def _attributes(ctx):
objcopy_files = _files(ctx, "objcopy_files"),
link_dynamic_library_tool = ctx.file._link_dynamic_library_tool,
grep_includes = grep_includes,
aggregate_ddi = _single_file(ctx, "_aggregate_ddi"),
generate_modmap = _single_file(ctx, "_generate_modmap"),
module_map = ctx.attr.module_map,
as_files = _files(ctx, "as_files"),
ar_files = _files(ctx, "ar_files"),
Expand Down Expand Up @@ -342,5 +344,5 @@ The label of the rule providing <code>cc_toolchain_config_info</code>.""",
default = semantics.BUILD_INFO_TRANLATOR_LABEL,
providers = [OutputGroupInfo],
),
},
} | semantics.cpp_modules_tools(),
)
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,9 @@ def _create_cc_toolchain_info(
grep_includes,
allowlist_for_layering_check,
build_info_files,
objcopy_files):
objcopy_files,
aggregate_ddi,
generate_modmap):
cc_toolchain_info = dict(
needs_pic_for_dynamic_libraries = (lambda *, feature_configuration: True) if cpp_configuration.force_pic() else _needs_pic_for_dynamic_libraries,
built_in_include_directories = built_in_include_directories,
Expand Down Expand Up @@ -157,6 +159,8 @@ def _create_cc_toolchain_info(
_allowlist_for_layering_check = allowlist_for_layering_check,
_cc_info = cc_info,
_objcopy_files = objcopy_files,
_aggregate_ddi = aggregate_ddi,
_generate_modmap = generate_modmap,
)
return cc_toolchain_info

Expand Down Expand Up @@ -250,6 +254,8 @@ CcToolchainInfo, _ = provider(
"_allowlist_for_layering_check": "INTERNAL API, DO NOT USE!",
"_cc_info": "INTERNAL API, DO NOT USE!",
"_objcopy_files": "INTERNAL API, DO NOT USE!",
"_aggregate_ddi": "INTERNAL API, DO NOT USE!",
"_generate_modmap": "INTERNAL API, DO NOT USE!",
},
init = _create_cc_toolchain_info,
)
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,8 @@ def get_cc_toolchain_provider(ctx, attributes):
supports_header_parsing = attributes.supports_header_parsing,
link_dynamic_library_tool = attributes.link_dynamic_library_tool,
grep_includes = attributes.grep_includes,
aggregate_ddi = attributes.aggregate_ddi,
generate_modmap = attributes.generate_modmap,
allowlist_for_layering_check = attributes.allowlist_for_layering_check,
build_info_files = attributes.build_info_files,
toolchain_label = ctx.label,
Expand Down
15 changes: 15 additions & 0 deletions src/main/starlark/builtins_bzl/common/cc/semantics.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,20 @@ def _get_experimental_link_static_libraries_once(ctx):
def _check_cc_shared_library_tags(ctx):
pass

def _cpp_modules_tools():
return {
"_aggregate_ddi": attr.label(
executable = True,
cfg = "exec",
default = "@" + _get_repo() + "//tools/cpp:aggregate-ddi",
),
"_generate_modmap": attr.label(
executable = True,
cfg = "exec",
default = "@" + _get_repo() + "//tools/cpp:generate-modmap",
),
}

semantics = struct(
toolchain = "@bazel_tools//tools/cpp:toolchain_type",
ALLOWED_RULES_IN_DEPS = [
Expand Down Expand Up @@ -172,6 +186,7 @@ semantics = struct(
get_proto_aspects = _get_proto_aspects,
get_nocopts_attr = _get_nocopts_attr,
get_experimental_link_static_libraries_once = _get_experimental_link_static_libraries_once,
cpp_modules_tools = _cpp_modules_tools,
check_cc_shared_library_tags = _check_cc_shared_library_tags,
BUILD_INFO_TRANLATOR_LABEL = "@bazel_tools//tools/build_defs/build_info:cc_build_info",
CC_PROTO_TOOLCHAIN = "@rules_cc//cc/proto:toolchain_type",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,18 @@ public void write() throws IOException {
// We add an empty :malloc target in case we need it.
"cc_library(name = 'malloc')",
// Fake targets to get us through loading/analysis.
"exports_files(['grep-includes', 'link_dynamic_library'])");
"exports_files(['grep-includes', 'link_dynamic_library'])",
"",
"filegroup(",
" name = 'aggregate-ddi',",
" srcs = ['aggregate-ddi.sh'],",
")",
"",
"filegroup(",
" name = 'generate-modmap',",
" srcs = ['generate-modmap.sh'],",
")"
);

config.create(crosstoolTop + "/mock_version/x86/bin/gcc");
config.create(crosstoolTop + "/mock_version/x86/bin/ld");
Expand All @@ -598,6 +609,8 @@ public void write() throws IOException {
config.create(crosstoolTop + "/grep-includes");
config.create(crosstoolTop + "/build_interface_so");
config.create(crosstoolTop + "/link_dynamic_library");
config.create(crosstoolTop + "/aggregate-ddi.sh");
config.create(crosstoolTop + "/generate-modmap.sh");
}

public void writeOSX() throws IOException {
Expand Down
5 changes: 5 additions & 0 deletions src/test/shell/bazel/testdata/embedded_tools_srcs_deps
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,8 @@
//src/main/cpp/util:port
//src/main/cpp/util:blaze_exit_code
//src/main/cpp/util:logging
//tools/cpp/modules_tools:aggregate-ddi
//tools/cpp/modules_tools:aggregate-ddi-lib
//tools/cpp/modules_tools:common
//tools/cpp/modules_tools:generate-modmap
//tools/cpp/modules_tools:generate-modmap-lib
2 changes: 2 additions & 0 deletions tools/cpp/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,15 @@ exports_files(glob(["*.bzl"]))
filegroup(
name = "srcs",
srcs = glob(["**"]) + [
"//tools/cpp/modules_tools:srcs",
"//tools/cpp/runfiles:srcs",
],
)

filegroup(
name = "embedded_tools",
srcs = glob(["**"]) + [
"//tools/cpp/modules_tools:embedded_tools",
"//tools/cpp/runfiles:embedded_tools",
],
)
Expand Down
10 changes: 10 additions & 0 deletions tools/cpp/BUILD.tools
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,16 @@ filegroup(
srcs = ["grep-includes.sh"],
)

filegroup(
name = "aggregate-ddi",
srcs = ["//tools/cpp/modules_tools:aggregate-ddi-bin"],
)

filegroup(
name = "generate-modmap",
srcs = ["//tools/cpp/modules_tools:generate-modmap-bin"],
)

filegroup(
name = "empty",
srcs = [],
Expand Down
126 changes: 126 additions & 0 deletions tools/cpp/modules_tools/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

filegroup(
name = "srcs",
srcs = glob(
["**"],
),
visibility = ["//tools/cpp:__pkg__"],
)

config_setting(
name = "windows",
constraint_values = ["@platforms//os:windows"],
)

COPTS = select({
":windows": ["/std:c++17"],
"//conditions:default": ["-std=c++17"],
})

cc_library(
name = "common",
srcs = [
"common/common.cc",
],
hdrs = [
"common/common.h",
"common/json.hpp",
],
copts = COPTS,
includes = ["."],
)

cc_library(
name = "aggregate-ddi-lib",
srcs = ["aggregate-ddi/aggregate-ddi.cc"],
hdrs = ["aggregate-ddi/aggregate-ddi.h"],
copts = COPTS,
deps = [":common"],
)

cc_binary(
name = "aggregate-ddi",
srcs = ["aggregate-ddi/main.cc"],
copts = COPTS,
deps = [
":aggregate-ddi-lib",
],
)

cc_library(
name = "generate-modmap-lib",
srcs = ["generate-modmap/generate-modmap.cc"],
hdrs = ["generate-modmap/generate-modmap.h"],
copts = COPTS,
deps = [":common"],
)

cc_binary(
name = "generate-modmap",
srcs = ["generate-modmap/main.cc"],
copts = COPTS,
deps = [":generate-modmap-lib"],
)

filegroup(
name = "embedded_tools",
srcs = [
"BUILD.tools",
":aggregate-ddi",
":generate-modmap",
],
visibility = ["//tools/cpp:__pkg__"],
)

cc_test(
name = "generate-modmap_test",
srcs = ["generate-modmap/generate-modmap_test.cc"],
copts = COPTS,
deps = [
":generate-modmap-lib",
"@com_google_googletest//:gtest_main",
],
)

cc_test(
name = "aggregate-ddi_test",
srcs = ["aggregate-ddi/aggregate-ddi_test.cc"],
copts = COPTS,
deps = [
":aggregate-ddi-lib",
"@com_google_googletest//:gtest_main",
],
)

cc_test(
name = "common_test",
srcs = ["common/common_test.cc"],
copts = COPTS,
deps = [
":common",
"@com_google_googletest//:gtest_main",
],
)

cc_test(
name = "json_test",
srcs = ["common/json_test.cc"],
copts = COPTS,
deps = [
":common",
"@com_google_googletest//:gtest_main",
],
)
22 changes: 22 additions & 0 deletions tools/cpp/modules_tools/BUILD.tools
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package(default_visibility = ["//visibility:public"])

config_setting(
name = "windows",
constraint_values = ["@platforms//os:windows"],
)

filegroup(
name = "aggregate-ddi-bin",
srcs = select({
":windows": ["aggregate-ddi.exe"],
"//conditions:default": ["aggregate-ddi"],
}),
)

filegroup(
name = "generate-modmap-bin",
srcs = select({
":windows": ["generate-modmap.exe"],
"//conditions:default": ["generate-modmap"],
}),
)
Loading