@@ -96,24 +96,26 @@ function move_default_sysimage_if_windows()
9696 end
9797end
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
682684end
683685
0 commit comments