xref: /aosp_15_r20/external/tensorflow/third_party/py/BUILD.tpl (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1*b6fb3261SAndroid Build Coastguard Workerlicenses(["restricted"])
2*b6fb3261SAndroid Build Coastguard Worker
3*b6fb3261SAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
4*b6fb3261SAndroid Build Coastguard Worker
5*b6fb3261SAndroid Build Coastguard Worker# Point both runtimes to the same python binary to ensure we always
6*b6fb3261SAndroid Build Coastguard Worker# use the python binary specified by ./configure.py script.
7*b6fb3261SAndroid Build Coastguard Workerload("@bazel_tools//tools/python:toolchain.bzl", "py_runtime_pair")
8*b6fb3261SAndroid Build Coastguard Worker
9*b6fb3261SAndroid Build Coastguard Workerpy_runtime(
10*b6fb3261SAndroid Build Coastguard Worker    name = "py2_runtime",
11*b6fb3261SAndroid Build Coastguard Worker    interpreter_path = "%{PYTHON_BIN_PATH}",
12*b6fb3261SAndroid Build Coastguard Worker    python_version = "PY2",
13*b6fb3261SAndroid Build Coastguard Worker)
14*b6fb3261SAndroid Build Coastguard Worker
15*b6fb3261SAndroid Build Coastguard Workerpy_runtime(
16*b6fb3261SAndroid Build Coastguard Worker    name = "py3_runtime",
17*b6fb3261SAndroid Build Coastguard Worker    interpreter_path = "%{PYTHON_BIN_PATH}",
18*b6fb3261SAndroid Build Coastguard Worker    python_version = "PY3",
19*b6fb3261SAndroid Build Coastguard Worker)
20*b6fb3261SAndroid Build Coastguard Worker
21*b6fb3261SAndroid Build Coastguard Workerpy_runtime_pair(
22*b6fb3261SAndroid Build Coastguard Worker    name = "py_runtime_pair",
23*b6fb3261SAndroid Build Coastguard Worker    py2_runtime = ":py2_runtime",
24*b6fb3261SAndroid Build Coastguard Worker    py3_runtime = ":py3_runtime",
25*b6fb3261SAndroid Build Coastguard Worker)
26*b6fb3261SAndroid Build Coastguard Worker
27*b6fb3261SAndroid Build Coastguard Workertoolchain(
28*b6fb3261SAndroid Build Coastguard Worker    name = "py_toolchain",
29*b6fb3261SAndroid Build Coastguard Worker    toolchain = ":py_runtime_pair",
30*b6fb3261SAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/python:toolchain_type",
31*b6fb3261SAndroid Build Coastguard Worker    target_compatible_with = [%{PLATFORM_CONSTRAINT}],
32*b6fb3261SAndroid Build Coastguard Worker    exec_compatible_with = [%{PLATFORM_CONSTRAINT}],
33*b6fb3261SAndroid Build Coastguard Worker)
34*b6fb3261SAndroid Build Coastguard Worker
35*b6fb3261SAndroid Build Coastguard Worker# To build Python C/C++ extension on Windows, we need to link to python import library pythonXY.lib
36*b6fb3261SAndroid Build Coastguard Worker# See https://docs.python.org/3/extending/windows.html
37*b6fb3261SAndroid Build Coastguard Workercc_import(
38*b6fb3261SAndroid Build Coastguard Worker    name = "python_lib",
39*b6fb3261SAndroid Build Coastguard Worker    interface_library = select({
40*b6fb3261SAndroid Build Coastguard Worker        ":windows": ":python_import_lib",
41*b6fb3261SAndroid Build Coastguard Worker        # A placeholder for Unix platforms which makes --no_build happy.
42*b6fb3261SAndroid Build Coastguard Worker        "//conditions:default": "not-existing.lib",
43*b6fb3261SAndroid Build Coastguard Worker    }),
44*b6fb3261SAndroid Build Coastguard Worker    system_provided = 1,
45*b6fb3261SAndroid Build Coastguard Worker)
46*b6fb3261SAndroid Build Coastguard Worker
47*b6fb3261SAndroid Build Coastguard Workercc_library(
48*b6fb3261SAndroid Build Coastguard Worker    name = "python_headers",
49*b6fb3261SAndroid Build Coastguard Worker    hdrs = [":python_include"],
50*b6fb3261SAndroid Build Coastguard Worker    deps = select({
51*b6fb3261SAndroid Build Coastguard Worker        ":windows": [":python_lib"],
52*b6fb3261SAndroid Build Coastguard Worker        "//conditions:default": [],
53*b6fb3261SAndroid Build Coastguard Worker    }),
54*b6fb3261SAndroid Build Coastguard Worker    includes = ["python_include"],
55*b6fb3261SAndroid Build Coastguard Worker)
56*b6fb3261SAndroid Build Coastguard Worker
57*b6fb3261SAndroid Build Coastguard Worker# This alias is exists for the use of targets in the @llvm-project dependency,
58*b6fb3261SAndroid Build Coastguard Worker# which expect a python_headers target called @python_runtime//:headers. We use
59*b6fb3261SAndroid Build Coastguard Worker# a repo_mapping to alias python_runtime to this package, and an alias to create
60*b6fb3261SAndroid Build Coastguard Worker# the correct target.
61*b6fb3261SAndroid Build Coastguard Workeralias(
62*b6fb3261SAndroid Build Coastguard Worker    name = "headers",
63*b6fb3261SAndroid Build Coastguard Worker    actual = ":python_headers",
64*b6fb3261SAndroid Build Coastguard Worker)
65*b6fb3261SAndroid Build Coastguard Worker
66*b6fb3261SAndroid Build Coastguard Workercc_library(
67*b6fb3261SAndroid Build Coastguard Worker    name = "numpy_headers",
68*b6fb3261SAndroid Build Coastguard Worker    hdrs = [":numpy_include"],
69*b6fb3261SAndroid Build Coastguard Worker    includes = ["numpy_include"],
70*b6fb3261SAndroid Build Coastguard Worker)
71*b6fb3261SAndroid Build Coastguard Worker
72*b6fb3261SAndroid Build Coastguard Workerconfig_setting(
73*b6fb3261SAndroid Build Coastguard Worker    name = "windows",
74*b6fb3261SAndroid Build Coastguard Worker    values = {"cpu": "x64_windows"},
75*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
76*b6fb3261SAndroid Build Coastguard Worker)
77*b6fb3261SAndroid Build Coastguard Worker
78*b6fb3261SAndroid Build Coastguard Worker%{PYTHON_INCLUDE_GENRULE}
79*b6fb3261SAndroid Build Coastguard Worker%{NUMPY_INCLUDE_GENRULE}
80*b6fb3261SAndroid Build Coastguard Worker%{PYTHON_IMPORT_LIB_GENRULE}
81