66from typing import List , Optional
77
88class _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
100124class _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
148180class 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