35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
#
|
|
# This source code is licensed under both the MIT license found in the
|
|
# LICENSE-MIT file in the root directory of this source tree and the Apache
|
|
# License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
|
# of this source tree.
|
|
|
|
load("@prelude//apple:apple_toolchain_types.bzl", "AppleToolchainInfo")
|
|
|
|
DSYM_SUBTARGET = "dsym"
|
|
DEBUGINFO_SUBTARGET = "debuginfo"
|
|
|
|
AppleDebuggableInfo = provider(fields = [
|
|
"dsyms", # ["artifact"]
|
|
"external_debug_info", # ["_arglike"]
|
|
])
|
|
|
|
# TODO(T110672942): Things which are still unsupported:
|
|
# - pass in dsymutil_extra_flags
|
|
# - oso_prefix
|
|
# - dsym_verification
|
|
def get_apple_dsym(ctx: "context", executable: "artifact", external_debug_info: ["_arglike"], action_identifier: "string") -> "artifact":
|
|
dsymutil = ctx.attrs._apple_toolchain[AppleToolchainInfo].dsymutil
|
|
output = ctx.actions.declare_output("{}.dSYM".format(executable.short_path))
|
|
|
|
cmd = cmd_args([dsymutil, "-o", output.as_output(), executable])
|
|
|
|
# Mach-O executables don't contain DWARF data.
|
|
# Instead, they contain paths to the object files which themselves contain DWARF data.
|
|
#
|
|
# So, those object files are needed for dsymutil to be to create the dSYM bundle.
|
|
cmd.hidden(external_debug_info)
|
|
ctx.actions.run(cmd, category = "apple_dsym", identifier = action_identifier)
|
|
|
|
return output
|