155
155
host_platform::AbstractPlatform = $(repr (default_host_platform)) ,
156
156
compilers::Vector{Symbol} = [:c],
157
157
allow_unsafe_flags::Bool = false,
158
- lock_microarchitecture::Bool = true)
158
+ lock_microarchitecture::Bool = true,
159
+ gcc_version::Union{Nothing,VersionNumber}=nothing,
160
+ clang_version::Union{Nothing,VersionNumber}=nothing)
159
161
160
162
We generate a set of compiler wrapper scripts within our build environment to force all
161
163
build systems to honor the necessary sets of compiler flags to build for our systems.
@@ -172,6 +174,7 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr
172
174
lock_microarchitecture:: Bool = true ,
173
175
bootstrap:: Bool = ! isempty (bootstrap_list),
174
176
gcc_version:: Union{Nothing,VersionNumber} = nothing ,
177
+ clang_version:: Union{Nothing,VersionNumber} = nothing
175
178
)
176
179
# Wipe that directory out, in case it already had compiler wrappers
177
180
rm (bin_path; recursive= true , force= true )
@@ -340,7 +343,7 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr
340
343
])
341
344
end
342
345
end
343
- if Sys. islinux (p) && ! isnothing (gcc_version)
346
+ if Sys. islinux (p) && ! isnothing (gcc_version) && (clang_version >= v " 16 " )
344
347
append! (flags, [" --gcc-install-dir=/opt/$(aatriplet (p)) /lib/gcc/$(aatriplet (p)) /$(gcc_version) " ])
345
348
end
346
349
if Sys. iswindows (p)
@@ -1320,12 +1323,15 @@ function runner_setup!(workspaces, mappings, workspace_root, verbose, kwargs, pl
1320
1323
# Determine version of GCC toolchain.
1321
1324
gcc = filter (s -> s. name == " GCCBootstrap" && platforms_match (s. target, platform), shards)
1322
1325
gcc_version = length (gcc) == 1 ? only (gcc). version : nothing
1326
+
1327
+ clang = filter (s -> s. name == " LLVMBootstrap" , shards)
1328
+ clang_version = length (clang) == 1 ? only (clang). version : nothing
1323
1329
# Construct environment variables we'll use from here on out
1324
1330
platform:: Platform = get_concrete_platform (platform; compilers... , extract_kwargs (kwargs, (:preferred_gcc_version ,:preferred_llvm_version ))... )
1325
1331
envs:: Dict{String,String} = merge (platform_envs (platform, src_name; rust_version, verbose, compilers... ), extra_env)
1326
1332
1327
1333
# JIT out some compiler wrappers, add it to our mounts
1328
- generate_compiler_wrappers! (platform; bin_path= compiler_wrapper_path, gcc_version, compilers... , extract_kwargs (kwargs, (:allow_unsafe_flags ,:lock_microarchitecture ))... )
1334
+ generate_compiler_wrappers! (platform; bin_path= compiler_wrapper_path, gcc_version, clang_version, compilers... , extract_kwargs (kwargs, (:allow_unsafe_flags ,:lock_microarchitecture ))... )
1329
1335
push! (workspaces, compiler_wrapper_path => " /opt/bin" )
1330
1336
1331
1337
if isempty (bootstrap_list)
0 commit comments