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 .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,3 +151,17 @@ tasks:
- "--enable_bzlmod"
build_targets:
- "//..."

windows_rule_based_toolchains:
name: Windows rule-based toolchains (msvc-cl)
platform: windows
working_directory: examples/rule_based_toolchain
build_flags:
- "--enable_bzlmod"
- "--config=msvc-cl"
build_targets:
- "//..."
test_flags:
- "--config=msvc-cl"
test_targets:
- "//..."
25 changes: 11 additions & 14 deletions cc/toolchains/args/BUILD
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
load("//cc/toolchains:feature.bzl", "cc_feature")
load("//cc/toolchains:feature_set.bzl", "cc_feature_set")

package(default_visibility = ["//visibility:public"])
Expand All @@ -15,7 +14,6 @@ package(default_visibility = ["//visibility:public"])
cc_feature_set(
name = "experimental_replace_legacy_action_config_features",
all_of = [
":backfill_legacy_args",
"//cc/toolchains/args/archiver_flags:feature",
"//cc/toolchains/args/pic_flags:feature",
"//cc/toolchains/args/libraries_to_link:feature",
Expand All @@ -30,24 +28,23 @@ cc_feature_set(
"//cc/toolchains/args/soname_flags:feature",
"//cc/toolchains/args/static_libgcc:feature",
"//cc/toolchains/args/include_flags:feature",
"//cc/toolchains/args/compiler_input_flags:feature",
"//cc/toolchains/args/compiler_output_flags:feature",
"//cc/toolchains/args/compiler_input_flags:feature", # the inputs must follow the outputs, or ml.exe assembler doesn't work
"//cc/toolchains/args/windows:def_file_feature",
"//cc/toolchains/args/windows:default_compile_flags_feature",
"//cc/toolchains/args/windows:default_cpp_std_feature",
"//cc/toolchains/args/windows:cpp20_module_compile_flags_feature",
"//cc/toolchains/args/windows:determinism_feature",
"//cc/toolchains/args/windows:nologo_feature",
"//cc/toolchains/args/windows:windows_machine_flags_feature",
"//cc/toolchains/args/windows:remove_unreferenced_code_feature",
"//cc/toolchains/args/windows:ignore_noisy_warnings_feature",
"//cc/toolchains/args/fission_flags:feature",
"//cc/toolchains/args/windows:dynamic_link_msvcrt_feature",
"//cc/toolchains/args/link_flags:feature",
"//cc/toolchains/args/linkstamp_flags:feature",
"//cc/toolchains/args/library_search_directories:feature",
"//cc/toolchains/args/dependency_file:feature",
"//cc/toolchains/args/compile_flags:feature", # NOTE: This should come below default flags so user flags can override them
],
)

cc_feature(
name = "backfill_legacy_args",
feature_name = "experimental_replace_legacy_action_config_features",
# TODO: Convert remaining items in this list into their actual args.
implies = [
"//cc/toolchains/features/legacy:build_interface_libraries",
"//cc/toolchains/features/legacy:dynamic_library_linker_tool",
],
visibility = ["//visibility:private"],
)
38 changes: 36 additions & 2 deletions cc/toolchains/args/archiver_flags/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ load("//cc/toolchains:args.bzl", "cc_args")
load("//cc/toolchains:args_list.bzl", "cc_args_list")
load("//cc/toolchains:feature.bzl", "cc_feature")
load("//cc/toolchains:nested_args.bzl", "cc_nested_args")
load("//cc/toolchains/impl:args_for_compiler.bzl", "cc_args_for_compiler")

package(default_visibility = ["//visibility:private"])

Expand Down Expand Up @@ -30,13 +31,15 @@ cc_args_list(
name = "archiver_flags",
args = [
":create_static_archive",
":create_static_archive_windows",
":output_execpath",
":output_execpath_windows",
":libraries_to_link",
],
visibility = ["//visibility:public"],
)

cc_args(
cc_args_for_compiler(
name = "create_static_archive",
actions = ["//cc/toolchains/actions:ar_actions"],
args = select({
Expand All @@ -47,16 +50,47 @@ cc_args(
],
"//conditions:default": ["rcsD"],
}),
exclude_compilers = [
"msvc-cl",
"clang-cl",
],
requires_not_none = "//cc/toolchains/variables:output_execpath",
)

cc_args(
cc_args_for_compiler(
name = "create_static_archive_windows",
actions = ["//cc/toolchains/actions:ar_actions"],
args = [],
compilers = [
"msvc-cl",
"clang-cl",
],
requires_not_none = "//cc/toolchains/variables:output_execpath",
)

cc_args_for_compiler(
name = "output_execpath",
actions = ["//cc/toolchains/actions:ar_actions"],
args = select({
":use_libtool_on_macos_setting": ["-o"],
"//conditions:default": [],
}) + ["{output_execpath}"],
exclude_compilers = [
"msvc-cl",
"clang-cl",
],
format = {"output_execpath": "//cc/toolchains/variables:output_execpath"},
requires_not_none = "//cc/toolchains/variables:output_execpath",
)

cc_args_for_compiler(
name = "output_execpath_windows",
actions = ["//cc/toolchains/actions:ar_actions"],
args = ["/OUT:{output_execpath}"],
compilers = [
"msvc-cl",
"clang-cl",
],
format = {"output_execpath": "//cc/toolchains/variables:output_execpath"},
requires_not_none = "//cc/toolchains/variables:output_execpath",
)
Expand Down
40 changes: 37 additions & 3 deletions cc/toolchains/args/compiler_input_flags/BUILD
Original file line number Diff line number Diff line change
@@ -1,20 +1,54 @@
load("//cc/toolchains:args.bzl", "cc_args")
load("//cc/toolchains:feature.bzl", "cc_feature")
load("//cc/toolchains/impl:args_for_compiler.bzl", "cc_args_for_compiler")

cc_feature(
name = "feature",
args = [":flags"],
args = [
":flags",
":flags_windows",
],
overrides = "//cc/toolchains/features/legacy:compiler_input_flags",
visibility = ["//visibility:public"],
)

cc_args(
cc_args_for_compiler(
name = "flags",
actions = ["//cc/toolchains/actions:compile_actions"],
args = [
"-c",
"{source_file}",
],
exclude_compilers = [
"msvc-cl",
"clang-cl",
],
format = {"source_file": "//cc/toolchains/variables:source_file"},
requires_not_none = "//cc/toolchains/variables:source_file",
)

cc_args_for_compiler(
name = "flags_windows",
actions = [
"//cc/toolchains/actions:assemble",
"//cc/toolchains/actions:preprocess_assemble",
"//cc/toolchains/actions:c_compile",
"//cc/toolchains/actions:linkstamp_compile",
"//cc/toolchains/actions:cpp_compile",
"//cc/toolchains/actions:cpp_header_parsing",
"//cc/toolchains/actions:cpp_module_compile",
"//cc/toolchains/actions:cpp_module_codegen",
"//cc/toolchains/actions:cpp_module_deps_scanning",
"//cc/toolchains/actions:cpp20_module_compile",
"//cc/toolchains/actions:cpp20_module_codegen",
],
args = [
"/c",
"{source_file}",
],
compilers = [
"msvc-cl",
"clang-cl",
],
format = {"source_file": "//cc/toolchains/variables:source_file"},
requires_not_none = "//cc/toolchains/variables:source_file",
)
149 changes: 145 additions & 4 deletions cc/toolchains/args/compiler_output_flags/BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
load("//cc/toolchains:args.bzl", "cc_args")
load("//cc/toolchains:args_list.bzl", "cc_args_list")
load("//cc/toolchains:feature.bzl", "cc_feature")
load("//cc/toolchains:nested_args.bzl", "cc_nested_args")
load("//cc/toolchains/impl:args_for_compiler.bzl", "cc_args_for_compiler")

cc_feature(
name = "feature",
Expand All @@ -15,30 +16,170 @@ cc_args_list(
":output_assembly_flags",
":output_preprocess_flags",
":output_flags",
":windows_output_preprocess_flags",
":windows_output_assembly_flags",
":windows_output_object_flags",
":windows_output_object_flags_preprocess_assemble",
":windows_output_object_flags_asm",
],
)

cc_args(
cc_nested_args(
name = "windows_output_object_file_no_preprocess",
nested = [":windows_output_object_file_no_preprocess_or_assembly"],
requires_none = "//cc/toolchains/variables:output_preprocess_file",
)

cc_nested_args(
name = "windows_output_object_file_no_preprocess_or_assembly",
args = ["/Fo{output_file}"],
format = {"output_file": "//cc/toolchains/variables:output_file"},
requires_none = "//cc/toolchains/variables:output_assembly_file",
)

cc_nested_args(
name = "windows_output_object_file_asm_no_preprocess",
nested = [":windows_output_object_file_asm_no_preprocess_or_assembly"],
requires_none = "//cc/toolchains/variables:output_preprocess_file",
)

cc_nested_args(
name = "windows_output_object_file_asm_no_preprocess_or_assembly",
args = [
"/Fo{output_file}",
"/Zi",
],
format = {"output_file": "//cc/toolchains/variables:output_file"},
requires_none = "//cc/toolchains/variables:output_assembly_file",
)

cc_args_for_compiler(
name = "output_assembly_flags",
actions = ["//cc/toolchains/actions:compile_actions"],
args = ["-S"],
exclude_compilers = [
"msvc-cl",
"clang-cl",
],
requires_not_none = "//cc/toolchains/variables:output_assembly_file",
)

cc_args(
cc_args_for_compiler(
name = "output_preprocess_flags",
actions = ["//cc/toolchains/actions:compile_actions"],
args = ["-E"],
exclude_compilers = [
"msvc-cl",
"clang-cl",
],
requires_not_none = "//cc/toolchains/variables:output_preprocess_file",
)

cc_args(
cc_args_for_compiler(
name = "output_flags",
actions = ["//cc/toolchains/actions:compile_actions"],
args = [
"-o",
"{output_file}",
],
exclude_compilers = [
"msvc-cl",
"clang-cl",
],
format = {"output_file": "//cc/toolchains/variables:output_file"},
requires_not_none = "//cc/toolchains/variables:output_file",
)

cc_args_for_compiler(
name = "windows_output_preprocess_flags",
actions = [
"//cc/toolchains/actions:preprocess_assemble",
"//cc/toolchains/actions:c_compile",
"//cc/toolchains/actions:linkstamp_compile",
"//cc/toolchains/actions:cpp_compile",
"//cc/toolchains/actions:cpp_header_parsing",
"//cc/toolchains/actions:cpp_module_compile",
"//cc/toolchains/actions:cpp_module_codegen",
"//cc/toolchains/actions:cpp_module_deps_scanning",
"//cc/toolchains/actions:cpp20_module_compile",
"//cc/toolchains/actions:cpp20_module_codegen",
],
args = [
"/P",
"/Fi{output_file}",
],
compilers = [
"msvc-cl",
"clang-cl",
],
format = {"output_file": "//cc/toolchains/variables:output_preprocess_file"},
requires_not_none = "//cc/toolchains/variables:output_preprocess_file",
)

cc_args_for_compiler(
name = "windows_output_assembly_flags",
actions = [
"//cc/toolchains/actions:preprocess_assemble",
"//cc/toolchains/actions:c_compile",
"//cc/toolchains/actions:linkstamp_compile",
"//cc/toolchains/actions:cpp_compile",
"//cc/toolchains/actions:cpp_header_parsing",
"//cc/toolchains/actions:cpp_module_compile",
"//cc/toolchains/actions:cpp_module_codegen",
"//cc/toolchains/actions:cpp_module_deps_scanning",
"//cc/toolchains/actions:cpp20_module_compile",
"//cc/toolchains/actions:cpp20_module_codegen",
],
args = [
"/Fa{output_file}",
],
compilers = [
"msvc-cl",
"clang-cl",
],
format = {"output_file": "//cc/toolchains/variables:output_assembly_file"},
requires_not_none = "//cc/toolchains/variables:output_assembly_file",
)

cc_args_for_compiler(
name = "windows_output_object_flags",
actions = [
"//cc/toolchains/actions:c_compile",
"//cc/toolchains/actions:linkstamp_compile",
"//cc/toolchains/actions:cpp_compile",
"//cc/toolchains/actions:cpp_header_parsing",
"//cc/toolchains/actions:cpp_module_compile",
"//cc/toolchains/actions:cpp_module_codegen",
"//cc/toolchains/actions:cpp_module_deps_scanning",
"//cc/toolchains/actions:cpp20_module_compile",
"//cc/toolchains/actions:cpp20_module_codegen",
],
compilers = [
"msvc-cl",
"clang-cl",
],
nested = [":windows_output_object_file_no_preprocess"],
requires_not_none = "//cc/toolchains/variables:output_file",
)

cc_args_for_compiler(
name = "windows_output_object_flags_preprocess_assemble",
actions = ["//cc/toolchains/actions:preprocess_assemble"],
compilers = [
"msvc-cl",
"clang-cl",
],
nested = [":windows_output_object_file_no_preprocess"],
requires_not_none = "//cc/toolchains/variables:output_file",
)

cc_args_for_compiler(
name = "windows_output_object_flags_asm",
actions = ["//cc/toolchains/actions:assemble"],
compilers = [
"msvc-cl",
"clang-cl",
],
nested = [":windows_output_object_file_asm_no_preprocess"],
requires_not_none = "//cc/toolchains/variables:output_file",
)
Loading