blob: 9a84922d40b67b63687144d77c491705912b7900 [file] [log] [blame]
Brian Silverman7d89e282021-11-17 17:36:54 -08001# Copyright 2021 The Bazel Authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15load(
16 "//toolchain/internal:common.bzl",
17 _os = "os",
18)
19load(
Tyler Chatowec100e22022-03-22 16:23:04 -070020 "//toolchain/internal:common.bzl",
21 _arch = "arch",
22)
23load(
Brian Silverman7d89e282021-11-17 17:36:54 -080024 "//toolchain/internal:llvm_distributions.bzl",
25 _download_llvm_preconfigured = "download_llvm_preconfigured",
26)
27
28def llvm_repo_impl(rctx):
29 os = _os(rctx)
Tyler Chatowec100e22022-03-22 16:23:04 -070030 arch = _arch(rctx)
Brian Silverman7d89e282021-11-17 17:36:54 -080031 if os == "windows":
32 rctx.file("BUILD", executable = False)
33 return
34
35 rctx.file(
36 "BUILD.bazel",
37 content = rctx.read(Label("//toolchain:BUILD.llvm_repo")),
38 executable = False,
39 )
40
Tyler Chatowec100e22022-03-22 16:23:04 -070041 if os == "linux":
42 if arch == "x86_64":
43 rctx.symlink(
Austin Schuh94dbdf32024-04-11 22:51:09 -070044 Label("@clang_amd64_deps//:lib/x86_64-linux-gnu/libtinfo.so.5.9"),
Tyler Chatowec100e22022-03-22 16:23:04 -070045 "lib/libtinfo.so.5.9",
46 )
Austin Schuh94dbdf32024-04-11 22:51:09 -070047 rctx.symlink(
48 Label("@clang_amd64_deps//:usr/lib/x86_64-linux-gnu/libxml2.so.2.9.14"),
49 "lib/libxml2.so.2.9.14",
50 )
51 rctx.symlink("lib/libxml2.so.2.9.14", "lib/libxml2.so.2")
52
53 for lib in ["libicudata", "libicuuc"]:
54 rctx.symlink(
55 Label("@clang_amd64_deps//:usr/lib/x86_64-linux-gnu/" + lib + ".so.72.1"),
56 "lib/" + lib + ".so.72.1",
57 )
58 rctx.symlink("lib/" + lib + ".so.72.1", "lib/" + lib + ".so.72")
Tyler Chatowec100e22022-03-22 16:23:04 -070059 elif arch == "aarch64":
60 rctx.symlink(
61 Label("@libtinfo5_arm64//lib/aarch64-linux-gnu:libtinfo.so.5.9"),
62 "lib/libtinfo.so.5.9",
63 )
Tyler Chatow8a51ac62022-03-15 13:23:12 -070064
Tyler Chatowec100e22022-03-22 16:23:04 -070065 rctx.symlink("lib/libtinfo.so.5.9", "lib/libtinfo.so.5")
Tyler Chatow8a51ac62022-03-15 13:23:12 -070066
Brian Silverman7d89e282021-11-17 17:36:54 -080067 _download_llvm_preconfigured(rctx)
68
69 # We try to avoid patches to the downloaded repo so that it is easier for
70 # users to bring their own LLVM distribution through `http_archive`. If we
71 # do want to make changes, then we should do it through a patch file, and
72 # document it for users of toolchain_roots attribute.