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