Skip to content

Commit b000c9e

Browse files
committed
use g++/clang++ for sysimage (#602)
this replicates what Julia itself does (cherry picked from commit 0fe077a)
1 parent 79845f2 commit b000c9e

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/PackageCompiler.jl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,24 +96,26 @@ function move_default_sysimage_if_windows()
9696
end
9797
end
9898

99-
function run_compiler(cmd::Cmd)
99+
function run_compiler(cmd::Cmd; cplusplus::Bool=false)
100100
cc = get(ENV, "JULIA_CC", nothing)
101101
path = nothing
102102
@static if Sys.iswindows()
103-
path = joinpath(LazyArtifacts.artifact"mingw-w64", (Int==Int64 ? "mingw64" : "mingw32"), "bin", "gcc.exe")
103+
path = joinpath(LazyArtifacts.artifact"mingw-w64", (Int==Int64 ? "mingw64" : "mingw32"), "bin", cplusplus ? "g++.exe" : "gcc.exe")
104104
compiler_cmd = `$path`
105105
end
106106
if cc !== nothing
107107
compiler_cmd = Cmd(Base.shell_split(cc))
108108
path = nothing
109109
elseif !Sys.iswindows()
110-
if Sys.which("gcc") !== nothing
111-
compiler_cmd = `gcc`
112-
elseif Sys.which("clang") !== nothing
113-
compiler_cmd = `clang`
114-
else
115-
error("could not find a compiler, looked for `gcc` and `clang`")
110+
found_compiler = false
111+
compilers = cplusplus ? ("g++", "clang++") : ("gcc", "clang")
112+
for compiler in compilers
113+
if Sys.which(compiler) !== nothing
114+
compiler_cmd = `$compiler`
115+
found_compiler = true
116+
end
116117
end
118+
found_compiler || error("could not find a compiler, looked for ", join(compilers, " and "))
117119
end
118120
if path !== nothing
119121
compiler_cmd = addenv(compiler_cmd, "PATH" => string(ENV["PATH"], ";", dirname(path)))
@@ -677,7 +679,7 @@ function create_sysimg_from_object_file(input_object::String,
677679
extra = get_extra_linker_flags(version, compat_level, soname)
678680
m = something(march(), ``)
679681
cmd = `$(bitflag()) $m -shared -L$(julia_libdir()) -L$(julia_private_libdir()) -o $sysimage_path $o_file_flags -ljulia-internal -ljulia $extra`
680-
run_compiler(cmd)
682+
run_compiler(cmd; cplusplus=true)
681683
return nothing
682684
end
683685

0 commit comments

Comments
 (0)