bug 7481 51/1251/2
Allan CORNET [Tue, 6 Jul 2010 12:34:22 +0000 (14:34 +0200)]
Change-Id: I17ed4afcc42fa2c7f51057169dde40c1c373f077

scilab/CHANGES_5.3.X
scilab/modules/dynamic_link/macros/ilib_for_link.sci
scilab/modules/dynamic_link/macros/ilib_gen_Make.sci
scilab/modules/dynamic_link/macros/windows/dlwGenerateMakefile.sci
scilab/modules/dynamic_link/tests/nonreg_tests/bug_7481.dia.ref [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_7481.tst [new file with mode: 0644]

index f9331e4..76ed30e 100644 (file)
@@ -60,6 +60,10 @@ Bug Fixes:
 * bug 7480 fixed - Xcos conditional compilation produce a too long script on
                    the Scilab queue.
 
+* bug 7481 fixed - 6th input argument of ilib_for_link did not allow to set 
+                   library name on Windows.
+
+
            Changes between version 5.2.X and 5.3.0-beta1 of Scilab
            =======================================================
 
index 127095b..85cce5e 100644 (file)
@@ -151,6 +151,7 @@ function generateMakefile(names, ..
                                     [], ..
                                     files, ..
                                     libs, ..
+                                    libname, ..
                                     makename, ..
                                     %f, ..
                                     ldflags, ..
index 72dce76..daacab0 100644 (file)
@@ -76,10 +76,12 @@ function Makename = ilib_gen_Make(name, ..
     if ~ exists("dynamic_linkwindowslib") then
       load("SCI/modules/dynamic_link/macros/windows/lib");
     end
+    library_name = []; // auto. name library
     Makename = dlwGenerateMakefile(name, ..
                                  tables, ..
                                  files, ..
                                  libs, ..
+                                 library_name, ..
                                  makename, ..
                                  with_gateway, ..
                                  ldflags, ..
index e3f011e..3005e22 100644 (file)
@@ -10,6 +10,7 @@ function Makename = dlwGenerateMakefile(name, ..
                                  tables, ..
                                  files, ..
                                  libs, ..
+                                 libname, ..
                                  makename, ..
                                  with_gateway, ..
                                  ldflags, ..
@@ -29,7 +30,7 @@ function Makename = dlwGenerateMakefile(name, ..
     fflags = '';
     cc = '';
   end
-  
+
   if ~isdef('makename') then
     makename = '';
   end
@@ -55,7 +56,7 @@ function Makename = dlwGenerateMakefile(name, ..
       [mt, nt] = size(table);
 
       if nt == 2 then
-        col= "csci";  
+        col= "csci";
         table = [table, col(ones(mt,1))];
         nt=3;
       end
@@ -66,15 +67,18 @@ function Makename = dlwGenerateMakefile(name, ..
       tables(it) = table;
     end
   end
-  
+
   if isempty(makename) then
     Makename = dlwGetDefltMakefileName() + dlwGetMakefileExt();
   else
     Makename = makename + dlwGetMakefileExt();
   end
-  
-  
-  ilib_gen_Make_win32(name, tables, files, libs, Makename, with_gateway, ldflags, cflags, fflags)
+
+  if length(libname) > 0  & strncpy(libname, 3) <> 'lib' then
+    libname = 'lib' + libname;
+  end
+
+  ilib_gen_Make_win32(name, tables, files, libs, libname, Makename, with_gateway, ldflags, cflags, fflags)
 
 endfunction
 //=============================================================================
@@ -82,6 +86,7 @@ function ilib_gen_Make_win32(name, ..
                              table, ..
                              files, ..
                              libs, ..
+                             libname, ..
                              Makename, ..
                              with_gateway, ..
                              ldflags, ..
@@ -106,6 +111,12 @@ function ilib_gen_Make_win32(name, ..
   MEXFFLAGS = '';
   LDFLAGS = ldflags;
 
+  if isempty(libname) then
+    LIBRARY = name;
+  else
+    LIBRARY = libname;
+  end
+
   FILES_SRC_MATRIX = [];
 
   [path_Make, file_Make, ext_Make] = fileparts(Makename);
@@ -199,7 +210,7 @@ function ilib_gen_Make_win32(name, ..
   end
 
   for x=libs(:)'
-     if (x <> [] & x <> '') then 
+     if (x <> [] & x <> '') then
        if OTHERLIBS <> '' then
          OTHERLIBS = OTHERLIBS + ' ' + x + '.lib';
        else
@@ -236,9 +247,7 @@ function ilib_gen_Make_win32(name, ..
   MAKEFILE_VC = strsubst(MAKEFILE_VC, "__LDFLAGS__", LDFLAGS);
 
   if ( MAKEFILE_VC <> '') then
-    fd = mopen(Makename, "wt");
-    mputl(MAKEFILE_VC, fd);
-    mclose(fd);
+    mputl(MAKEFILE_VC, Makename);
 
     if ilib_verbose() > 1 then
       disp(MAKEFILE_VC);
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7481.dia.ref b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7481.dia.ref
new file mode 100644 (file)
index 0000000..477d06c
--- /dev/null
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- JVM NOT MANDATORY -->
+//
+// <-- Non-regression test for bug 7481 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7481
+// <-- Short Description -->
+// 6th input argument of ilib_for_link did not allow to set library name
+// on Windows
+//
+ilib_verbose(0);
+cd  TMPDIR;
+f1=["int ext1c(int *n, double *a, double *b, double *c)"
+    "{int k;"
+    "  for (k = 0; k < *n; ++k) "
+    "      c[k] = a[k] + b[k];"
+    "  return(0);}"];
+mputl(f1,"fun1.c");
+libname = ilib_for_link("ext1c", "fun1.c", [], "c", [], "loader.sce", "test");
+refname = "libtest" + getdynlibext();
+if refname <> libname then bugmes();quit;end
+exec('loader.sce');
+// =============================================================================
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7481.tst b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_7481.tst
new file mode 100644 (file)
index 0000000..eb9588f
--- /dev/null
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- JVM NOT MANDATORY -->
+//
+// <-- Non-regression test for bug 7481 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7481
+// <-- Short Description -->
+// 6th input argument of ilib_for_link did not allow to set library name
+// on Windows
+//
+ilib_verbose(0);
+cd  TMPDIR;
+f1=["int ext1c(int *n, double *a, double *b, double *c)"
+    "{int k;"
+    "  for (k = 0; k < *n; ++k) "
+    "      c[k] = a[k] + b[k];"
+    "  return(0);}"];
+
+mputl(f1,"fun1.c");
+libname = ilib_for_link("ext1c", "fun1.c", [], "c", [], "loader.sce", "test");
+refname = "libtest" + getdynlibext();
+if refname <> libname then pause, end
+exec('loader.sce');
+// =============================================================================