ilib_for_link, ilib_build do not accept files with ".o" or ".obj" extensions for...
[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 // 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     error(999, msprintf(_("%s: A managed file extension for input argument #%d expected."), "ilib_mex_build", 3));
31   end
32   
33   if ~isempty(files) & ~and(isfile(files)) then
34     error(999, msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_mex_build", 3));
35   end  
36   
37   if rhs <= 5 then ldflags = ""; end
38   if rhs <= 6 then cflags  = ""; end
39   if rhs <= 7 then fflags  = ""; end
40   if rhs <= 8 then cc  = ""; end
41
42   if ~isdef("makename") then
43     makename = "";
44   end
45
46
47   if getos() <> "Windows" then
48     // These flags are important... The rename of the fly the name of the
49     // function in the C / C++ / Fortran code
50     cflags=" -DmexFunction=mex_\$* " + cflags
51     fflags=" -Dmexfunction=mex\$* " + fflags
52   end
53
54   ilib_build(ilib_name, table, files, libs, makename, ldflags, cflags, fflags, %t, cc);
55
56 endfunction
57 //=============================================================================