-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfind_compiler.m
More file actions
47 lines (40 loc) · 917 Bytes
/
find_compiler.m
File metadata and controls
47 lines (40 loc) · 917 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function comp = find_compiler(lang)
arguments (Output)
comp string
end
co = mex.getCompilerConfigurations(lang);
if ~isempty(co)
comp = co.Details.CompilerExecutable;
return
end
if ismac()
p = '/opt/homebrew/bin/';
disp("on macOS, environment variables propagate in to GUI programs like Matlab by using 'launchctl setenv FC' and a reboot.")
elseif ispc()
p = getenv('CMPLR_ROOT');
if isempty(p)
p = getenv('MW_MINGW64_LOC');
end
if isempty(p)
p = getenv('MINGWROOT');
end
if ~endsWith(p, "bin" | "bin/")
p = p + "/bin";
end
else
p = '';
end
comp = string.empty;
switch lang
case "c", names = ["clang", "gcc", "icx"];
case "c++", names = ["clang++", "g++", "icpx"];
case "fortran", names = ["flang", "gfortran", "ifx"];
otherwise, error('Unsupported language: %s', lang)
end
for fc = names
comp = stdlib.which(fc, p);
if ~isempty(comp)
return
end
end
end