Merge remote-tracking branch 'origin/6.1'
[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-2011 - DIGITEO - Allan CORNET
5 //
6 // Copyright (C) 2012 - 2016 - Scilab Enterprises
7 //
8 // This file is hereby licensed under the terms of the GNU GPL v2.0,
9 // pursuant to article 5.3.4 of the CeCILL v.2.1.
10 // This file was originally licensed under the terms of the CeCILL v2.1,
11 // and continues to be available under such terms.
12 // For more information, see the COPYING file which you should have received
13 // along with this program.
14 //=============================================================================
15 function ilib_mex_build(ilib_name, table, files, libs, makename, ldflags, cflags, fflags, cc)
16
17     if ~haveacompiler() then
18         error(msprintf(gettext("%s: A Fortran or C compiler is required.\n"), "ilib_mex_build"));
19         return;
20     end
21
22     [lhs,rhs] = argn(0);
23     if rhs < 4 then
24         error(msprintf(gettext("%s: Wrong number of input argument(s).\n"), "ilib_mex_build"));
25         return
26     end
27
28     if rhs > 4 & makename <> [] & makename <> "" then
29         warning(msprintf(_("%s: Wrong value for input argument #%d: """" or ""[]"" expected.\n"),"ilib_mex_build", 5));
30     end
31
32     if ~isempty(files) & (or(fileext(files)==".o") | or(fileext(files)==".obj")) then
33         error(msprintf(_("%s: A managed file extension for input argument #%d expected."), "ilib_mex_build", 3));
34     end
35
36     if ~isempty(files) & ~and(isfile(files)) then
37         error(msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_mex_build", 3));
38     end
39
40     if rhs <= 5 then ldflags = ""; end
41     if rhs <= 6 then cflags  = ""; end
42     if rhs <= 7 then fflags  = ""; end
43     if rhs <= 8 then cc  = ""; end
44
45     if ~isdef("makename") then
46         makename = "";
47     end
48
49
50     if getos() <> "Windows" then
51         // These flags are important... The rename of the fly the name of the
52         // function in the C / C++ / Fortran code
53         cflags=" -DmexFunction=mex_\$* " + cflags
54         fflags=" -Dmexfunction=mex\$* " + fflags
55     end
56
57     ilib_build(ilib_name, table, files, libs, makename, ldflags, cflags, fflags, %t, cc);
58
59 endfunction
60 //=============================================================================