Skip to content

Commit

Permalink
Get Objc compile info from CcCompilationContext
Browse files Browse the repository at this point in the history
Note strict includes still come from ObjcProvider.

Step 2 of 3-step plan:
1. Migrate the definitions.
2. Migrate the uses.
3. Delete old ObjcProvider definitions.

See bazelbuild/bazel#10674.

PiperOrigin-RevId: 307870523
  • Loading branch information
Googler authored and jparise committed Sep 8, 2021
1 parent 62cfb95 commit 131e87b
Showing 1 changed file with 24 additions and 32 deletions.
56 changes: 24 additions & 32 deletions src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ def _file_metadata_by_replacing_path(f, new_path, new_is_dir = None):
)

def _depset_to_file_metadata_list(a_depset):
""""Converts a depset of files into a list of _file_metadata structs."""
"""Converts a depset of files into a list of _file_metadata structs."""
return [_file_metadata(f) for f in a_depset.to_list()]

def _collect_artifacts(obj, attr_path, exclude_xcdatamodel = False, exclude_xcassets = False):
Expand Down Expand Up @@ -632,11 +632,14 @@ def _extract_archives(target):

def _extract_generated_sources(target):
"""Returns (source_metadatas, includes) generated by the given target."""
file_metadatas = []
transitive_depsets = []
objc_provider = _get_opt_provider(target, ObjcInfo)
if hasattr(objc_provider, "source") and hasattr(objc_provider, "header"):
all_files = depset(transitive = [objc_provider.source, objc_provider.header])
file_metadatas = _depset_to_file_metadata_list(all_files)
if hasattr(objc_provider, "source"):
transitive_depsets.append(objc_provider.source)
cc_info = _get_opt_provider(target, CcInfo)
if cc_info:
transitive_depsets.append(cc_info.compilation_context.headers)
file_metadatas = _depset_to_file_metadata_list(depset(transitive = transitive_depsets))

return file_metadatas

Expand Down Expand Up @@ -713,25 +716,13 @@ def _collect_objc_strict_includes(target, rule_attr):
depsets.append(objc.strict_include)
return depset(transitive = depsets)

def _collect_objc_defines(objc_provider, cc_provider, rule_attr):
"""Returns a depset of C-compiler defines."""
if cc_provider and not objc_provider:
return cc_provider.compilation_context.defines
depsets = [objc_provider.define] if objc_provider else []
for dep in _collect_dependencies(rule_attr, "deps"):
if CcInfo in dep:
compilation_context = dep[CcInfo].compilation_context
depsets.append(compilation_context.defines)
return depset(transitive = depsets)

# TODO(b/64490743): Add these files to the Xcode project.
def _collect_swift_header(target):
"""Returns a depset of Swift generated headers found on the given target."""

# swift_* targets put the generated header into their objc provider HEADER
# field.
if SwiftInfo in target and ObjcInfo in target:
return target[ObjcInfo].header
# swift_* targets put the generated header into CcInfo.
if SwiftInfo in target and CcInfo in target:
return target[CcInfo].compilation_context.headers
return depset()

def _target_filtering_info(ctx):
Expand Down Expand Up @@ -898,21 +889,19 @@ def _tulsi_sources_aspect(target, ctx):

objc_strict_includes = _collect_objc_strict_includes(target, rule_attr)

objc_provider = _get_opt_provider(target, ObjcInfo)
cc_provider = _get_opt_provider(target, CcInfo)
objc_defines = []
includes_depsets = []

if objc_provider:
if cc_provider:
cc_ctx = cc_provider.compilation_context
includes_depsets = [
objc_strict_includes,
objc_provider.include,
objc_provider.iquote,
objc_provider.include_system,
cc_ctx.includes,
cc_ctx.quote_includes,
cc_ctx.system_includes,
]
elif cc_provider:
cc_ctx = cc_provider.compilation_context
includes_depsets = [cc_ctx.includes, cc_ctx.quote_includes, cc_ctx.system_includes]
else:
includes_depsets = [objc_strict_includes]

if includes_depsets:
target_includes = [
Expand All @@ -922,7 +911,8 @@ def _tulsi_sources_aspect(target, ctx):
else:
target_includes = []

objc_defines = _collect_objc_defines(objc_provider, cc_provider, rule_attr).to_list()
if cc_provider:
objc_defines = cc_provider.compilation_context.defines.to_list()

platform_type, os_deployment_target = _get_deployment_info(target, ctx)
non_arc_srcs = _collect_files(rule, "attr.non_arc_srcs")
Expand Down Expand Up @@ -1163,9 +1153,11 @@ def _tulsi_outputs_aspect(target, ctx):
all_files_depsets = []
if target_kind in _SOURCE_GENERATING_RULES + _NON_ARC_SOURCE_GENERATING_RULES:
objc_provider = _get_opt_provider(target, ObjcInfo)
if hasattr(objc_provider, "source") and hasattr(objc_provider, "header"):
if hasattr(objc_provider, "source"):
all_files_depsets.append(objc_provider.source)
all_files_depsets.append(objc_provider.header)
cc_info = _get_opt_provider(target, CcInfo)
if cc_info:
all_files_depsets.append(cc_info.compilation_context.headers)

all_files_depsets.append(_collect_swift_header(target))
all_files_depsets.append(_collect_swift_modules(target))
Expand Down

0 comments on commit 131e87b

Please sign in to comment.