Skip to content

Commit 26f7efb

Browse files
committed
build_kernel: Fetch Clang from AOSP
Change-Id: Id2e04b48a62a4341b93c5dfa6cd864fe8f33866c
1 parent f7783af commit 26f7efb

1 file changed

Lines changed: 45 additions & 12 deletions

File tree

build_kernel/utils/toolchain.py

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,35 @@
66
from typing import List, Optional
77

88
class _Toolchain:
9-
def __init__(self, name: str, path: Path, url: Optional[str], cc: str):
9+
def __init__(
10+
self,
11+
name: str,
12+
path: Path,
13+
cc: str,
14+
git_url: Optional[str] = None,
15+
git_branch: Optional[str] = None,
16+
repo_path: Optional[Path] = None,
17+
):
1018
self.name = name
1119
self.path = path
12-
self.url = url
1320
self.cc = cc
21+
self.git_url = git_url
22+
self.git_branch = git_branch or name
23+
self.repo_path = repo_path or path
1424

1525
def prepare(self, arch: Arch) -> None:
16-
if not self.url:
26+
if not self.git_url:
1727
return
1828

19-
if not self.path.exists():
20-
LOGI(f"Toolchain {self.name} not found at {self.path}, cloning")
21-
Repo.clone_from(self.url, self.path, branch=self.name,
22-
single_branch=True, depth=1)
29+
if not self.repo_path.exists():
30+
LOGI(f"Toolchain {self.name} not found at {self.repo_path}, cloning")
31+
Repo.clone_from(
32+
self.git_url, self.repo_path, branch=self.git_branch,
33+
single_branch=True, depth=1
34+
)
2335
LOGI(f"Toolchain {self.name} cloned")
36+
37+
assert self.path.exists()
2438

2539
def get_path_dirs(self, arch: Arch) -> List[Path]:
2640
path_dirs = []
@@ -39,8 +53,18 @@ class _GccToolchain(_Toolchain):
3953
BASE_PATH = toolchains_path / "gcc"
4054
BASE_REMOTE = "https://github.com/SebaUbuntu/toolchains_gcc"
4155

42-
def __init__(self, version: str, prefix: str, url: Optional[str] = BASE_REMOTE):
43-
super().__init__(version, self.BASE_PATH / version, url, "gcc" if not prefix else f"{prefix}gcc")
56+
def __init__(
57+
self,
58+
version: str,
59+
prefix: str,
60+
git_url: Optional[str] = BASE_REMOTE,
61+
):
62+
super().__init__(
63+
version,
64+
self.BASE_PATH / version,
65+
"gcc" if not prefix else f"{prefix}gcc",
66+
git_url,
67+
)
4468

4569
self.prefix = prefix
4670

@@ -99,10 +123,18 @@ def get_default(cls, arch: Arch) -> _GccToolchain:
99123

100124
class _ClangToolchain(_Toolchain):
101125
BASE_PATH = toolchains_path / "clang"
102-
BASE_REMOTE = "https://github.com/SebaUbuntu/toolchains_clang"
126+
BASE_REMOTE = "https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86"
127+
BASE_BRANCH = "android-14.0.0_r28"
103128

104129
def __init__(self, version: str):
105-
super().__init__(version, self.BASE_PATH / version, self.BASE_REMOTE, "clang")
130+
super().__init__(
131+
version,
132+
self.BASE_PATH / f"clang-{version}",
133+
"clang",
134+
self.BASE_REMOTE,
135+
self.BASE_BRANCH,
136+
self.BASE_PATH,
137+
)
106138

107139
def prepare(self, arch: Arch) -> None:
108140
super().prepare(arch)
@@ -147,7 +179,8 @@ def get_make_flags(self, arch: Arch) -> List[str]:
147179

148180
class ClangToolchain(_ClangToolchain):
149181
VERSIONS = {
150-
"r416183b1": _ClangToolchain("r416183b1"),
182+
"r450784e": _ClangToolchain("r450784e"),
183+
"r475365b": _ClangToolchain("r475365b"),
151184
"r487747c": _ClangToolchain("r487747c"),
152185
}
153186
DEFAULT = VERSIONS["r487747c"]

0 commit comments

Comments
 (0)