Skip to content

Commit 0fe077a

Browse files
authored
use g++/clang++ for sysimage (#602)
this replicates what Julia itself does
1 parent 1341426 commit 0fe077a

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
@@ -88,24 +88,26 @@ function march()
8888
end
8989
end
9090

91-
function run_compiler(cmd::Cmd)
91+
function run_compiler(cmd::Cmd; cplusplus::Bool=false)
9292
cc = get(ENV, "JULIA_CC", nothing)
9393
path = nothing
9494
@static if Sys.iswindows()
95-
path = joinpath(LazyArtifacts.artifact"mingw-w64", (Int==Int64 ? "mingw64" : "mingw32"), "bin", "gcc.exe")
95+
path = joinpath(LazyArtifacts.artifact"mingw-w64", (Int==Int64 ? "mingw64" : "mingw32"), "bin", cplusplus ? "g++.exe" : "gcc.exe")
9696
compiler_cmd = `$path`
9797
end
9898
if cc !== nothing
9999
compiler_cmd = Cmd(Base.shell_split(cc))
100100
path = nothing
101101
elseif !Sys.iswindows()
102-
if Sys.which("gcc") !== nothing
103-
compiler_cmd = `gcc`
104-
elseif Sys.which("clang") !== nothing
105-
compiler_cmd = `clang`
106-
else
107-
error("could not find a compiler, looked for `gcc` and `clang`")
102+
found_compiler = false
103+
compilers = cplusplus ? ("g++", "clang++") : ("gcc", "clang")
104+
for compiler in compilers
105+
if Sys.which(compiler) !== nothing
106+
compiler_cmd = `$compiler`
107+
found_compiler = true
108+
end
108109
end
110+
found_compiler || error("could not find a compiler, looked for ", join(compilers, " and "))
109111
end
110112
if path !== nothing
111113
compiler_cmd = addenv(compiler_cmd, "PATH" => string(ENV["PATH"], ";", dirname(path)))
@@ -627,7 +629,7 @@ function create_sysimg_from_object_file(input_object::String,
627629
extra = get_extra_linker_flags(version, compat_level, soname)
628630
m = something(march(), ``)
629631
cmd = `$(bitflag()) $m -shared -L$(julia_libdir()) -L$(julia_private_libdir()) -o $sysimage_path $o_file_flags -ljulia-internal -ljulia $extra`
630-
run_compiler(cmd)
632+
run_compiler(cmd; cplusplus=true)
631633
return nothing
632634
end
633635

0 commit comments

Comments
 (0)