1load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") 2 3SCALAR_TYPE_STEM = "scalar_type" 4SCALAR_TYPE = SCALAR_TYPE_STEM + ".fbs" 5 6# flatcc 7ETDUMP_STEM_FLATCC = "etdump_schema_flatcc" 8ETDUMP_SCHEMA_FLATCC = ETDUMP_STEM_FLATCC + ".fbs" 9ETDUMP_GEN_RULE_NAME_FLATCC = "generate_etdump" + "_flatcc" 10 11ETDUMP_SCHEMA_FLATCC_BUILDER = ETDUMP_STEM_FLATCC + "_builder.h" 12ETDUMP_SCHEMA_FLATCC_READER = ETDUMP_STEM_FLATCC + "_reader.h" 13ETDUMP_SCHEMA_FLATCC_VERIFIER = ETDUMP_STEM_FLATCC + "_verifier.h" 14 15SCALAR_TYPE_BUILDER = SCALAR_TYPE_STEM + "_builder.h" 16SCALAR_TYPE_READER = SCALAR_TYPE_STEM + "_reader.h" 17SCALAR_TYPE_VERIFIER = SCALAR_TYPE_STEM + "_verifier.h" 18 19FLATBUFFERS_COMMON_STEM = "flatbuffers_common" 20FLATBUFFERS_COMMON_BUILDER = FLATBUFFERS_COMMON_STEM + "_builder.h" 21FLATBUFFERS_COMMON_READER = FLATBUFFERS_COMMON_STEM + "_reader.h" 22 23def generate_schema_header_flatcc(rule_name, srcs, headers, default_headers): 24 """ 25 Generate header files for ETDump schema 26 """ 27 runtime.genrule( 28 name = rule_name, 29 srcs = srcs, 30 outs = {header: [header] for header in headers}, 31 default_outs = default_headers, 32 cmd = " ".join([ 33 "$(exe {})".format(runtime.external_dep_location("flatcc-cli")), 34 "-cwr", 35 "-o ${OUT}", 36 "${SRCS}", 37 # Let our infra know that the file was generated. 38 " ".join(["&& echo // @" + "generated >> ${OUT}/" + header for header in headers]), 39 ]), 40 ) 41 42def define_common_targets(): 43 """Defines targets that should be shared between fbcode and xplat. 44 45 The directory containing this targets.bzl file should also contain both 46 TARGETS and BUCK files that call this function. 47 """ 48 runtime.export_file( 49 name = ETDUMP_SCHEMA_FLATCC, 50 visibility = ["@EXECUTORCH_CLIENTS"], 51 ) 52 53 generate_schema_header_flatcc( 54 ETDUMP_GEN_RULE_NAME_FLATCC, 55 [ETDUMP_SCHEMA_FLATCC, SCALAR_TYPE], 56 [ 57 ETDUMP_SCHEMA_FLATCC_BUILDER, 58 ETDUMP_SCHEMA_FLATCC_READER, 59 ETDUMP_SCHEMA_FLATCC_VERIFIER, 60 SCALAR_TYPE_BUILDER, 61 SCALAR_TYPE_READER, 62 SCALAR_TYPE_VERIFIER, 63 FLATBUFFERS_COMMON_BUILDER, 64 FLATBUFFERS_COMMON_READER, 65 ], 66 [ 67 ETDUMP_SCHEMA_FLATCC_BUILDER, 68 ETDUMP_SCHEMA_FLATCC_READER, 69 ETDUMP_SCHEMA_FLATCC_VERIFIER, 70 ], 71 ) 72 73 runtime.cxx_library( 74 name = ETDUMP_STEM_FLATCC, 75 srcs = [], 76 visibility = ["//executorch/...", "@EXECUTORCH_CLIENTS"], 77 exported_headers = { 78 ETDUMP_SCHEMA_FLATCC_BUILDER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, ETDUMP_SCHEMA_FLATCC_BUILDER), 79 ETDUMP_SCHEMA_FLATCC_READER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, ETDUMP_SCHEMA_FLATCC_READER), 80 ETDUMP_SCHEMA_FLATCC_VERIFIER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, ETDUMP_SCHEMA_FLATCC_VERIFIER), 81 SCALAR_TYPE_BUILDER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, SCALAR_TYPE_BUILDER), 82 SCALAR_TYPE_READER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, SCALAR_TYPE_READER), 83 SCALAR_TYPE_VERIFIER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, SCALAR_TYPE_VERIFIER), 84 FLATBUFFERS_COMMON_BUILDER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, FLATBUFFERS_COMMON_BUILDER), 85 FLATBUFFERS_COMMON_READER: ":{}[{}]".format(ETDUMP_GEN_RULE_NAME_FLATCC, FLATBUFFERS_COMMON_READER), 86 }, 87 exported_external_deps = ["flatccrt"], 88 ) 89 90 for aten_mode in (True, False): 91 aten_suffix = "_aten" if aten_mode else "" 92 runtime.cxx_library( 93 name = "etdump_flatcc" + aten_suffix, 94 srcs = [ 95 "etdump_flatcc.cpp", 96 "emitter.cpp", 97 ], 98 headers = [ 99 "emitter.h", 100 ], 101 exported_headers = [ 102 "etdump_flatcc.h", 103 ], 104 deps = [ 105 "//executorch/runtime/platform:platform", 106 ], 107 exported_deps = [ 108 ":etdump_schema_flatcc", 109 "//executorch/runtime/core:event_tracer" + aten_suffix, 110 "//executorch/runtime/core/exec_aten/util:scalar_type_util" + aten_suffix, 111 ], 112 visibility = [ 113 "//executorch/...", 114 "@EXECUTORCH_CLIENTS", 115 ], 116 ) 117