diff --git a/tools/osx/crosstool/cc_toolchain_config.bzl b/tools/osx/crosstool/cc_toolchain_config.bzl index 1726cc1670303e..897ad6bf563d4a 100644 --- a/tools/osx/crosstool/cc_toolchain_config.bzl +++ b/tools/osx/crosstool/cc_toolchain_config.bzl @@ -251,68 +251,29 @@ def _impl(ctx): xcode_config = ctx.attr._xcode_config[apple_common.XcodeVersionConfig] xcode_execution_requirements = xcode_config.execution_info().keys() - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - cpp_header_parsing_action = action_config( - action_name = ACTION_NAMES.cpp_header_parsing, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - "unfiltered_cxx_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - cpp_header_parsing_action = action_config( - action_name = ACTION_NAMES.cpp_header_parsing, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - cpp_header_parsing_action = None + cpp_header_parsing_action = action_config( + action_name = ACTION_NAMES.cpp_header_parsing, + implies = [ + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + "unfiltered_cxx_flags", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) objc_compile_action = action_config( action_name = ACTION_NAMES.objc_compile, @@ -347,578 +308,93 @@ def _impl(ctx): ], ) - if (ctx.attr.cpu == "armeabi-v7a"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", ""]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_arm64_32"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "arm64_32"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "darwin_arm64"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "arm64"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "darwin_arm64e"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "arm64e"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_armv7"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "armv7"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "armv7k"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "watchos_i386"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "i386"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_x86_64"): - objcpp_executable_action = action_config( - action_name = "objc++-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), - flag_group(flags = ["-arch", "x86_64"]), - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - objcpp_executable_action = None + objcpp_executable_action = action_config( + action_name = "objc++-executable", + flag_sets = [ + flag_set( + flag_groups = [ + flag_group(flags = ["-stdlib=libc++", "-std=gnu++11"]), + flag_group(flags = ["-arch", arch]), + flag_group( + flags = [ + "-Xlinker", + "-objc_abi_version", + "-Xlinker", + "2", + "-fobjc-link-runtime", + "-ObjC", + ], + ), + flag_group( + flags = ["-framework", "%{framework_names}"], + iterate_over = "framework_names", + ), + flag_group( + flags = ["-weak_framework", "%{weak_framework_names}"], + iterate_over = "weak_framework_names", + ), + flag_group( + flags = ["-l%{library_names}"], + iterate_over = "library_names", + ), + flag_group(flags = ["-filelist", "%{filelist}"]), + flag_group(flags = ["-o", "%{linked_binary}"]), + flag_group( + flags = ["-force_load", "%{force_load_exec_paths}"], + iterate_over = "force_load_exec_paths", + ), + flag_group( + flags = ["%{dep_linkopts}"], + iterate_over = "dep_linkopts", + ), + flag_group( + flags = ["-Wl,%{attr_linkopts}"], + iterate_over = "attr_linkopts", + ), + ], + ), + ], + implies = [ + "include_system_dirs", + "framework_paths", + "version_min", + "strip_debug_symbols", + "apple_env", + "apply_implicit_frameworks", + ], + tools = [ + tool( + path = "wrapped_clang_pp", + execution_requirements = xcode_execution_requirements, + ), + ], + ) - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - cpp_link_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_dynamic_library, - implies = [ - "contains_objc_source", - "has_configured_linker_path", - "symbol_counts", - "shared_flag", - "linkstamps", - "output_execpath_flags", - "runtime_root_flags", - "input_param_flags", - "strip_debug_symbols", - "linker_param_file", - "version_min", - "apple_env", - "sysroot", - "cpp_linker_flags", - ], - tools = [ - tool( - path = "cc_wrapper.sh", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - cpp_link_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_dynamic_library, - implies = [ - "contains_objc_source", - "has_configured_linker_path", - "symbol_counts", - "shared_flag", - "linkstamps", - "output_execpath_flags", - "runtime_root_flags", - "input_param_flags", - "strip_debug_symbols", - "linker_param_file", - "version_min", - "apple_env", - "sysroot", - ], - tools = [ - tool( - path = "cc_wrapper.sh", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - cpp_link_dynamic_library_action = None + cpp_link_dynamic_library_action = action_config( + action_name = ACTION_NAMES.cpp_link_dynamic_library, + implies = [ + "contains_objc_source", + "has_configured_linker_path", + "symbol_counts", + "shared_flag", + "linkstamps", + "output_execpath_flags", + "runtime_root_flags", + "input_param_flags", + "strip_debug_symbols", + "linker_param_file", + "version_min", + "apple_env", + "sysroot", + "cpp_linker_flags", + ], + tools = [ + tool( + path = "cc_wrapper.sh", + execution_requirements = xcode_execution_requirements, + ), + ], + ) cpp_link_static_library_action = action_config( action_name = ACTION_NAMES.cpp_link_static_library, @@ -937,2054 +413,1262 @@ def _impl(ctx): ], ) - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - c_compile_action = action_config( - action_name = ACTION_NAMES.c_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - "unfiltered_cxx_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - c_compile_action = action_config( - action_name = ACTION_NAMES.c_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - c_compile_action = None + c_compile_action = action_config( + action_name = ACTION_NAMES.c_compile, + implies = [ + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + "unfiltered_cxx_flags", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - cpp_compile_action = action_config( - action_name = ACTION_NAMES.cpp_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - "unfiltered_cxx_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - cpp_compile_action = action_config( - action_name = ACTION_NAMES.cpp_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - cpp_compile_action = None + cpp_compile_action = action_config( + action_name = ACTION_NAMES.cpp_compile, + implies = [ + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + "unfiltered_cxx_flags", + ], + tools = [ + tool( + path = "wrapped_clang_pp", + execution_requirements = xcode_execution_requirements, + ), + ], + ) - if (ctx.attr.cpu == "armeabi-v7a"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = [ - "-arch", - "", - "-stdlib=libc++", - "-std=gnu++11", - ], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_arm64_32"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = [ - "-arch", - "arm64_32", - "-stdlib=libc++", - "-std=gnu++11", - ], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "darwin_arm64"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "arm64", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "darwin_arm64e"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "arm64e", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_armv7"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "armv7", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "armv7k", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "watchos_i386"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "i386", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "apply_simulator_compiler_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_x86_64"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "x86_64", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "apply_simulator_compiler_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64"): - objcpp_compile_action = action_config( - action_name = ACTION_NAMES.objcpp_compile, - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = ["-arch", "x86_64", "-stdlib=libc++", "-std=gnu++11"], - ), - ], - ), - ], - implies = [ - "compiler_input_flags", - "compiler_output_flags", - "apply_default_compiler_flags", - "apply_default_warnings", - "framework_paths", - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - ], - tools = [ - tool( - path = "wrapped_clang_pp", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - objcpp_compile_action = None + objcpp_compile_action = action_config( + action_name = ACTION_NAMES.objcpp_compile, + flag_sets = [ + flag_set( + flag_groups = [ + flag_group( + flags = [ + "-arch", + arch, + "-stdlib=libc++", + "-std=gnu++11", + ], + ), + ], + ), + ], + implies = [ + "compiler_input_flags", + "compiler_output_flags", + "apply_default_compiler_flags", + "apply_default_warnings", + "framework_paths", + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "apply_simulator_compiler_flags", + ], + tools = [ + tool( + path = "wrapped_clang_pp", + execution_requirements = xcode_execution_requirements, + ), + ], + ) - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - assemble_action = action_config( - action_name = ACTION_NAMES.assemble, - implies = [ - "objc_arc", - "no_objc_arc", - "include_system_dirs", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - "unfiltered_cxx_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - assemble_action = action_config( - action_name = ACTION_NAMES.assemble, - implies = [ - "objc_arc", - "no_objc_arc", - "include_system_dirs", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - assemble_action = None + assemble_action = action_config( + action_name = ACTION_NAMES.assemble, + implies = [ + "objc_arc", + "no_objc_arc", + "include_system_dirs", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + "unfiltered_cxx_flags", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - preprocess_assemble_action = action_config( - action_name = ACTION_NAMES.preprocess_assemble, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - "unfiltered_cxx_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - preprocess_assemble_action = action_config( - action_name = ACTION_NAMES.preprocess_assemble, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - preprocess_assemble_action = None + preprocess_assemble_action = action_config( + action_name = ACTION_NAMES.preprocess_assemble, + implies = [ + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + "unfiltered_cxx_flags", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) - if (ctx.attr.cpu == "armeabi-v7a"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_arm64_32"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "arm64_32", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "darwin_arm64"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "arm64", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "darwin_arm64e"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "arm64e", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_armv7"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "armv7", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "armv7k", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "watchos_i386"): - objc_archive_action = action_config( - action_name = "objc-archive", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "i386", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], + objc_archive_action = action_config( + action_name = "objc-archive", + flag_sets = [ + flag_set( + flag_groups = [ + flag_group( + flags = _deterministic_libtool_flags(ctx) + [ + "-no_warning_for_no_symbols", + "-static", + "-filelist", + "%{obj_list_path}", + "-arch_only", + arch, + "-syslibroot", + "%{sdk_dir}", + "-o", + "%{output_execpath}", + ], + ), + ], + ), + ], + implies = ["apple_env"], + tools = [ + tool( + path = "libtool", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + objc_executable_action = action_config( + action_name = "objc-executable", + flag_sets = [ + flag_set( + flag_groups = [ + flag_group( + flags = [ + "-Xlinker", + "-objc_abi_version", + "-Xlinker", + "2", + "-fobjc-link-runtime", + "-ObjC", + ], + ), + ], + with_features = [with_feature_set(not_features = ["kernel_extension"])], + ), + flag_set( + flag_groups = [ + flag_group(flags = ["-arch", arch]), + flag_group( + flags = ["-framework", "%{framework_names}"], + iterate_over = "framework_names", + ), + flag_group( + flags = ["-weak_framework", "%{weak_framework_names}"], + iterate_over = "weak_framework_names", + ), + flag_group( + flags = ["-l%{library_names}"], + iterate_over = "library_names", + ), + flag_group(flags = ["-filelist", "%{filelist}"]), + flag_group(flags = ["-o", "%{linked_binary}"]), + flag_group( + flags = ["-force_load", "%{force_load_exec_paths}"], + iterate_over = "force_load_exec_paths", + ), + flag_group( + flags = ["%{dep_linkopts}"], + iterate_over = "dep_linkopts", + ), + flag_group( + flags = ["-Wl,%{attr_linkopts}"], + iterate_over = "attr_linkopts", + ), + ], + ), + ], + implies = [ + "include_system_dirs", + "framework_paths", + "version_min", + "strip_debug_symbols", + "apple_env", + "apply_implicit_frameworks", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + cpp_link_executable_action = action_config( + action_name = ACTION_NAMES.cpp_link_executable, + implies = [ + "contains_objc_source", + "symbol_counts", + "linkstamps", + "output_execpath_flags", + "runtime_root_flags", + "input_param_flags", + "force_pic_flags", + "strip_debug_symbols", + "linker_param_file", + "version_min", + "apple_env", + "sysroot", + "cpp_linker_flags", + ], + tools = [ + tool( + path = "cc_wrapper.sh", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + linkstamp_compile_action = action_config( + action_name = ACTION_NAMES.linkstamp_compile, + implies = [ + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + cpp_module_compile_action = action_config( + action_name = ACTION_NAMES.cpp_module_compile, + implies = [ + "preprocessor_defines", + "include_system_dirs", + "version_min", + "objc_arc", + "no_objc_arc", + "apple_env", + "user_compile_flags", + "sysroot", + "unfiltered_compile_flags", + "compiler_input_flags", + "compiler_output_flags", + "unfiltered_cxx_flags", + ], + tools = [ + tool( + path = "wrapped_clang", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + cpp_link_nodeps_dynamic_library_action = action_config( + action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, + implies = [ + "contains_objc_source", + "has_configured_linker_path", + "symbol_counts", + "shared_flag", + "linkstamps", + "output_execpath_flags", + "runtime_root_flags", + "input_param_flags", + "strip_debug_symbols", + "linker_param_file", + "version_min", + "apple_env", + "sysroot", + "cpp_linker_flags", + ], + tools = [ + tool( + path = "cc_wrapper.sh", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + objc_fully_link_action = action_config( + action_name = "objc-fully-link", + flag_sets = [ + flag_set( + flag_groups = [ + flag_group( + flags = _deterministic_libtool_flags(ctx) + [ + "-no_warning_for_no_symbols", + "-static", + "-arch_only", + arch, + "-syslibroot", + "%{sdk_dir}", + "-o", + "%{fully_linked_archive_path}", + ], + ), + flag_group( + flags = ["%{objc_library_exec_paths}"], + iterate_over = "objc_library_exec_paths", + ), + flag_group( + flags = ["%{cc_library_exec_paths}"], + iterate_over = "cc_library_exec_paths", + ), + flag_group( + flags = ["%{imported_library_exec_paths}"], + iterate_over = "imported_library_exec_paths", + ), + ], + ), + ], + implies = ["apple_env"], + tools = [ + tool( + path = "libtool", + execution_requirements = xcode_execution_requirements, + ), + ], + ) + + if (ctx.attr.cpu == "armeabi-v7a"): + objcopy_embed_data_action = action_config( + action_name = "objcopy_embed_data", + enabled = True, + tools = [tool(path = "/bin/false")], ) elif (ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e" or + ctx.attr.cpu == "ios_arm64" or + ctx.attr.cpu == "ios_arm64e" or + ctx.attr.cpu == "ios_armv7" or + ctx.attr.cpu == "ios_i386" or ctx.attr.cpu == "ios_x86_64" or + ctx.attr.cpu == "tvos_arm64" or ctx.attr.cpu == "tvos_x86_64" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_armv7k" or + ctx.attr.cpu == "watchos_i386" or ctx.attr.cpu == "watchos_x86_64"): - objc_archive_action = action_config( - action_name = "objc-archive", + objcopy_embed_data_action = action_config( + action_name = "objcopy_embed_data", + enabled = True, + tools = [tool(path = "/usr/bin/objcopy")], + ) + else: + objcopy_embed_data_action = None + + action_configs = [ + strip_action, + c_compile_action, + cpp_compile_action, + linkstamp_compile_action, + cpp_module_compile_action, + cpp_header_parsing_action, + objc_compile_action, + objcpp_compile_action, + assemble_action, + preprocess_assemble_action, + objc_archive_action, + objc_executable_action, + objcpp_executable_action, + cpp_link_executable_action, + cpp_link_dynamic_library_action, + cpp_link_nodeps_dynamic_library_action, + cpp_link_static_library_action, + objc_fully_link_action, + objcopy_embed_data_action, + ] + + if (ctx.attr.cpu == "armeabi-v7a" or + ctx.attr.cpu == "ios_arm64" or + ctx.attr.cpu == "ios_arm64e" or + ctx.attr.cpu == "ios_armv7" or + ctx.attr.cpu == "ios_i386" or + ctx.attr.cpu == "ios_x86_64" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_armv7k" or + ctx.attr.cpu == "watchos_i386" or + ctx.attr.cpu == "watchos_x86_64"): + apply_default_compiler_flags_feature = feature( + name = "apply_default_compiler_flags", flag_sets = [ flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-filelist", - "%{obj_list_path}", - "-arch_only", - "x86_64", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{output_execpath}", - ], - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, + actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], + flag_groups = [flag_group(flags = ["-DOS_IOS", "-fno-autolink"])], ), ], ) - else: - objc_archive_action = None - - if (ctx.attr.cpu == "armeabi-v7a"): - objc_executable_action = action_config( - action_name = "objc-executable", + elif (ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e"): + apply_default_compiler_flags_feature = feature( + name = "apply_default_compiler_flags", flag_sets = [ flag_set( - flag_groups = [ - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), - ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], - ), - flag_set( - flag_groups = [ - flag_group(flags = ["-arch", ""]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], + actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], + flag_groups = [flag_group(flags = ["-DOS_MACOSX", "-fno-autolink"])], ), ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, + ) + elif (ctx.attr.cpu == "tvos_arm64" or + ctx.attr.cpu == "tvos_x86_64"): + apply_default_compiler_flags_feature = feature( + name = "apply_default_compiler_flags", + flag_sets = [ + flag_set( + actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], + flag_groups = [flag_group(flags = ["-DOS_TVOS", "-fno-autolink"])], ), ], ) - elif (ctx.attr.cpu == "watchos_arm64_32"): - objc_executable_action = action_config( - action_name = "objc-executable", + else: + apply_default_compiler_flags_feature = None + + dynamic_linking_mode_feature = feature(name = "dynamic_linking_mode") + + compile_all_modules_feature = feature(name = "compile_all_modules") + + runtime_root_flags_feature = feature( + name = "runtime_root_flags", + flag_sets = [ + flag_set( + actions = all_link_actions + + [ACTION_NAMES.cpp_link_static_library], + flag_groups = [ + flag_group( + flags = [ + "-Wl,-rpath,@loader_path/%{runtime_library_search_directories}", + ], + iterate_over = "runtime_library_search_directories", + expand_if_available = "runtime_library_search_directories", + ), + ], + ), + flag_set( + actions = all_link_actions + + [ACTION_NAMES.cpp_link_static_library], + flag_groups = [ + flag_group( + flags = ["%{runtime_root_flags}"], + iterate_over = "runtime_root_flags", + expand_if_available = "runtime_root_flags", + ), + ], + ), + flag_set( + actions = all_link_actions + + [ACTION_NAMES.cpp_link_static_library], + flag_groups = [ + flag_group( + flags = ["%{runtime_root_entries}"], + iterate_over = "runtime_root_entries", + expand_if_available = "runtime_root_entries", + ), + ], + ), + ], + ) + + objc_arc_feature = feature( + name = "objc_arc", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-fobjc-arc"], + expand_if_available = "objc_arc", + ), + ], + ), + ], + ) + + if (ctx.attr.cpu == "tvos_arm64" or + ctx.attr.cpu == "tvos_x86_64"): + unfiltered_cxx_flags_feature = feature( + name = "unfiltered_cxx_flags", flag_sets = [ flag_set( - flag_groups = [ - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], - ), - flag_set( flag_groups = [ - flag_group(flags = ["-arch", "arm64_32"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), + flag_group(flags = ["-no-canonical-prefixes", "-pthread"]), ], ), ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], ) - elif (ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "darwin_arm64"): - objc_executable_action = action_config( - action_name = "objc-executable", + elif (ctx.attr.cpu == "armeabi-v7a" or + ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e" or + ctx.attr.cpu == "ios_arm64" or + ctx.attr.cpu == "ios_arm64e" or + ctx.attr.cpu == "ios_armv7" or + ctx.attr.cpu == "ios_i386" or + ctx.attr.cpu == "ios_x86_64" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_armv7k" or + ctx.attr.cpu == "watchos_i386" or + ctx.attr.cpu == "watchos_x86_64"): + unfiltered_cxx_flags_feature = feature(name = "unfiltered_cxx_flags") + else: + unfiltered_cxx_flags_feature = None + + compiler_input_flags_feature = feature( + name = "compiler_input_flags", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-c", "%{source_file}"], + expand_if_available = "source_file", + ), + ], + ), + ], + ) + + strip_debug_symbols_feature = feature( + name = "strip_debug_symbols", + flag_sets = [ + flag_set( + actions = all_link_actions + + ["objc-executable", "objc++-executable"], + flag_groups = [ + flag_group( + flags = ["-Wl,-S"], + expand_if_available = "strip_debug_symbols", + ), + ], + ), + ], + ) + + shared_flag_feature = feature( + name = "shared_flag", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ], + flag_groups = [flag_group(flags = ["-shared"])], + ), + ], + ) + + if (ctx.attr.cpu == "ios_i386" or + ctx.attr.cpu == "ios_x86_64" or + ctx.attr.cpu == "tvos_x86_64" or + ctx.attr.cpu == "watchos_i386" or + ctx.attr.cpu == "watchos_x86_64"): + apply_simulator_compiler_flags_feature = feature( + name = "apply_simulator_compiler_flags", flag_sets = [ flag_set( + actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], flag_groups = [ flag_group( flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", + "-fexceptions", + "-fasm-blocks", + "-fobjc-abi-version=2", + "-fobjc-legacy-dispatch", ], ), ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], - ), - flag_set( - flag_groups = [ - flag_group(flags = ["-arch", "arm64"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), - ], - ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, ), ], ) - elif (ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "darwin_arm64e"): - objc_executable_action = action_config( - action_name = "objc-executable", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], - ), + elif (ctx.attr.cpu == "armeabi-v7a" or + ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e" or + ctx.attr.cpu == "ios_arm64" or + ctx.attr.cpu == "ios_arm64e" or + ctx.attr.cpu == "ios_armv7" or + ctx.attr.cpu == "tvos_arm64" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_armv7k"): + apply_simulator_compiler_flags_feature = feature(name = "apply_simulator_compiler_flags") + else: + apply_simulator_compiler_flags_feature = None + + supports_pic_feature = feature(name = "supports_pic", enabled = True) + + fastbuild_feature = feature(name = "fastbuild") + + no_legacy_features_feature = feature(name = "no_legacy_features") + + symbol_counts_feature = feature( + name = "symbol_counts", + flag_sets = [ + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["-Wl,--print-symbol-counts=%{symbol_counts_output}"], + expand_if_available = "symbol_counts_output", + ), + ], + ), + ], + ) + + user_link_flags_feature = feature( + name = "user_link_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = all_link_actions + + ["objc-executable", "objc++-executable"], + flag_groups = [ + flag_group( + flags = ["%{user_link_flags}"], + iterate_over = "user_link_flags", + expand_if_available = "user_link_flags", + ), + ], + ), + ], + ) + + if (ctx.attr.cpu == "armeabi-v7a" or + ctx.attr.cpu == "ios_arm64" or + ctx.attr.cpu == "ios_arm64e" or + ctx.attr.cpu == "ios_armv7" or + ctx.attr.cpu == "ios_i386" or + ctx.attr.cpu == "ios_x86_64" or + ctx.attr.cpu == "tvos_arm64" or + ctx.attr.cpu == "tvos_x86_64" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_armv7k" or + ctx.attr.cpu == "watchos_i386" or + ctx.attr.cpu == "watchos_x86_64"): + contains_objc_source_feature = feature( + name = "contains_objc_source", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.cpp_link_executable, ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], + flag_groups = [flag_group(flags = ["-fobjc-link-runtime"])], ), flag_set( - flag_groups = [ - flag_group(flags = ["-arch", "arm64e"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.cpp_link_executable, ], + flag_groups = [flag_group(flags = ["-framework", "UIKit"])], ), ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, + ) + elif (ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e"): + contains_objc_source_feature = feature( + name = "contains_objc_source", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.cpp_link_executable, + ], + flag_groups = [flag_group(flags = ["-fobjc-link-runtime"])], ), ], ) - elif (ctx.attr.cpu == "ios_armv7"): - objc_executable_action = action_config( - action_name = "objc-executable", + else: + contains_objc_source_feature = None + + includes_feature = feature( + name = "includes", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["-include", "%{includes}"], + iterate_over = "includes", + expand_if_available = "includes", + ), + ], + ), + ], + ) + + gcc_coverage_map_format_feature = feature( + name = "gcc_coverage_map_format", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-fprofile-arcs", "-ftest-coverage", "-g"], + ), + ], + ), + flag_set( + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.cpp_link_executable, + ], + flag_groups = [flag_group(flags = ["--coverage"])], + ), + ], + requires = [feature_set(features = ["coverage"])], + ) + + if (ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e"): + default_link_flags_feature = feature( + name = "default_link_flags", + enabled = True, flag_sets = [ flag_set( + actions = all_link_actions + + ["objc-executable", "objc++-executable"], flag_groups = [ flag_group( flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", + "-no-canonical-prefixes", + "-target", + target_system_name, ], ), ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], ), flag_set( - flag_groups = [ - flag_group(flags = ["-arch", "armv7"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", - ), + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, ], + flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], ), - ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, + flag_set( + actions = [ + ACTION_NAMES.cpp_link_executable, + "objc-executable", + "objc++-executable", + ], + flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], + with_features = [with_feature_set(features = ["dynamic_linking_mode"])], ), ], ) - elif (ctx.attr.cpu == "watchos_armv7k"): - objc_executable_action = action_config( - action_name = "objc-executable", + elif (ctx.attr.cpu == "armeabi-v7a" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_x86_64"): + default_link_flags_feature = feature( + name = "default_link_flags", + enabled = True, flag_sets = [ flag_set( + actions = all_link_actions + + ["objc-executable", "objc++-executable"], flag_groups = [ flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], + flags = ["-no-canonical-prefixes"], ), ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], ), + ], + ) + else: + default_link_flags_feature = feature( + name = "default_link_flags", + enabled = True, + flag_sets = [ flag_set( + actions = all_link_actions + + ["objc-executable", "objc++-executable"], flag_groups = [ - flag_group(flags = ["-arch", "armv7k"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", + flags = [ + "-no-canonical-prefixes", + "-target", + target_system_name, + ], ), ], ), ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], ) - elif (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "watchos_i386"): - objc_executable_action = action_config( - action_name = "objc-executable", - flag_sets = [ - flag_set( + + output_execpath_flags_feature = feature( + name = "output_execpath_flags", + flag_sets = [ + flag_set( + actions = all_link_actions, + flag_groups = [ + flag_group( + flags = ["-o", "%{output_execpath}"], + expand_if_available = "output_execpath", + ), + ], + ), + ], + ) + + pic_feature = feature( + name = "pic", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.preprocess_assemble, + ], + flag_groups = [ + flag_group(flags = ["-fPIC"], expand_if_available = "pic"), + ], + ), + ], + ) + + framework_paths_feature = feature( + name = "framework_paths", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-F%{framework_include_paths}"], + iterate_over = "framework_include_paths", + ), + ], + ), + flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ], + flag_groups = [ + flag_group( + flags = ["-F%{framework_paths}"], + iterate_over = "framework_paths", + ), + ], + ), + ], + ) + + if ctx.attr.cpu == "armeabi-v7a": + # This stub doesn't have a sensible value for this feature + version_min_feature = feature(name = "version_min") + elif (ctx.attr.cpu == "ios_i386" or + ctx.attr.cpu == "ios_x86_64"): + version_min_feature = feature( + name = "version_min", + flag_sets = [ + flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], flag_groups = [ flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], + flags = ["-mios-simulator-version-min=%{version_min}"], ), ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], ), + ], + ) + elif (ctx.attr.cpu == "ios_arm64" or + ctx.attr.cpu == "ios_arm64e" or + ctx.attr.cpu == "ios_armv7"): + version_min_feature = feature( + name = "version_min", + flag_sets = [ flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], flag_groups = [ - flag_group(flags = ["-arch", "i386"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), - flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", + flags = ["-miphoneos-version-min=%{version_min}"], ), ], ), ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_x86_64"): - objc_executable_action = action_config( - action_name = "objc-executable", + elif (ctx.attr.cpu == "tvos_x86_64"): + version_min_feature = feature( + name = "version_min", flag_sets = [ flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], flag_groups = [ flag_group( - flags = [ - "-Xlinker", - "-objc_abi_version", - "-Xlinker", - "2", - "-fobjc-link-runtime", - "-ObjC", - ], + flags = ["-mtvos-simulator-version-min=%{version_min}"], ), ], - with_features = [with_feature_set(not_features = ["kernel_extension"])], ), + ], + ) + elif (ctx.attr.cpu == "watchos_i386" or ctx.attr.cpu == "watchos_x86_64"): + version_min_feature = feature( + name = "version_min", + flag_sets = [ flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], flag_groups = [ - flag_group(flags = ["-arch", "x86_64"]), - flag_group( - flags = ["-framework", "%{framework_names}"], - iterate_over = "framework_names", - ), - flag_group( - flags = ["-weak_framework", "%{weak_framework_names}"], - iterate_over = "weak_framework_names", - ), - flag_group( - flags = ["-l%{library_names}"], - iterate_over = "library_names", - ), - flag_group(flags = ["-filelist", "%{filelist}"]), - flag_group(flags = ["-o", "%{linked_binary}"]), - flag_group( - flags = ["-force_load", "%{force_load_exec_paths}"], - iterate_over = "force_load_exec_paths", - ), - flag_group( - flags = ["%{dep_linkopts}"], - iterate_over = "dep_linkopts", - ), flag_group( - flags = ["-Wl,%{attr_linkopts}"], - iterate_over = "attr_linkopts", + flags = ["-mwatchos-simulator-version-min=%{version_min}"], ), ], ), ], - implies = [ - "include_system_dirs", - "framework_paths", - "version_min", - "strip_debug_symbols", - "apple_env", - "apply_implicit_frameworks", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, + ) + elif (ctx.attr.cpu == "watchos_armv7k" or ctx.attr.cpu == "watchos_arm64_32"): + version_min_feature = feature( + name = "version_min", + flag_sets = [ + flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-mwatchos-version-min=%{version_min}"], + ), + ], ), ], ) - else: - objc_executable_action = None - - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - cpp_link_executable_action = action_config( - action_name = ACTION_NAMES.cpp_link_executable, - implies = [ - "contains_objc_source", - "symbol_counts", - "linkstamps", - "output_execpath_flags", - "runtime_root_flags", - "input_param_flags", - "force_pic_flags", - "strip_debug_symbols", - "linker_param_file", - "version_min", - "apple_env", - "sysroot", - "cpp_linker_flags", - ], - tools = [ - tool( - path = "cc_wrapper.sh", - execution_requirements = xcode_execution_requirements, + elif (ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e"): + version_min_feature = feature( + name = "version_min", + flag_sets = [ + flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group(flags = ["-mmacosx-version-min=%{version_min}"]), + ], ), ], ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - cpp_link_executable_action = action_config( - action_name = ACTION_NAMES.cpp_link_executable, - implies = [ - "contains_objc_source", - "symbol_counts", - "linkstamps", - "output_execpath_flags", - "runtime_root_flags", - "input_param_flags", - "force_pic_flags", - "strip_debug_symbols", - "linker_param_file", - "version_min", - "apple_env", - "sysroot", - ], - tools = [ - tool( - path = "cc_wrapper.sh", - execution_requirements = xcode_execution_requirements, + elif (ctx.attr.cpu == "tvos_arm64"): + version_min_feature = feature( + name = "version_min", + flag_sets = [ + flag_set( + actions = [ + "objc-executable", + "objc++-executable", + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [flag_group(flags = ["-mtvos-version-min=%{version_min}"])], ), ], ) else: - cpp_link_executable_action = None + version_min_feature = None - linkstamp_compile_action = action_config( - action_name = ACTION_NAMES.linkstamp_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", + compiler_output_flags_feature = feature( + name = "compiler_output_flags", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-S"], + expand_if_available = "output_assembly_file", + ), + flag_group( + flags = ["-E"], + expand_if_available = "output_preprocess_file", + ), + flag_group( + flags = ["-o", "%{output_file}"], + expand_if_available = "output_file", + ), + ], + ), ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, + ) + + opt_feature = feature(name = "opt") + + pch_feature = feature( + name = "pch", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ], + flag_groups = [ + flag_group( + flags = [ + "-include", + "%{pch_file}", + ], + expand_if_available = "pch_file", + ), + ], ), ], ) - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - cpp_module_compile_action = action_config( - action_name = ACTION_NAMES.cpp_module_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - "unfiltered_cxx_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - cpp_module_compile_action = action_config( - action_name = ACTION_NAMES.cpp_module_compile, - implies = [ - "preprocessor_defines", - "include_system_dirs", - "version_min", - "objc_arc", - "no_objc_arc", - "apple_env", - "user_compile_flags", - "sysroot", - "unfiltered_compile_flags", - "compiler_input_flags", - "compiler_output_flags", - ], - tools = [ - tool( - path = "wrapped_clang", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - cpp_module_compile_action = None + coverage_feature = feature(name = "coverage") - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - cpp_link_nodeps_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, - implies = [ - "contains_objc_source", - "has_configured_linker_path", - "symbol_counts", - "shared_flag", - "linkstamps", - "output_execpath_flags", - "runtime_root_flags", - "input_param_flags", - "strip_debug_symbols", - "linker_param_file", - "version_min", - "apple_env", - "sysroot", - "cpp_linker_flags", - ], - tools = [ - tool( - path = "cc_wrapper.sh", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - cpp_link_nodeps_dynamic_library_action = action_config( - action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, - implies = [ - "contains_objc_source", - "has_configured_linker_path", - "symbol_counts", - "shared_flag", - "linkstamps", - "output_execpath_flags", - "runtime_root_flags", - "input_param_flags", - "strip_debug_symbols", - "linker_param_file", - "version_min", - "apple_env", - "sysroot", - ], - tools = [ - tool( - path = "cc_wrapper.sh", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - cpp_link_nodeps_dynamic_library_action = None + include_system_dirs_feature = feature( + name = "include_system_dirs", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + "objc-executable", + "objc++-executable", + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ], + flag_groups = [ + flag_group( + flags = [ + "-isysroot", + "%{sdk_dir}", + "-F%{sdk_framework_dir}", + "-F%{platform_developer_framework_dir}", + ], + ), + ], + ), + ], + ) - if (ctx.attr.cpu == "armeabi-v7a"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_arm64_32"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "arm64_32", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "tvos_arm64"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "arm64", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64e"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "arm64e", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_armv7"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "armv7", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "armv7k", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "watchos_i386"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "i386", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_x86_64"): - objc_fully_link_action = action_config( - action_name = "objc-fully-link", - flag_sets = [ - flag_set( - flag_groups = [ - flag_group( - flags = _deterministic_libtool_flags(ctx) + [ - "-no_warning_for_no_symbols", - "-static", - "-arch_only", - "x86_64", - "-syslibroot", - "%{sdk_dir}", - "-o", - "%{fully_linked_archive_path}", - ], - ), - flag_group( - flags = ["%{objc_library_exec_paths}"], - iterate_over = "objc_library_exec_paths", - ), - flag_group( - flags = ["%{cc_library_exec_paths}"], - iterate_over = "cc_library_exec_paths", - ), - flag_group( - flags = ["%{imported_library_exec_paths}"], - iterate_over = "imported_library_exec_paths", - ), - ], - ), - ], - implies = ["apple_env"], - tools = [ - tool( - path = "libtool", - execution_requirements = xcode_execution_requirements, - ), - ], - ) - else: - objc_fully_link_action = None - - if (ctx.attr.cpu == "armeabi-v7a"): - objcopy_embed_data_action = action_config( - action_name = "objcopy_embed_data", - enabled = True, - tools = [tool(path = "/bin/false")], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - objcopy_embed_data_action = action_config( - action_name = "objcopy_embed_data", - enabled = True, - tools = [tool(path = "/usr/bin/objcopy")], - ) - else: - objcopy_embed_data_action = None - - action_configs = [ - strip_action, - c_compile_action, - cpp_compile_action, - linkstamp_compile_action, - cpp_module_compile_action, - cpp_header_parsing_action, - objc_compile_action, - objcpp_compile_action, - assemble_action, - preprocess_assemble_action, - objc_archive_action, - objc_executable_action, - objcpp_executable_action, - cpp_link_executable_action, - cpp_link_dynamic_library_action, - cpp_link_nodeps_dynamic_library_action, - cpp_link_static_library_action, - objc_fully_link_action, - objcopy_embed_data_action, - ] - - if (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - apply_default_compiler_flags_feature = feature( - name = "apply_default_compiler_flags", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], - flag_groups = [flag_group(flags = ["-DOS_IOS", "-fno-autolink"])], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e"): - apply_default_compiler_flags_feature = feature( - name = "apply_default_compiler_flags", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], - flag_groups = [flag_group(flags = ["-DOS_MACOSX", "-fno-autolink"])], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - apply_default_compiler_flags_feature = feature( - name = "apply_default_compiler_flags", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], - flag_groups = [flag_group(flags = ["-DOS_TVOS", "-fno-autolink"])], - ), - ], - ) - else: - apply_default_compiler_flags_feature = None - - dynamic_linking_mode_feature = feature(name = "dynamic_linking_mode") - - compile_all_modules_feature = feature(name = "compile_all_modules") - - runtime_root_flags_feature = feature( - name = "runtime_root_flags", + input_param_flags_feature = feature( + name = "input_param_flags", flag_sets = [ flag_set( actions = all_link_actions + [ACTION_NAMES.cpp_link_static_library], flag_groups = [ flag_group( - flags = [ - "-Wl,-rpath,@loader_path/%{runtime_library_search_directories}", - ], - iterate_over = "runtime_library_search_directories", - expand_if_available = "runtime_library_search_directories", + flags = ["-L%{library_search_directories}"], + iterate_over = "library_search_directories", + expand_if_available = "library_search_directories", ), ], ), @@ -2993,9 +1677,9 @@ def _impl(ctx): [ACTION_NAMES.cpp_link_static_library], flag_groups = [ flag_group( - flags = ["%{runtime_root_flags}"], - iterate_over = "runtime_root_flags", - expand_if_available = "runtime_root_flags", + flags = ["%{libopts}"], + iterate_over = "libopts", + expand_if_available = "libopts", ), ], ), @@ -3004,203 +1688,212 @@ def _impl(ctx): [ACTION_NAMES.cpp_link_static_library], flag_groups = [ flag_group( - flags = ["%{runtime_root_entries}"], - iterate_over = "runtime_root_entries", - expand_if_available = "runtime_root_entries", + flags = ["-Wl,-force_load,%{whole_archive_linker_params}"], + iterate_over = "whole_archive_linker_params", + expand_if_available = "whole_archive_linker_params", ), ], ), - ], - ) - - objc_arc_feature = feature( - name = "objc_arc", - flag_sets = [ flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], + actions = all_link_actions + + [ACTION_NAMES.cpp_link_static_library], flag_groups = [ flag_group( - flags = ["-fobjc-arc"], - expand_if_available = "objc_arc", + flags = ["%{linker_input_params}"], + iterate_over = "linker_input_params", + expand_if_available = "linker_input_params", ), ], ), - ], - ) - - if (ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64"): - unfiltered_cxx_flags_feature = feature( - name = "unfiltered_cxx_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ], - flag_groups = [ - flag_group(flags = ["-no-canonical-prefixes", "-pthread"]), - ], - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - unfiltered_cxx_flags_feature = feature(name = "unfiltered_cxx_flags") - else: - unfiltered_cxx_flags_feature = None + flag_set( + actions = all_link_actions + + [ACTION_NAMES.cpp_link_static_library], + flag_groups = [ + flag_group( + iterate_over = "libraries_to_link", + flag_groups = [ + flag_group( + iterate_over = "libraries_to_link.object_files", + flag_groups = [ + flag_group( + flags = ["%{libraries_to_link.object_files}"], + expand_if_false = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,-force_load,%{libraries_to_link.object_files}"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + ], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file_group", + ), + ), + flag_group( + flag_groups = [ + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_false = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,-force_load,%{libraries_to_link.name}"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + ], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "object_file", + ), + ), + flag_group( + flag_groups = [ + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_false = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,-force_load,%{libraries_to_link.name}"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + ], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "interface_library", + ), + ), + flag_group( + flag_groups = [ + flag_group( + flags = ["%{libraries_to_link.name}"], + expand_if_false = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,-force_load,%{libraries_to_link.name}"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + ], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "static_library", + ), + ), + flag_group( + flag_groups = [ + flag_group( + flags = ["-l%{libraries_to_link.name}"], + expand_if_false = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,-force_load,-l%{libraries_to_link.name}"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + ], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "dynamic_library", + ), + ), + flag_group( + flag_groups = [ + flag_group( + flags = ["-l:%{libraries_to_link.name}"], + expand_if_false = "libraries_to_link.is_whole_archive", + ), + flag_group( + flags = ["-Wl,-force_load,-l:%{libraries_to_link.name}"], + expand_if_true = "libraries_to_link.is_whole_archive", + ), + ], + expand_if_equal = variable_with_value( + name = "libraries_to_link.type", + value = "versioned_dynamic_library", + ), + ), + ], + expand_if_available = "libraries_to_link", + ), + ], + ), + ], + ) - compiler_input_flags_feature = feature( - name = "compiler_input_flags", + per_object_debug_info_feature = feature( + name = "per_object_debug_info", flag_sets = [ flag_set( actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, ], flag_groups = [ flag_group( - flags = ["-c", "%{source_file}"], - expand_if_available = "source_file", + flags = ["-gsplit-dwarf"], + expand_if_available = "per_object_debug_info_file", ), ], ), ], ) - strip_debug_symbols_feature = feature( - name = "strip_debug_symbols", + lipo_feature = feature( + name = "lipo", flag_sets = [ flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = ["-Wl,-S"], - expand_if_available = "strip_debug_symbols", - ), - ], + actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], + flag_groups = [flag_group(flags = ["-fripa"])], ), ], + requires = [ + feature_set(features = ["autofdo"]), + feature_set(features = ["fdo_optimize"]), + feature_set(features = ["fdo_instrument"]), + ], ) - shared_flag_feature = feature( - name = "shared_flag", - flag_sets = [ - flag_set( + apple_env_feature = feature( + name = "apple_env", + env_sets = [ + env_set( actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + "objc-archive", + "objc-fully-link", + ACTION_NAMES.cpp_link_executable, ACTION_NAMES.cpp_link_dynamic_library, ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.cpp_link_static_library, + "objc-executable", + "objc++-executable", + ACTION_NAMES.linkstamp_compile, ], - flag_groups = [flag_group(flags = ["-shared"])], - ), - ], - ) - - if (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - apply_simulator_compiler_flags_feature = feature( - name = "apply_simulator_compiler_flags", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile], - flag_groups = [ - flag_group( - flags = [ - "-fexceptions", - "-fasm-blocks", - "-fobjc-abi-version=2", - "-fobjc-legacy-dispatch", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k"): - apply_simulator_compiler_flags_feature = feature(name = "apply_simulator_compiler_flags") - else: - apply_simulator_compiler_flags_feature = None - - supports_pic_feature = feature(name = "supports_pic", enabled = True) - - fastbuild_feature = feature(name = "fastbuild") - - no_legacy_features_feature = feature(name = "no_legacy_features") - - symbol_counts_feature = feature( - name = "symbol_counts", - flag_sets = [ - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["-Wl,--print-symbol-counts=%{symbol_counts_output}"], - expand_if_available = "symbol_counts_output", + env_entries = [ + env_entry( + key = "XCODE_VERSION_OVERRIDE", + value = "%{xcode_version_override_value}", ), - ], - ), - ], - ) - - user_link_flags_feature = feature( - name = "user_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = ["%{user_link_flags}"], - iterate_over = "user_link_flags", - expand_if_available = "user_link_flags", - ), - ], + env_entry( + key = "APPLE_SDK_VERSION_OVERRIDE", + value = "%{apple_sdk_version_override_value}", + ), + env_entry( + key = "APPLE_SDK_PLATFORM", + value = "%{apple_sdk_platform_value}", + ), + env_entry( + key = "ZERO_AR_DATE", + value = "1", + ), + ] + [env_entry(key = key, value = value) for key, value in ctx.attr.extra_env.items()], ), ], ) @@ -3209,1585 +1902,199 @@ def _impl(ctx): ctx.attr.cpu == "ios_arm64" or ctx.attr.cpu == "ios_arm64e" or ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - contains_objc_source_feature = feature( - name = "contains_objc_source", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.cpp_link_executable, - ], - flag_groups = [flag_group(flags = ["-fobjc-link-runtime"])], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.cpp_link_executable, - ], - flag_groups = [flag_group(flags = ["-framework", "UIKit"])], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e"): - contains_objc_source_feature = feature( - name = "contains_objc_source", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.cpp_link_executable, - ], - flag_groups = [flag_group(flags = ["-fobjc-link-runtime"])], - ), - ], - ) - else: - contains_objc_source_feature = None - - includes_feature = feature( - name = "includes", - enabled = True, - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["-include", "%{includes}"], - iterate_over = "includes", - expand_if_available = "includes", - ), - ], - ), - ], - ) - - gcc_coverage_map_format_feature = feature( - name = "gcc_coverage_map_format", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-fprofile-arcs", "-ftest-coverage", "-g"], - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.cpp_link_executable, - ], - flag_groups = [flag_group(flags = ["--coverage"])], - ), - ], - requires = [feature_set(features = ["coverage"])], - ) - - if (ctx.attr.cpu == "ios_arm64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "arm64-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_arm64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "arm64-apple-tvos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64e"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "arm64e-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_armv7"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "armv7-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "armv7-apple-watchos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_i386"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "i386-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_i386"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "i386-apple-watchos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_x86_64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "x86_64-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_x86_64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "x86_64-apple-tvos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "x86_64-apple-macosx", - ], - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_executable, - "objc-executable", - "objc++-executable", - ], - flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], - with_features = [with_feature_set(features = ["dynamic_linking_mode"])], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_arm64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "arm64-apple-macosx", - ], - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_executable, - "objc-executable", - "objc++-executable", - ], - flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], - with_features = [with_feature_set(features = ["dynamic_linking_mode"])], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_arm64e"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-target", - "arm64e-apple-macos", - ], - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ], - flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_executable, - "objc-executable", - "objc++-executable", - ], - flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])], - with_features = [with_feature_set(features = ["dynamic_linking_mode"])], - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_x86_64"): - default_link_flags_feature = feature( - name = "default_link_flags", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = ["-no-canonical-prefixes"], - ), - ], - ), - ], - ) - else: - fail("Unreachable") - - output_execpath_flags_feature = feature( - name = "output_execpath_flags", - flag_sets = [ - flag_set( - actions = all_link_actions, - flag_groups = [ - flag_group( - flags = ["-o", "%{output_execpath}"], - expand_if_available = "output_execpath", - ), - ], - ), - ], - ) - - pic_feature = feature( - name = "pic", - enabled = True, - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.preprocess_assemble, - ], - flag_groups = [ - flag_group(flags = ["-fPIC"], expand_if_available = "pic"), - ], - ), - ], - ) - - framework_paths_feature = feature( - name = "framework_paths", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-F%{framework_include_paths}"], - iterate_over = "framework_include_paths", - ), - ], - ), - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ], - flag_groups = [ - flag_group( - flags = ["-F%{framework_paths}"], - iterate_over = "framework_paths", - ), - ], - ), - ], - ) - - if ctx.attr.cpu == "armeabi-v7a": - # This stub doesn't have a sensible value for this feature - version_min_feature = feature(name = "version_min") - elif (ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-mios-simulator-version-min=%{version_min}"], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-miphoneos-version-min=%{version_min}"], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_x86_64"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-mtvos-simulator-version-min=%{version_min}"], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_i386" or ctx.attr.cpu == "watchos_x86_64"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-mwatchos-simulator-version-min=%{version_min}"], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k" or ctx.attr.cpu == "watchos_arm64_32"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-mwatchos-version-min=%{version_min}"], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group(flags = ["-mmacosx-version-min=%{version_min}"]), - ], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_arm64"): - version_min_feature = feature( - name = "version_min", - flag_sets = [ - flag_set( - actions = [ - "objc-executable", - "objc++-executable", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [flag_group(flags = ["-mtvos-version-min=%{version_min}"])], - ), - ], - ) - else: - version_min_feature = None - - compiler_output_flags_feature = feature( - name = "compiler_output_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-S"], - expand_if_available = "output_assembly_file", - ), - flag_group( - flags = ["-E"], - expand_if_available = "output_preprocess_file", - ), - flag_group( - flags = ["-o", "%{output_file}"], - expand_if_available = "output_file", - ), - ], - ), - ], - ) - - opt_feature = feature(name = "opt") - - pch_feature = feature( - name = "pch", - enabled = True, - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-include", - "%{pch_file}", - ], - expand_if_available = "pch_file", - ), - ], - ), - ], - ) - - coverage_feature = feature(name = "coverage") - - include_system_dirs_feature = feature( - name = "include_system_dirs", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - "objc-executable", - "objc++-executable", - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ], - flag_groups = [ - flag_group( - flags = [ - "-isysroot", - "%{sdk_dir}", - "-F%{sdk_framework_dir}", - "-F%{platform_developer_framework_dir}", - ], - ), - ], - ), - ], - ) - - input_param_flags_feature = feature( - name = "input_param_flags", - flag_sets = [ - flag_set( - actions = all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - flag_groups = [ - flag_group( - flags = ["-L%{library_search_directories}"], - iterate_over = "library_search_directories", - expand_if_available = "library_search_directories", - ), - ], - ), - flag_set( - actions = all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - flag_groups = [ - flag_group( - flags = ["%{libopts}"], - iterate_over = "libopts", - expand_if_available = "libopts", - ), - ], - ), - flag_set( - actions = all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - flag_groups = [ - flag_group( - flags = ["-Wl,-force_load,%{whole_archive_linker_params}"], - iterate_over = "whole_archive_linker_params", - expand_if_available = "whole_archive_linker_params", - ), - ], - ), - flag_set( - actions = all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - flag_groups = [ - flag_group( - flags = ["%{linker_input_params}"], - iterate_over = "linker_input_params", - expand_if_available = "linker_input_params", - ), - ], - ), - flag_set( - actions = all_link_actions + - [ACTION_NAMES.cpp_link_static_library], - flag_groups = [ - flag_group( - iterate_over = "libraries_to_link", - flag_groups = [ - flag_group( - iterate_over = "libraries_to_link.object_files", - flag_groups = [ - flag_group( - flags = ["%{libraries_to_link.object_files}"], - expand_if_false = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,-force_load,%{libraries_to_link.object_files}"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - ], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file_group", - ), - ), - flag_group( - flag_groups = [ - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_false = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,-force_load,%{libraries_to_link.name}"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - ], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "object_file", - ), - ), - flag_group( - flag_groups = [ - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_false = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,-force_load,%{libraries_to_link.name}"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - ], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "interface_library", - ), - ), - flag_group( - flag_groups = [ - flag_group( - flags = ["%{libraries_to_link.name}"], - expand_if_false = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,-force_load,%{libraries_to_link.name}"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - ], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "static_library", - ), - ), - flag_group( - flag_groups = [ - flag_group( - flags = ["-l%{libraries_to_link.name}"], - expand_if_false = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,-force_load,-l%{libraries_to_link.name}"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - ], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "dynamic_library", - ), - ), - flag_group( - flag_groups = [ - flag_group( - flags = ["-l:%{libraries_to_link.name}"], - expand_if_false = "libraries_to_link.is_whole_archive", - ), - flag_group( - flags = ["-Wl,-force_load,-l:%{libraries_to_link.name}"], - expand_if_true = "libraries_to_link.is_whole_archive", - ), - ], - expand_if_equal = variable_with_value( - name = "libraries_to_link.type", - value = "versioned_dynamic_library", - ), - ), - ], - expand_if_available = "libraries_to_link", - ), - ], - ), - ], - ) - - per_object_debug_info_feature = feature( - name = "per_object_debug_info", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ], - flag_groups = [ - flag_group( - flags = ["-gsplit-dwarf"], - expand_if_available = "per_object_debug_info_file", - ), - ], - ), - ], - ) - - lipo_feature = feature( - name = "lipo", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], - flag_groups = [flag_group(flags = ["-fripa"])], - ), - ], - requires = [ - feature_set(features = ["autofdo"]), - feature_set(features = ["fdo_optimize"]), - feature_set(features = ["fdo_instrument"]), - ], - ) - - apple_env_feature = feature( - name = "apple_env", - env_sets = [ - env_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - "objc-archive", - "objc-fully-link", - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.cpp_link_static_library, - "objc-executable", - "objc++-executable", - ACTION_NAMES.linkstamp_compile, - ], - env_entries = [ - env_entry( - key = "XCODE_VERSION_OVERRIDE", - value = "%{xcode_version_override_value}", - ), - env_entry( - key = "APPLE_SDK_VERSION_OVERRIDE", - value = "%{apple_sdk_version_override_value}", - ), - env_entry( - key = "APPLE_SDK_PLATFORM", - value = "%{apple_sdk_platform_value}", - ), - env_entry( - key = "ZERO_AR_DATE", - value = "1", - ), - ] + [env_entry(key = key, value = value) for key, value in ctx.attr.extra_env.items()], - ), - ], - ) - - if (ctx.attr.cpu == "armeabi-v7a" or - ctx.attr.cpu == "ios_arm64" or - ctx.attr.cpu == "ios_arm64e" or - ctx.attr.cpu == "ios_armv7" or - ctx.attr.cpu == "ios_i386" or - ctx.attr.cpu == "ios_x86_64" or - ctx.attr.cpu == "tvos_arm64" or - ctx.attr.cpu == "tvos_x86_64" or - ctx.attr.cpu == "watchos_arm64_32" or - ctx.attr.cpu == "watchos_armv7k" or - ctx.attr.cpu == "watchos_i386" or - ctx.attr.cpu == "watchos_x86_64"): - apply_implicit_frameworks_feature = feature( - name = "apply_implicit_frameworks", - flag_sets = [ - flag_set( - actions = ["objc-executable", "objc++-executable"], - flag_groups = [ - flag_group( - flags = ["-framework", "Foundation", "-framework", "UIKit"], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "darwin_x86_64" or - ctx.attr.cpu == "darwin_arm64" or - ctx.attr.cpu == "darwin_arm64e"): - apply_implicit_frameworks_feature = feature( - name = "apply_implicit_frameworks", - flag_sets = [ - flag_set( - actions = ["objc-executable", "objc++-executable"], - flag_groups = [flag_group(flags = ["-framework", "Foundation"])], - with_features = [with_feature_set(not_features = ["kernel_extension"])], - ), - ], - ) - else: - apply_implicit_frameworks_feature = None - - dbg_feature = feature(name = "dbg") - - has_configured_linker_path_feature = feature(name = "has_configured_linker_path") - - random_seed_feature = feature( - name = "random_seed", - enabled = True, - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.cpp_module_compile, - ], - flag_groups = [ - flag_group( - flags = ["-frandom-seed=%{output_file}"], - expand_if_available = "output_file", - ), - ], - ), - ], - ) - - llvm_coverage_map_format_feature = feature( - name = "llvm_coverage_map_format", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ], - flag_groups = [ - flag_group( - flags = ["-fprofile-instr-generate", "-fcoverage-mapping", "-g"], - ), - ], - ), - flag_set( - actions = [ - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.cpp_link_executable, - "objc-executable", - "objc++-executable", - ], - flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])], - ), - ], - requires = [feature_set(features = ["coverage"])], - ) - - force_pic_flags_feature = feature( - name = "force_pic_flags", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.cpp_link_executable], - flag_groups = [ - flag_group( - flags = ["-Wl,-pie"], - expand_if_available = "force_pic", - ), - ], - ), - ], - ) - - sysroot_feature = feature( - name = "sysroot", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.objc_compile, - ACTION_NAMES.objcpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_link_executable, - ACTION_NAMES.cpp_link_dynamic_library, - ACTION_NAMES.cpp_link_nodeps_dynamic_library, - ACTION_NAMES.linkstamp_compile, - ACTION_NAMES.clif_match, - ], - flag_groups = [ - flag_group( - flags = ["--sysroot=%{sysroot}"], - expand_if_available = "sysroot", - ), - ], - ), - ], - ) - - autofdo_feature = feature( - name = "autofdo", - flag_sets = [ - flag_set( - actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], - flag_groups = [ - flag_group( - flags = [ - "-fauto-profile=%{fdo_profile_path}", - "-fprofile-correction", - ], - expand_if_available = "fdo_profile_path", - ), - ], - ), - ], - provides = ["profile"], - ) - - link_libcpp_feature = feature( - name = "link_libc++", - enabled = True, - flag_sets = [ - flag_set( - actions = all_link_actions + - ["objc-executable", "objc++-executable"], - flag_groups = [flag_group(flags = ["-lc++"])], - with_features = [with_feature_set(not_features = ["kernel_extension"])], - ), - ], - ) - - objc_actions_feature = feature( - name = "objc_actions", - implies = [ - "objc-compile", - "objc++-compile", - "objc-fully-link", - "objc-archive", - "objc-executable", - "objc++-executable", - "assemble", - "preprocess-assemble", - "c-compile", - "c++-compile", - "c++-link-static-library", - "c++-link-dynamic-library", - "c++-link-nodeps-dynamic-library", - "c++-link-executable", - ], - ) - - module_maps_feature = feature(name = "module_maps", enabled = True) - - if (ctx.attr.cpu == "ios_arm64"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "arm64-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_arm64"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "arm64-apple-tvos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_arm64e"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "arm64e-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_arm64_32"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "arm64_32-apple-watchos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_armv7"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "armv7-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_armv7k"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "armv7k-apple-watchos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_i386"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "i386-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_i386"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "i386-apple-watchos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "ios_x86_64"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "x86_64-apple-ios", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "tvos_x86_64"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "x86_64-apple-tvos", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "watchos_x86_64"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", + ctx.attr.cpu == "ios_i386" or + ctx.attr.cpu == "ios_x86_64" or + ctx.attr.cpu == "tvos_arm64" or + ctx.attr.cpu == "tvos_x86_64" or + ctx.attr.cpu == "watchos_arm64_32" or + ctx.attr.cpu == "watchos_armv7k" or + ctx.attr.cpu == "watchos_i386" or + ctx.attr.cpu == "watchos_x86_64"): + apply_implicit_frameworks_feature = feature( + name = "apply_implicit_frameworks", flag_sets = [ flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], + actions = ["objc-executable", "objc++-executable"], flag_groups = [ flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "x86_64-apple-watchos", - ], + flags = ["-framework", "Foundation", "-framework", "UIKit"], ), ], ), ], ) - elif (ctx.attr.cpu == "darwin_arm64"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", + elif (ctx.attr.cpu == "darwin_x86_64" or + ctx.attr.cpu == "darwin_arm64" or + ctx.attr.cpu == "darwin_arm64e"): + apply_implicit_frameworks_feature = feature( + name = "apply_implicit_frameworks", flag_sets = [ flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", - "-target", - "arm64-apple-macosx", - ], - ), - ], + actions = ["objc-executable", "objc++-executable"], + flag_groups = [flag_group(flags = ["-framework", "Foundation"])], + with_features = [with_feature_set(not_features = ["kernel_extension"])], ), ], ) - elif (ctx.attr.cpu == "darwin_arm64e"): + else: + apply_implicit_frameworks_feature = None + + dbg_feature = feature(name = "dbg") + + has_configured_linker_path_feature = feature(name = "has_configured_linker_path") + + random_seed_feature = feature( + name = "random_seed", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_codegen, + ACTION_NAMES.cpp_module_compile, + ], + flag_groups = [ + flag_group( + flags = ["-frandom-seed=%{output_file}"], + expand_if_available = "output_file", + ), + ], + ), + ], + ) + + llvm_coverage_map_format_feature = feature( + name = "llvm_coverage_map_format", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [ + flag_group( + flags = ["-fprofile-instr-generate", "-fcoverage-mapping", "-g"], + ), + ], + ), + flag_set( + actions = [ + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.cpp_link_executable, + "objc-executable", + "objc++-executable", + ], + flag_groups = [flag_group(flags = ["-fprofile-instr-generate"])], + ), + ], + requires = [feature_set(features = ["coverage"])], + ) + + force_pic_flags_feature = feature( + name = "force_pic_flags", + flag_sets = [ + flag_set( + actions = [ACTION_NAMES.cpp_link_executable], + flag_groups = [ + flag_group( + flags = ["-Wl,-pie"], + expand_if_available = "force_pic", + ), + ], + ), + ], + ) + + sysroot_feature = feature( + name = "sysroot", + flag_sets = [ + flag_set( + actions = [ + ACTION_NAMES.assemble, + ACTION_NAMES.preprocess_assemble, + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.cpp_module_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ACTION_NAMES.cpp_header_parsing, + ACTION_NAMES.cpp_link_executable, + ACTION_NAMES.cpp_link_dynamic_library, + ACTION_NAMES.cpp_link_nodeps_dynamic_library, + ACTION_NAMES.linkstamp_compile, + ACTION_NAMES.clif_match, + ], + flag_groups = [ + flag_group( + flags = ["--sysroot=%{sysroot}"], + expand_if_available = "sysroot", + ), + ], + ), + ], + ) + + autofdo_feature = feature( + name = "autofdo", + flag_sets = [ + flag_set( + actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], + flag_groups = [ + flag_group( + flags = [ + "-fauto-profile=%{fdo_profile_path}", + "-fprofile-correction", + ], + expand_if_available = "fdo_profile_path", + ), + ], + ), + ], + provides = ["profile"], + ) + + link_libcpp_feature = feature( + name = "link_libc++", + enabled = True, + flag_sets = [ + flag_set( + actions = all_link_actions + + ["objc-executable", "objc++-executable"], + flag_groups = [flag_group(flags = ["-lc++"])], + with_features = [with_feature_set(not_features = ["kernel_extension"])], + ), + ], + ) + + objc_actions_feature = feature( + name = "objc_actions", + implies = [ + "objc-compile", + "objc++-compile", + "objc-fully-link", + "objc-archive", + "objc-executable", + "objc++-executable", + "assemble", + "preprocess-assemble", + "c-compile", + "c++-compile", + "c++-link-static-library", + "c++-link-dynamic-library", + "c++-link-nodeps-dynamic-library", + "c++-link-executable", + ], + ) + + module_maps_feature = feature(name = "module_maps", enabled = True) + + if (ctx.attr.cpu == "armeabi-v7a"): unfiltered_compile_flags_feature = feature( name = "unfiltered_compile_flags", flag_sets = [ @@ -4810,15 +2117,13 @@ def _impl(ctx): "-D__DATE__=\"redacted\"", "-D__TIMESTAMP__=\"redacted\"", "-D__TIME__=\"redacted\"", - "-target", - "arm64e-apple-macosx", ], ), ], ), ], ) - elif (ctx.attr.cpu == "darwin_x86_64"): + else: unfiltered_compile_flags_feature = feature( name = "unfiltered_compile_flags", flag_sets = [ @@ -4842,44 +2147,13 @@ def _impl(ctx): "-D__TIMESTAMP__=\"redacted\"", "-D__TIME__=\"redacted\"", "-target", - "x86_64-apple-macosx", - ], - ), - ], - ), - ], - ) - elif (ctx.attr.cpu == "armeabi-v7a"): - unfiltered_compile_flags_feature = feature( - name = "unfiltered_compile_flags", - flag_sets = [ - flag_set( - actions = [ - ACTION_NAMES.assemble, - ACTION_NAMES.preprocess_assemble, - ACTION_NAMES.c_compile, - ACTION_NAMES.cpp_compile, - ACTION_NAMES.cpp_header_parsing, - ACTION_NAMES.cpp_module_compile, - ACTION_NAMES.cpp_module_codegen, - ACTION_NAMES.linkstamp_compile, - ], - flag_groups = [ - flag_group( - flags = [ - "-no-canonical-prefixes", - "-Wno-builtin-macro-redefined", - "-D__DATE__=\"redacted\"", - "-D__TIMESTAMP__=\"redacted\"", - "-D__TIME__=\"redacted\"", + target_system_name, ], ), ], ), ], ) - else: - unfiltered_compile_flags_feature = None linker_param_file_feature = feature( name = "linker_param_file",