blob: 84fef7800f200596745a4e53b4f3830f8c5635e6 [file] [log] [blame]
# Copyright 2019 The RE2 Authors. All Rights Reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
import os
import shutil
import sys
import sysconfig
def generate():
include = sysconfig.get_path('include')
libs = os.path.join(include, '../libs')
mydir = os.path.dirname(sys.argv[0]) or '.'
shutil.copytree(include, f'{mydir}/include')
try:
shutil.copytree(libs, f'{mydir}/libs')
except FileNotFoundError:
# We must not be running on Windows. :)
pass
with open(f'{mydir}/BUILD.bazel', 'x') as file:
file.write(
"""\
load("@rules_python//python/cc:py_cc_toolchain.bzl", "py_cc_toolchain")
load("@rules_python//python:py_runtime.bzl", "py_runtime")
load("@rules_python//python:py_runtime_pair.bzl", "py_runtime_pair")
package(default_visibility = ["//visibility:public"])
toolchain(
name = "py",
toolchain = ":py_toolchain",
toolchain_type = "@rules_python//python:toolchain_type",
)
py_runtime_pair(
name = "py_toolchain",
py3_runtime = ":interpreter",
)
py_runtime(
name = "interpreter",
interpreter_path = "{interpreter_path}",
interpreter_version_info = {{
"major": "{major}",
"minor": "{minor}",
}},
python_version = "PY3",
)
toolchain(
name = "py_cc",
toolchain = ":py_cc_toolchain",
toolchain_type = "@rules_python//python/cc:toolchain_type",
)
py_cc_toolchain(
name = "py_cc_toolchain",
headers = ":headers",
libs = ":libraries",
python_version = "{major}.{minor}",
)
cc_library(
name = "headers",
hdrs = glob(["include/**/*.h"]),
includes = ["include"],
deps = select({{
"@platforms//os:windows": [":interface_library"],
"//conditions:default": [],
}}),
)
cc_import(
name = "interface_library",
interface_library = select({{
"@platforms//os:windows": "libs/python{major}{minor}.lib",
"//conditions:default": None,
}}),
system_provided = True,
)
# Not actually necessary for our purposes. :)
cc_library(
name = "libraries",
)
""".format(
interpreter_path=sys.executable.replace('\\', '/'),
major=sys.version_info.major,
minor=sys.version_info.minor,
)
)
if __name__ == '__main__':
generate()