055ed058f89c56d9c45d89336ac452dbbbc6b998
[scilab.git] / scilab / modules / dynamic_link / macros / ilib_mex_build.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // Copyright (C) 2008 - INRIA - Sylvestre LEDRU (add cc options)
4 // Copyright (C) 2010 - DIGITEO - Allan CORNET
5 //
6 // This file must be used under the terms of the CeCILL.
7 // This source file is licensed as described in the file COPYING, which
8 // you should have received as part of this distribution.  The terms
9 // are also available at
10 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11 //=============================================================================
12 function ilib_mex_build(ilib_name, table, files, libs, makename, ldflags, cflags, fflags, cc)
13
14   if ~haveacompiler() then
15     error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), "ilib_mex_build"));
16     return;
17   end
18
19   [lhs,rhs] = argn(0);
20   if rhs < 4 then
21     error(msprintf(gettext("%s: Wrong number of input argument(s).\n"), "ilib_mex_build"));
22     return
23   end
24
25   if rhs > 4 & makename <> [] & makename <> "" then
26     warning(msprintf(_("%s: Wrong value for input argument #%d: """" or ""[]"" expected.\n"),"ilib_mex_build", 5));
27   end
28
29   if ~isempty(files) & (or(fileext(files)==".o") | or(fileext(files)==".obj")) then
30     warnobsolete(msprintf(_("A managed file extension for input argument #%d"), 3), "5.4.0");
31   end
32   
33   if rhs <= 5 then ldflags = ""; end
34   if rhs <= 6 then cflags  = ""; end
35   if rhs <= 7 then fflags  = ""; end
36   if rhs <= 8 then cc  = ""; end
37
38   if ~isdef("makename") then
39     makename = "";
40   end
41
42
43   if getos() <> "Windows" then
44     // These flags are important... The rename of the fly the name of the
45     // function in the C / C++ / Fortran code
46     cflags=" -DmexFunction=mex_\$* " + cflags
47     fflags=" -Dmexfunction=mex\$* " + fflags
48   end
49
50   ilib_build(ilib_name, table, files, libs, makename, ldflags, cflags, fflags, %t, cc);
51
52 endfunction
53 //=============================================================================
54
55