xref: /aosp_15_r20/external/executorch/backends/apple/mps/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker#
2*523fa7a6SAndroid Build Coastguard Worker#  Copyright (c) 2023 Apple Inc. All rights reserved.
3*523fa7a6SAndroid Build Coastguard Worker#  Provided subject to the LICENSE file in the top level directory.
4*523fa7a6SAndroid Build Coastguard Worker#
5*523fa7a6SAndroid Build Coastguard Worker
6*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets(is_xplat = False, platforms = []):
9*523fa7a6SAndroid Build Coastguard Worker    """Defines targets that should be shared between fbcode and xplat.
10*523fa7a6SAndroid Build Coastguard Worker
11*523fa7a6SAndroid Build Coastguard Worker    The directory containing this targets.bzl file should also contain both
12*523fa7a6SAndroid Build Coastguard Worker    TARGETS and BUCK files that call this function.
13*523fa7a6SAndroid Build Coastguard Worker    """
14*523fa7a6SAndroid Build Coastguard Worker    kwargs = {
15*523fa7a6SAndroid Build Coastguard Worker        "name": "mps",
16*523fa7a6SAndroid Build Coastguard Worker        "compiler_flags": [
17*523fa7a6SAndroid Build Coastguard Worker            "-DEXIR_MPS_DELEGATE=1",
18*523fa7a6SAndroid Build Coastguard Worker            "-Wno-global-constructors",
19*523fa7a6SAndroid Build Coastguard Worker            "-Wno-missing-prototypes",
20*523fa7a6SAndroid Build Coastguard Worker            "-Wno-nullable-to-nonnull-conversion",
21*523fa7a6SAndroid Build Coastguard Worker            "-Wno-undeclared-selector",
22*523fa7a6SAndroid Build Coastguard Worker            "-Wno-unused-const-variable",
23*523fa7a6SAndroid Build Coastguard Worker            "-Wno-unused-variable",
24*523fa7a6SAndroid Build Coastguard Worker            "-fno-objc-arc",
25*523fa7a6SAndroid Build Coastguard Worker            "-std=c++17",
26*523fa7a6SAndroid Build Coastguard Worker        ],
27*523fa7a6SAndroid Build Coastguard Worker        "deps": [
28*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/core:core",
29*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/core/exec_aten/util:tensor_util",
30*523fa7a6SAndroid Build Coastguard Worker            ":mps_schema",
31*523fa7a6SAndroid Build Coastguard Worker        ],
32*523fa7a6SAndroid Build Coastguard Worker        "exported_deps": [
33*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/backend:interface",
34*523fa7a6SAndroid Build Coastguard Worker            ":mps_schema",
35*523fa7a6SAndroid Build Coastguard Worker        ],
36*523fa7a6SAndroid Build Coastguard Worker        "headers": native.glob([
37*523fa7a6SAndroid Build Coastguard Worker            "runtime/*.h",
38*523fa7a6SAndroid Build Coastguard Worker            "runtime/operations/*.h",
39*523fa7a6SAndroid Build Coastguard Worker        ]),
40*523fa7a6SAndroid Build Coastguard Worker        "srcs": native.glob([
41*523fa7a6SAndroid Build Coastguard Worker            "runtime/*.mm",
42*523fa7a6SAndroid Build Coastguard Worker            "runtime/operations/*.mm",
43*523fa7a6SAndroid Build Coastguard Worker        ]),
44*523fa7a6SAndroid Build Coastguard Worker        "visibility": [
45*523fa7a6SAndroid Build Coastguard Worker            "//executorch/backends/apple/...",
46*523fa7a6SAndroid Build Coastguard Worker            "//executorch/examples/...",
47*523fa7a6SAndroid Build Coastguard Worker            "//executorch/exir/backend:backend_lib",
48*523fa7a6SAndroid Build Coastguard Worker            "//executorch/extension/pybindings/...",
49*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/backend/...",
50*523fa7a6SAndroid Build Coastguard Worker            "//executorch/devtools/runners/...",
51*523fa7a6SAndroid Build Coastguard Worker            "//executorch/test/...",
52*523fa7a6SAndroid Build Coastguard Worker            "@EXECUTORCH_CLIENTS",
53*523fa7a6SAndroid Build Coastguard Worker        ],
54*523fa7a6SAndroid Build Coastguard Worker        "link_whole": True,
55*523fa7a6SAndroid Build Coastguard Worker    }
56*523fa7a6SAndroid Build Coastguard Worker
57*523fa7a6SAndroid Build Coastguard Worker    if is_xplat:
58*523fa7a6SAndroid Build Coastguard Worker        kwargs["fbobjc_frameworks"] = [
59*523fa7a6SAndroid Build Coastguard Worker            "Foundation",
60*523fa7a6SAndroid Build Coastguard Worker            "Metal",
61*523fa7a6SAndroid Build Coastguard Worker            "MetalPerformanceShaders",
62*523fa7a6SAndroid Build Coastguard Worker            "MetalPerformanceShadersGraph",
63*523fa7a6SAndroid Build Coastguard Worker        ]
64*523fa7a6SAndroid Build Coastguard Worker        kwargs["platforms"] = platforms
65*523fa7a6SAndroid Build Coastguard Worker
66*523fa7a6SAndroid Build Coastguard Worker    if runtime.is_oss or is_xplat:
67*523fa7a6SAndroid Build Coastguard Worker        runtime.genrule(
68*523fa7a6SAndroid Build Coastguard Worker            name = "gen_mps_schema",
69*523fa7a6SAndroid Build Coastguard Worker            srcs = [
70*523fa7a6SAndroid Build Coastguard Worker                "serialization/schema.fbs",
71*523fa7a6SAndroid Build Coastguard Worker            ],
72*523fa7a6SAndroid Build Coastguard Worker            outs = {
73*523fa7a6SAndroid Build Coastguard Worker                "schema_generated.h": ["schema_generated.h"],
74*523fa7a6SAndroid Build Coastguard Worker            },
75*523fa7a6SAndroid Build Coastguard Worker            cmd = " ".join([
76*523fa7a6SAndroid Build Coastguard Worker                "$(exe {})".format(runtime.external_dep_location("flatc")),
77*523fa7a6SAndroid Build Coastguard Worker                "--cpp",
78*523fa7a6SAndroid Build Coastguard Worker                "--cpp-std c++11",
79*523fa7a6SAndroid Build Coastguard Worker                "--scoped-enums",
80*523fa7a6SAndroid Build Coastguard Worker                "-o ${OUT}",
81*523fa7a6SAndroid Build Coastguard Worker                "${SRCS}",
82*523fa7a6SAndroid Build Coastguard Worker            ]),
83*523fa7a6SAndroid Build Coastguard Worker            default_outs = ["."],
84*523fa7a6SAndroid Build Coastguard Worker        )
85*523fa7a6SAndroid Build Coastguard Worker
86*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(
87*523fa7a6SAndroid Build Coastguard Worker            name = "mps_schema",
88*523fa7a6SAndroid Build Coastguard Worker            srcs = [],
89*523fa7a6SAndroid Build Coastguard Worker            exported_headers = {
90*523fa7a6SAndroid Build Coastguard Worker                "schema_generated.h": ":gen_mps_schema[schema_generated.h]",
91*523fa7a6SAndroid Build Coastguard Worker            },
92*523fa7a6SAndroid Build Coastguard Worker            exported_external_deps = ["flatbuffers-api"],
93*523fa7a6SAndroid Build Coastguard Worker            visibility = [
94*523fa7a6SAndroid Build Coastguard Worker                "//executorch/backends/apple/...",
95*523fa7a6SAndroid Build Coastguard Worker                "//executorch/examples/...",
96*523fa7a6SAndroid Build Coastguard Worker            ],
97*523fa7a6SAndroid Build Coastguard Worker        )
98*523fa7a6SAndroid Build Coastguard Worker
99*523fa7a6SAndroid Build Coastguard Worker        runtime.cxx_library(**kwargs)
100