Merge remote-tracking branch 'origin/6.1'
[scilab.git] / scilab / modules / dynamic_link / macros / detectmsvc64tools.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - Allan CORNET
3 // Copyright (C) DIGITEO - 2010 - Allan CORNET
4 //
5 // Copyright (C) 2012 - 2016 - Scilab Enterprises
6 //
7 // This file is hereby licensed under the terms of the GNU GPL v2.0,
8 // pursuant to article 5.3.4 of the CeCILL v.2.1.
9 // This file was originally licensed under the terms of the CeCILL v2.1,
10 // and continues to be available under such terms.
11 // For more information, see the COPYING file which you should have received
12 // along with this program.
13
14 //=============================================================================
15 function bOK = detectmsvc64tools()
16
17     bOK = %F;
18     if getos() <> "Windows" then
19         return
20     end
21
22     //=============================================================================
23     // internal functions
24     //=============================================================================
25     function show = displayWarningMsVC()
26         settings_filename = "/.settings_warning_msvc";
27         settings_file = pathconvert(SCIHOME + settings_filename, %f, %t);
28         w = fileinfo(settings_file);
29         show = %t;
30         if isfile(settings_file) then
31             show = grep(mgetl(settings_file), "displayWarningMSVCx64=no") == [];
32         end
33     endfunction
34     //=============================================================================
35     function disableWarningMsVC()
36         settings_filename = "/.settings_warning_msvc";
37         settings_file = pathconvert(SCIHOME + settings_filename, %f, %t);
38         mputl("displayWarningMSVCx64=no", settings_file);
39     endfunction
40     //=============================================================================
41
42
43     // Load dynamic_link Internal lib if it's not already loaded
44     if ~ exists("dynamic_linkwindowslib") then
45         load("SCI/modules/dynamic_link/macros/windows/lib");
46     end
47
48     if win64() then
49         compiler = findmsvccompiler();
50         supported_compiler = [ ...
51         "msvc142pro", ..
52         "msvc142express", ..
53         "msvc141pro", ..
54         "msvc141express", ..
55         "msvc140pro", ..
56         "msvc140express", ..
57         "msvc120pro", ..
58         "msvc120express"];
59
60         if (find(supported_compiler == compiler) <> []) then
61             MSVCBIN64PATH = dlwGet64BitPath();
62             if dlwIsVc141Express() ||dlwIsVc141Pro() ||dlwIsVc142Express() ||dlwIsVc142Pro() then
63                 MSVCBIN64PATH = MSVCBIN64PATH + filesep() + "VC\Auxiliary\Build";
64             elseif dlwIsVc12Express() | dlwIsVc14Express() then
65                 MSVCBIN64PATH = MSVCBIN64PATH + filesep() + "VC\bin";
66             else
67                 MSVCBIN64PATH = MSVCBIN64PATH + filesep() + "VC\bin\amd64";
68             end
69
70             if isdir(MSVCBIN64PATH) then
71                 bOK = %T;
72             else
73                 show = displayWarningMsVC();
74                 if show then
75                     TXT = gettext("Microsoft Visual Studio C 2008 (or more recent) x64 Compiler not installed.");
76                     warning(TXT);
77                     clear TXT;
78                     disableWarningMsVC();
79                 end
80                 bOK = %F;
81             end
82         else
83             show = displayWarningMsVC();
84             if show then
85                 TXT = gettext("Microsoft Visual Studio C 2008 (or more recent) Compiler not found.");
86                 warning(TXT);
87                 clear TXT;
88                 disableWarningMsVC();
89             end
90             bOK = %F;
91         end
92     end
93
94 endfunction
95 //=============================================================================