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