blob: bf2355894643e4e86c32114a4c960a3d85e4a662 [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(
44 Label("@libtinfo5_amd64//lib/x86_64-linux-gnu:libtinfo.so.5.9"),
45 "lib/libtinfo.so.5.9",
46 )
47 elif arch == "aarch64":
48 rctx.symlink(
49 Label("@libtinfo5_arm64//lib/aarch64-linux-gnu:libtinfo.so.5.9"),
50 "lib/libtinfo.so.5.9",
51 )
Tyler Chatow8a51ac62022-03-15 13:23:12 -070052
Tyler Chatowec100e22022-03-22 16:23:04 -070053 rctx.symlink("lib/libtinfo.so.5.9", "lib/libtinfo.so.5")
Tyler Chatow8a51ac62022-03-15 13:23:12 -070054
Brian Silverman7d89e282021-11-17 17:36:54 -080055 _download_llvm_preconfigured(rctx)
56
57 # We try to avoid patches to the downloaded repo so that it is easier for
58 # users to bring their own LLVM distribution through `http_archive`. If we
59 # do want to make changes, then we should do it through a patch file, and
60 # document it for users of toolchain_roots attribute.