@@ -211,24 +211,36 @@ function build_julia_cmd(
211211 # TODO : `startup_file` may be removed in future with `julia-compile`, see: https://github.com/JuliaLang/julia/issues/15864
212212 startup_file == nothing && (startup_file = " no" )
213213 julia_cmd = ` $(Base. julia_cmd ()) `
214- if length (julia_cmd. exec) != 5 || ! all (startswith .(julia_cmd. exec[2 : 5 ], [" -C" , " -J" , " --compile" , " --depwarn" ]))
215- error (" Unexpected format of \" Base.julia_cmd()\" , you may be using an incompatible version of Julia:\n $julia_cmd " )
214+ function get_flag_idx (julia_cmd, flag_str)
215+ findfirst (f-> (length (f) > length (flag_str) &&
216+ f[1 : length (flag_str)]== flag_str), julia_cmd. exec)
216217 end
217- sysimage == nothing || (julia_cmd. exec[3 ] = " -J$sysimage " )
218- home == nothing || push! (julia_cmd. exec, " -H=$home " )
219- startup_file == nothing || push! (julia_cmd. exec, " --startup-file=$startup_file " )
220- handle_signals == nothing || push! (julia_cmd. exec, " --handle-signals=$handle_signals " )
221- sysimage_native_code == nothing || push! (julia_cmd. exec, " --sysimage-native-code=$sysimage_native_code " )
222- compiled_modules == nothing || push! (julia_cmd. exec, " --compiled-modules=$compiled_modules " )
223- depwarn == nothing || (julia_cmd. exec[5 ] = " --depwarn=$depwarn " )
224- warn_overwrite == nothing || (julia_cmd. exec[5 ] = " --warn-overwrite=$warn_overwrite " )
225- compile == nothing || (julia_cmd. exec[4 ] = " --compile=$compile " )
226- cpu_target == nothing || (julia_cmd. exec[2 ] = " -C$cpu_target " )
227- optimize == nothing || push! (julia_cmd. exec, " -O$optimize " )
228- debug == nothing || push! (julia_cmd. exec, " -g$debug " )
229- inline == nothing || push! (julia_cmd. exec, " --inline=$inline " )
230- check_bounds == nothing || push! (julia_cmd. exec, " --check-bounds=$check_bounds " )
231- math_mode == nothing || push! (julia_cmd. exec, " --math-mode=$math_mode " )
218+ function set_flag (julia_cmd, flag_str, val)
219+ flag_idx = get_flag_idx (julia_cmd, flag_str)
220+ if flag_idx != nothing
221+ julia_cmd. exec[flag_idx] = " $flag_str$val "
222+ else
223+ push! (julia_cmd. exec, " $flag_str$val " )
224+ end
225+ end
226+ sysimage == nothing || set_flag (julia_cmd, " -J" , sysimage)
227+ home == nothing || set_flag (julia_cmd, " -H=" , home)
228+ startup_file == nothing || set_flag (julia_cmd, " --startup-file=" , startup_file)
229+ handle_signals == nothing || set_flag (julia_cmd, " --handle-signals=" , handle_signals)
230+ sysimage_native_code == nothing || set_flag (julia_cmd, " --sysimage-native-code=" , sysimage_native_code)
231+ compiled_modules == nothing || set_flag (julia_cmd, " --compiled-modules=" , compiled_modules)
232+ depwarn == nothing || set_flag (julia_cmd, " --depwarn=" , depwarn)
233+ warn_overwrite == nothing || set_flag (julia_cmd, " --warn-overwrite=" , warn_overwrite)
234+ compile == nothing || set_flag (julia_cmd, " --compile=" , compile)
235+ cpu_target == nothing || set_flag (julia_cmd, " -C" , cpu_target)
236+ optimize == nothing || set_flag (julia_cmd, " -O" , optimize)
237+ debug == nothing || set_flag (julia_cmd, " -g" , debug)
238+ inline == nothing || set_flag (julia_cmd, " --inline=" , inline)
239+ check_bounds == nothing || set_flag (julia_cmd, " --check-bounds=" , check_bounds)
240+ math_mode == nothing || set_flag (julia_cmd, " --math-mode=" , math_mode)
241+ # Disable incompatible flags
242+ set_flag (julia_cmd, " --code-coverage=" , " none" )
243+
232244 julia_cmd
233245end
234246
0 commit comments