1 // Copyright (C) DIGITEO - 2010-2011 - Allan CORNET
3 // This file must be used under the terms of the CeCILL.
4 // This source file is licensed as described in the file COPYING, which
5 // you should have received as part of this distribution. The terms
6 // are also available at
7 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
8 //=============================================================================
9 function Makename = dlwGenerateMakefile(name, ..
23 error(msprintf(gettext("%s: Wrong number of input argument(s): at least %d expected.\n"), "dlwGenerateMakefile", 4));
34 if ~isdef('makename') then
38 // change table if necessary
40 if typeof(tables)<>'list' then
47 [mt, nt] = size(table);
51 table = [table, col(ones(mt,1))];
56 error(msprintf(gettext("%s: Wrong size for input argument #%d.\n") ,"dlwGenerateMakefile", 2));
62 if isempty(makename) then
63 Makename = dlwGetDefltMakefileName() + dlwGetMakefileExt();
65 Makename = makename + dlwGetMakefileExt();
68 if length(libname) > 0 & strncpy(libname, 3) <> 'lib' then
69 libname = 'lib' + libname;
72 ilib_gen_Make_win32(name, tables, files, libs, libname, Makename, with_gateway, ldflags, cflags, fflags)
75 //=============================================================================
76 function ilib_gen_Make_win32(name, ..
87 managed_ext = ['.cxx', '.cpp', '.c', '.f90', '.f'];
103 SCILAB_INCLUDES = dlwGetScilabIncludes();
104 SCILAB_INCLUDES = "-I""" + SCILAB_INCLUDES + """";
105 SCILAB_INCLUDES = [SCILAB_INCLUDES(1:$-1) + " \"; SCILAB_INCLUDES($)];
106 SCILAB_INCLUDES = strcat(SCILAB_INCLUDES, ascii(10));
108 SCILAB_LIBS = dlwGetScilabLibraries();
109 SCILAB_LIBS = """$(SCIDIR)/bin/" + SCILAB_LIBS + """";
110 SCILAB_LIBS = [SCILAB_LIBS(1:$-1) + " \"; SCILAB_LIBS($)];
111 SCILAB_LIBS = strcat(SCILAB_LIBS, ascii(10));
113 if isempty(libname) then
119 FILES_SRC_MATRIX = [];
121 [path_Make, file_Make, ext_Make] = fileparts(Makename);
123 for i=1:size(files,'*')
124 [path_f, file_f, ext_f] = fileparts(files(i));
127 for y = managed_ext(:)'
128 if (FILE_FOUNDED == %f) then
129 if (fileinfo(path_f + file_f + y) <> []) | (fileinfo(path_Make + file_f + y) <> []) then
130 FILENAME = path_f + file_f + y;
135 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , FILENAME];
138 if typeof(tables) <> 'list' then
139 tables = list(tables);
145 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , name + '.c'];
148 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , name + string(i) + '.c'];
155 [mt,nt] = size(table);
158 if table(i,3)=='cmex' | table(i,3)=='fmex' | table(i,3)=='Fmex' then
159 MEXCFLAGS = "-Dmexfunction_=mex" + table(i,2) + "_ -DmexFunction=mex_" + table(i,2);
160 MEXFFLAGS = "-Dmexfunction=mex" + table(i,2);
161 if table(i,3)=='cmex' then
162 filenameMex = table(i,2) + '.c';
164 filenameMex = table(i,2) + '.f';
166 if grep(FILES_SRC_MATRIX,filenameMex) == [] then
167 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , filenameMex];
173 if isempty(FILES_SRC_MATRIX) | ~and(isfile(FILES_SRC_MATRIX)) then
174 error(999, msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_gen_Make", 3));
177 FILES_SRC = strcat(FILES_SRC_MATRIX,' ');
180 if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","NO") == "NO") then
181 OBJ_DEST_PATH = "Release/";
183 OBJ_DEST_PATH = "Debug/";
187 OBJS_WITH_PATH_MATRIX = [];
189 for y = 1:size(FILES_SRC_MATRIX,'*')
190 [path_f, file_f, ext_f] = fileparts(FILES_SRC_MATRIX(y));
191 OBJS_MATRIX = [OBJS_MATRIX, path_f + file_f + '.obj'];
192 OBJS_WITH_PATH_MATRIX = [OBJS_WITH_PATH_MATRIX, OBJ_DEST_PATH + path_f + file_f + '.obj'];
195 OBJS = strcat(OBJS_MATRIX, ' ');
196 OBJS_WITH_PATH = strcat(OBJS_WITH_PATH_MATRIX, ' ');
198 if ( or(fileext(FILES_SRC_MATRIX) == '.f90') | or(fileext(FILES_SRC_MATRIX) == '.f') ) then
199 if findmsifortcompiler() <> 'unknown' then
200 if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","NO") == "NO") then
201 FORTRAN_RUNTIME = 'libifcoremd.lib libmmd.lib';
203 FORTRAN_RUNTIME = 'libifcoremdd.lib libmmdd.lib';
209 if (x <> [] & x <> '') then
210 if OTHERLIBS <> '' then
211 OTHERLIBS = OTHERLIBS + ' ' + x + '.lib';
213 OTHERLIBS = x + '.lib';
218 if isfile(SCI+'/modules/dynamic_link/src/scripts/TEMPLATE_MAKEFILE.VC') then
219 MAKEFILE_VC = mgetl(SCI+'/modules/dynamic_link/src/scripts/TEMPLATE_MAKEFILE.VC');
224 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__SCI__", SCIDIR);
225 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__SCILAB_INCLUDES__", SCILAB_INCLUDES);
226 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__SCILAB_LIBS__",SCILAB_LIBS);
227 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__LIBNAME__", LIBRARY);
228 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__FILES_SRC__", FILES_SRC);
229 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__OBJS__", OBJS);
230 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__OBJS_WITH_PATH__", OBJS_WITH_PATH);
231 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__FORTRAN_RUNTIME__", FORTRAN_RUNTIME);
232 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__OTHERSLIBS__", OTHERLIBS);
235 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__CC__",CC);
237 MAKEFILE_VC = strsubst(MAKEFILE_VC, "CC = __CC__","#CC = ");
240 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__CFLAGS__", CFLAGS);
241 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__MEXCFLAGS__", MEXCFLAGS);
242 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__FFLAGS__", FFLAGS);
243 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__MEXFFLAGS__", MEXFFLAGS);
244 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__LDFLAGS__", LDFLAGS);
246 if ( MAKEFILE_VC <> '') then
247 mputl(MAKEFILE_VC, Makename);
249 if ilib_verbose() > 1 then
254 // TEMPLATE_MAKEFILE.VC not found
255 warning(SCI+'/modules/dynamic_link/src/scripts/TEMPLATE_MAKEFILE.VC'+ _('not found.') );
258 //=============================================================================