Move CC link constants to enum-struct in cc_helper in builtins. PiperOrigin-RevId: 493283267 Change-Id: I9960c07dd9098d46ddbda969f8b6c5339a182fc2
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl index 50c847c..d3f3f00 100644 --- a/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl +++ b/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
@@ -16,7 +16,7 @@ load(":common/cc/semantics.bzl", "semantics") load(":common/cc/experimental_cc_shared_library.bzl", "CcSharedLibraryInfo", "GraphNodeInfo", "build_exports_map_from_only_dynamic_deps", "build_link_once_static_libs_map", "merge_cc_shared_library_infos", "throw_linked_but_not_exported_errors") -load(":common/cc/cc_helper.bzl", "cc_helper") +load(":common/cc/cc_helper.bzl", "cc_helper", "linker_mode") CcInfo = _builtins.toplevel.CcInfo ProtoInfo = _builtins.toplevel.ProtoInfo @@ -28,9 +28,6 @@ _EXECUTABLE = "executable" _DYNAMIC_LIBRARY = "dynamic_library" -_LINKING_DYNAMIC = "dynamic_linking_mode" -_LINKING_STATIC = "static_linking_mode" - _IOS_SIMULATOR_TARGET_CPUS = ["ios_x86_64", "ios_i386", "ios_sim_arm64"] _IOS_DEVICE_TARGET_CPUS = ["ios_armv6", "ios_arm64", "ios_armv7", "ios_armv7s", "ios_arm64e"] _WATCHOS_SIMULATOR_TARGET_CPUS = ["watchos_i386", "watchos_x86_64", "watchos_arm64"] @@ -225,8 +222,8 @@ builder_artifacts = [] builder_transitive_artifacts = [] - builder = ctx.runfiles(transitive_files = _add(ctx, linking_mode != _LINKING_DYNAMIC), collect_default = True) - coverage_runtime_objects_builder = ctx.runfiles(transitive_files = _add(ctx, linking_mode != _LINKING_DYNAMIC)) + builder = ctx.runfiles(transitive_files = _add(ctx, linking_mode != linker_mode.LINKING_DYNAMIC), collect_default = True) + coverage_runtime_objects_builder = ctx.runfiles(transitive_files = _add(ctx, linking_mode != linker_mode.LINKING_DYNAMIC)) runtime_objects_for_coverage.extend(coverage_runtime_objects_builder.files.to_list()) dynamic_libraries_for_runtime = _get_dynamic_libraries_for_runtime(True, libraries) @@ -247,7 +244,7 @@ builder = builder.merge(dynamic_dep[DefaultInfo].default_runfiles) builder = builder.merge_all(runfiles_is_static + runfiles_is_not_static) - if linking_mode == _LINKING_DYNAMIC: + if linking_mode == linker_mode.LINKING_DYNAMIC: dynamic_runtime_lib = cc_toolchain.dynamic_runtime_lib(feature_configuration = feature_configuration) dynamic_runtime_lib_list = dynamic_runtime_lib.to_list() builder_transitive_artifacts.extend(dynamic_runtime_lib_list) @@ -262,7 +259,7 @@ _default_runfiles_function(ctx, runtime) for runtime in semantics.get_cc_runtimes(ctx, _is_link_shared(ctx)) ] + [ - ctx.runfiles(transitive_files = _runfiles_function(ctx, runtime, linking_mode != _LINKING_DYNAMIC)) + ctx.runfiles(transitive_files = _runfiles_function(ctx, runtime, linking_mode != linker_mode.LINKING_DYNAMIC)) for runtime in semantics.get_cc_runtimes(ctx, _is_link_shared(ctx)) ]) @@ -326,7 +323,7 @@ if lto_backend_artifact.dwo_file() != None: dwo_files.append(lto_backend_artifact.dwo_file()) - if linking_mode != _LINKING_DYNAMIC: + if linking_mode != linker_mode.LINKING_DYNAMIC: if use_pic: transitive_dwo_files = cc_debug_context.pic_files else: @@ -497,7 +494,7 @@ if len(ctx.attr.dynamic_deps) > 0: cc_linking_context, rule_impl_debug_files = _filter_libraries_that_are_linked_dynamically(ctx, cc_linking_context, cpp_config) link_deps_statically = True - if linking_mode == _LINKING_DYNAMIC: + if linking_mode == linker_mode.LINKING_DYNAMIC: link_deps_statically = False cc_linking_outputs = cc_common.link( @@ -546,11 +543,11 @@ linkstatic_attr = ctx.attr.linkstatic if cpp_config.dynamic_mode() == "FULLY": - return _LINKING_DYNAMIC + return linker_mode.LINKING_DYNAMIC elif cpp_config.dynamic_mode() == "OFF" or linkstatic_attr: - return _LINKING_STATIC + return linker_mode.LINKING_STATIC else: - return _LINKING_DYNAMIC + return linker_mode.LINKING_DYNAMIC def _matches(extensions, target): for extension in extensions: @@ -665,7 +662,7 @@ additional_linker_inputs = ctx.files.additional_linker_inputs # Allows the dynamic library generated for code of test targets to be linked separately. - link_compile_output_separately = ctx.attr._is_test and linking_mode == _LINKING_DYNAMIC and cpp_config.dynamic_mode() == "DEFAULT" and ("dynamic_link_test_srcs" in ctx.features) + link_compile_output_separately = ctx.attr._is_test and linking_mode == linker_mode.LINKING_DYNAMIC and cpp_config.dynamic_mode() == "DEFAULT" and ("dynamic_link_test_srcs" in ctx.features) # When linking the object files directly into the resulting binary, we do not need # library-level link outputs; thus, we do not let CcCompilationHelper produce link outputs @@ -693,7 +690,7 @@ alwayslink = True, ) - is_static_mode = linking_mode != _LINKING_DYNAMIC + is_static_mode = linking_mode != linker_mode.LINKING_DYNAMIC deps_cc_linking_context = _collect_linking_context(ctx, cpp_config) generated_def_file = None win_def_file = None @@ -729,7 +726,7 @@ linker_inputs_extra = depset() runtime_libraries_extra = depset() if extra_link_time_libraries != None: - linker_inputs_extra, runtime_libraries_extra = extra_link_time_libraries.build_libraries(ctx = ctx, static_mode = linking_mode != _LINKING_DYNAMIC, for_dynamic_library = _is_link_shared(ctx)) + linker_inputs_extra, runtime_libraries_extra = extra_link_time_libraries.build_libraries(ctx = ctx, static_mode = linking_mode != linker_mode.LINKING_DYNAMIC, for_dynamic_library = _is_link_shared(ctx)) cc_linking_outputs_binary, cc_launcher_info, rule_impl_debug_files = _create_transitive_linking_actions( ctx, @@ -786,7 +783,7 @@ explicit_dwp_file = dwp_file if not cc_helper.should_create_per_object_debug_info(feature_configuration, cpp_config): explicit_dwp_file = None - elif ctx.attr._is_test and linking_mode != _LINKING_DYNAMIC and cpp_config.build_test_dwp(): + elif ctx.attr._is_test and linking_mode != linker_mode.LINKING_DYNAMIC and cpp_config.build_test_dwp(): files_to_build_list.append(dwp_file) # If the binary is linked dynamically and COPY_DYNAMIC_LIBRARIES_TO_BINARY is enabled, collect
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl index bf47e07..0e93a90 100644 --- a/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl +++ b/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl
@@ -14,7 +14,7 @@ """Utility functions for C++ rules.""" -load(":common/objc/semantics.bzl", "semantics") +load(":common/objc/semantics.bzl", objc_semantics = "semantics") CcInfo = _builtins.toplevel.CcInfo cc_common = _builtins.toplevel.cc_common @@ -44,6 +44,11 @@ CLIF_OUTPUT_PROTO = "CLIF_OUTPUT_PROTO", ) +linker_mode = struct( + LINKING_DYNAMIC = "dynamic_linking_mode", + LINKING_STATIC = "static_linking_mode", +) + SYSROOT_FLAG = "--sysroot=" def _build_linking_context_from_libraries(ctx, libraries): @@ -169,7 +174,7 @@ return library.dynamic_library -_CPP_TOOLCHAIN_TYPE = "@" + semantics.get_repo() + "//tools/cpp:toolchain_type" +_CPP_TOOLCHAIN_TYPE = "@" + objc_semantics.get_repo() + "//tools/cpp:toolchain_type" def _find_cpp_toolchain(ctx): """