@@ -88,24 +88,26 @@ function march()
8888 end
8989end
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
632634end
633635
0 commit comments