fix trouble with debug/release detection on Windows dynamic_link
[scilab.git] / scilab / modules / dynamic_link / macros / windows / dlwMake.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) DIGITEO - 2010 - Allan CORNET
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12 //=============================================================================
13 function res = dlwMake(files, objects_or_dll)
14
15     if ~haveacompiler() then
16         error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), "G_make"))
17     end
18
19     [lhs,rhs] = argn(0);
20     if rhs <> 2 then
21         error(msprintf(gettext("%s: Wrong number of input argument(s).\n"), "G_make"));
22     end
23
24     msg = "";
25
26     if typeof(objects_or_dll)<>"string" then
27         error(sprintf(gettext("%s: Wrong type for input argument #%d: String expected."), "G_make", 2));
28     end
29
30     OBJ = "";
31     [ptmp, ftmp, fext] = fileparts(objects_or_dll);
32     OBJ = ptmp + ftmp;
33
34     //create a scibuild.bat file in TMPDIR directory
35     cmd = "nmake /Y /nologo /f Makefile.mak " + OBJ;
36     scibuildfile = writeBatchFile(cmd);
37     if ilib_verbose() > 1 then
38         msg = unix_g(scibuildfile);
39         disp(msg);
40     else
41         host(scibuildfile);
42     end
43
44     deletefile(scibuildfile);
45     res = [OBJ];
46
47 endfunction
48 //=============================================================================
49 function filename = writeBatchFile(cmd)
50
51     //update DEBUG_SCILAB_DYNAMIC_LINK to match with Scilab compilation mode
52     val = getenv("DEBUG_SCILAB_DYNAMIC_LINK","");
53     if val <> "NO" & val <> "YES" then
54         if isDebug() then
55             val = "YES";
56         else
57             val = "NO";
58         end
59     end
60
61     if win64() then
62         arch = "x64";
63     else
64         arch = "x86";
65     end
66
67     path = dlwGetVisualStudioPath();
68
69     scibuild = [ ...
70     "@call """ + path + "\VC\vcvarsall.bat"" " + arch;
71     "set DEBUG_SCILAB_DYNAMIC_LINK=" + val;
72     cmd
73     ];
74
75     filename = TMPDIR + "/scibuild.bat";
76     mputl(scibuild, filename);
77     //filename = "call " + filename;
78 endfunction