fix trouble with debug/release detection on Windows dynamic_link
[scilab.git] / scilab / modules / dynamic_link / macros / windows / dlwCompile.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) DIGITEO - 2011  - Allan CORNET
3 // Copyright (C) Scilab Enterprises - 2015  - Antoine ELIAS
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 function dlwCompile(files, make_command, makename)
15
16     dlwConfigureEnv();
17
18     nf = size(files,"*");
19
20     for i=1:nf
21         if ( ilib_verbose() <> 0 ) then
22             mprintf(_("   Compilation of ") + string(files(i)) +"\n");
23         end
24     end
25
26     // then the shared library
27     if ( ilib_verbose() <> 0 ) then
28         mprintf(_("   Building shared library (be patient)\n"));
29     end
30
31     if dlwForceRebuild() then
32         target_build = "clean all";
33     else
34         target_build = "all";
35     end
36
37     cmd = make_command + makename + " " + target_build + " 2>&0"
38     scibuildfile = writeBatchFile(cmd);
39     [msg, stat] = unix_g(scibuildfile);
40     deletefile(scibuildfile);
41
42     if stat <> 0 then
43         // more feedback when compilation fails
44         cmd = make_command + makename + " " + target_build + " 1>&2"
45         scibuildfile = writeBatchFile(cmd);
46         [msg, stat, stderr] = unix_g(scibuildfile);
47         deletefile(scibuildfile);
48         disp(stderr);
49         error(msprintf(gettext("%s: Error while executing %s.\n"), "ilib_compile", makename));
50     else
51         if ilib_verbose() > 1 then
52             disp(msg);
53         end
54     end
55
56
57 endfunction
58 //=============================================================================
59 function filename = writeBatchFile(cmd)
60
61     //update DEBUG_SCILAB_DYNAMIC_LINK to match with Scilab compilation mode
62     val = getenv("DEBUG_SCILAB_DYNAMIC_LINK","");
63     if val <> "NO" & val <> "YES" then
64         if isDebug() then
65             val = "YES";
66         else
67             val = "NO";
68         end
69     end
70     
71     if win64() then
72         if dlwIsExpress() then
73             arch = "x86_amd64";
74         else
75             arch = "x64";
76         end
77     else
78         arch = "x86";
79     end
80
81     path = dlwGetVisualStudioPath();
82
83     scibuild = [ ...
84     "@call """ + path + "\VC\vcvarsall.bat"" " + arch;
85     "set DEBUG_SCILAB_DYNAMIC_LINK=" + val;
86     cmd
87     ];
88
89     filename = TMPDIR + "/scibuild.bat";
90     mputl(scibuild, filename);
91     //filename = "call " + filename;
92 endfunction