1"""TensorFlow Lite Support Library Helper Rules for iOS"""
2
3# When the static framework is built with bazel, the all header files are moved
4# to the "Headers" directory with no header path prefixes. This auxiliary rule
5# is used for stripping the path prefix to the C API header files included by
6# other C API header files.
7def strip_c_api_include_path_prefix(name, hdr_labels, prefix = ""):
8    """Create modified header files with the common.h include path stripped out.
9
10    Args:
11      name: The name to be used as a prefix to the generated genrules.
12      hdr_labels: List of header labels to strip out the include path. Each
13          label must end with a colon followed by the header file name.
14      prefix: Optional prefix path to prepend to the header inclusion path.
15    """
16
17    for hdr_label in hdr_labels:
18        hdr_filename = hdr_label.split(":")[-1]
19        hdr_basename = hdr_filename.split(".")[0]
20
21        native.genrule(
22            name = "{}_{}".format(name, hdr_basename),
23            srcs = [hdr_label],
24            outs = [hdr_filename],
25            cmd = """
26            sed 's|#include ".*/\\([^/]\\{{1,\\}}\\.h\\)"|#include "{}\\1"|'\
27            "$(location {})"\
28            > "$@"
29            """.format(prefix, hdr_label),
30        )
31