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'];
90 SCIDIR1 = pathconvert(SCI,%f,%f,'w');
104 if isempty(libname) then
110 FILES_SRC_MATRIX = [];
112 [path_Make, file_Make, ext_Make] = fileparts(Makename);
114 for i=1:size(files,'*')
115 [path_f, file_f, ext_f] = fileparts(files(i));
118 for y = managed_ext(:)'
119 if (FILE_FOUNDED == %f) then
120 if (fileinfo(path_f + file_f + y) <> []) | (fileinfo(path_Make + file_f + y) <> []) then
121 FILENAME = path_f + file_f + y;
126 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , FILENAME];
129 if typeof(tables) <> 'list' then
130 tables = list(tables);
136 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , name + '.c'];
139 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , name + string(i) + '.c'];
146 [mt,nt] = size(table);
149 if table(i,3)=='cmex' | table(i,3)=='fmex' | table(i,3)=='Fmex' then
150 MEXCFLAGS = "-Dmexfunction_=mex" + table(i,2) + "_ -DmexFunction=mex_" + table(i,2);
151 MEXFFLAGS = "-Dmexfunction=mex" + table(i,2);
152 if table(i,3)=='cmex' then
153 filenameMex = table(i,2) + '.c';
155 filenameMex = table(i,2) + '.f';
157 if grep(FILES_SRC_MATRIX,filenameMex) == [] then
158 FILES_SRC_MATRIX = [FILES_SRC_MATRIX , filenameMex];
164 if isempty(FILES_SRC_MATRIX) | ~and(isfile(FILES_SRC_MATRIX)) then
165 error(999, msprintf(_("%s: Wrong value for input argument #%d: existing file(s) expected.\n"), "ilib_gen_Make", 3));
168 FILES_SRC = strcat(FILES_SRC_MATRIX,' ');
171 if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","NO") == "NO") then
172 OBJ_DEST_PATH = "Release/";
174 OBJ_DEST_PATH = "Debug/";
178 OBJS_WITH_PATH_MATRIX = [];
180 for y = 1:size(FILES_SRC_MATRIX,'*')
181 [path_f, file_f, ext_f] = fileparts(FILES_SRC_MATRIX(y));
182 OBJS_MATRIX = [OBJS_MATRIX, path_f + file_f + '.obj'];
183 OBJS_WITH_PATH_MATRIX = [OBJS_WITH_PATH_MATRIX, OBJ_DEST_PATH + path_f + file_f + '.obj'];
186 OBJS = strcat(OBJS_MATRIX, ' ');
187 OBJS_WITH_PATH = strcat(OBJS_WITH_PATH_MATRIX, ' ');
189 if ( or(fileext(FILES_SRC_MATRIX) == '.f90') | or(fileext(FILES_SRC_MATRIX) == '.f') ) then
190 if findmsifortcompiler() <> 'unknown' then
191 if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","NO") == "NO") then
192 FORTRAN_RUNTIME = 'libifcoremd.lib libmmd.lib';
194 FORTRAN_RUNTIME = 'libifcoremdd.lib libmmdd.lib';
200 if (x <> [] & x <> '') then
201 if OTHERLIBS <> '' then
202 OTHERLIBS = OTHERLIBS + ' ' + x + '.lib';
204 OTHERLIBS = x + '.lib';
209 if isfile(SCI+'/modules/dynamic_link/src/scripts/TEMPLATE_MAKEFILE.VC') then
210 MAKEFILE_VC = mgetl(SCI+'/modules/dynamic_link/src/scripts/TEMPLATE_MAKEFILE.VC');
215 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__SCI__", SCIDIR);
216 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__SCIDIR1__", SCIDIR1);
217 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__LIBNAME__", LIBRARY);
218 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__FILES_SRC__", FILES_SRC);
219 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__OBJS__", OBJS);
220 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__OBJS_WITH_PATH__", OBJS_WITH_PATH);
221 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__FORTRAN_RUNTIME__", FORTRAN_RUNTIME);
222 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__OTHERSLIBS__", OTHERLIBS);
225 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__CC__",CC);
227 MAKEFILE_VC = strsubst(MAKEFILE_VC, "CC = __CC__","#CC = ");
230 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__CFLAGS__", CFLAGS);
231 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__MEXCFLAGS__", MEXCFLAGS);
232 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__FFLAGS__", FFLAGS);
233 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__MEXFFLAGS__", MEXFFLAGS);
234 MAKEFILE_VC = strsubst(MAKEFILE_VC, "__LDFLAGS__", LDFLAGS);
236 if ( MAKEFILE_VC <> '') then
237 mputl(MAKEFILE_VC, Makename);
239 if ilib_verbose() > 1 then
244 // TEMPLATE_MAKEFILE.VC not found
245 warning(SCI+'/modules/dynamic_link/src/scripts/TEMPLATE_MAKEFILE.VC'+ _('not found.') );
248 //=============================================================================