bug 4528 !!!
Allan CORNET [Tue, 19 May 2009 13:14:40 +0000 (15:14 +0200)]
scilab/CHANGES_5.2.X
scilab/contrib/toolbox_skeleton/.gitignore
scilab/modules/dynamic_link/macros/ilib_compile.sci
scilab/modules/dynamic_link/macros/ilib_gen_Make.sci
scilab/modules/dynamic_link/src/scripts/Makedll.incl
scilab/modules/dynamic_link/src/scripts/Makefile.incl.mak
scilab/modules/dynamic_link/tests/nonreg_tests/bug_4528.tst [new file with mode: 0644]

index 43704bb..c5524dc 100644 (file)
@@ -210,3 +210,5 @@ Bug fixes:
 * bug 4515 fixed - linking and loading some external functions already used crashs scilab.
 
 * bug 4525 fixed - scilab.sln and scilab_f2c.sln do not apply same dependencies on libraries (windows).
+
+* bug 4528 fixed - makefile (windows) generated by ilib_for_link forces to rebuild all files each time.
index cd92024..3170ef1 100644 (file)
@@ -4,6 +4,7 @@
 loader.sce
 cleaner.sce
 loader_gateway.sce
+cleaner_gateway.sce
 #
 # Generated files (Windows)
 #
index 1fad948..61a731f 100644 (file)
@@ -60,18 +60,8 @@ function libn = ilib_compile(lib_name,makename,files, ..
       if ( ilib_verbose() <> 0 ) then
         mprintf(_("   Compilation of ") + string(files1(i)) +'\n');
       end
-      if ilib_verbose() > 1 then
-        msg = unix_g(make_command+makename + ' '+ files(i));
-        msgs_make = [ msgs_make ; msg ];
-      else
-        unix_s(make_command+makename + ' '+ files(i)); 
-      end
     end
     
-    if ( (ilib_verbose() > 1) ) then
-      disp(msgs_make);
-         end
-    
     // then the shared library 
     if ( ilib_verbose() <> 0 ) then
       mprintf(_("   Building shared library (be patient)\n"));
@@ -79,10 +69,10 @@ function libn = ilib_compile(lib_name,makename,files, ..
     
     // TO DO : Check if it is always needed ...
     if ilib_verbose() > 1 then
-      msg = unix_g(make_command + makename + ' '+ lib_name); 
+      msg = unix_g(make_command + makename + ' all'); 
       disp(msg);
     else
-      unix_s(make_command + makename + ' '+ lib_name); 
+      unix_s(make_command + makename + ' all'); 
     end
    
   else
index 8e23bee..498c833 100644 (file)
@@ -124,25 +124,30 @@ function ilib_gen_Make_win32(name,table,files,libs,Makename,with_gateway,ldflags
        end 
     end
   end
-  
+
   for it=1:L 
     table = tables(it);
     [mt,nt] = size(table);
  
-    for i=1:mt ; 
-      // mex files to be added 
-      if table(i,3)=='cmex' | table(i,3)=='fmex' | table(i,3)=='Fmex' 
-        FILES_SRC_MATRIX = [FILES_SRC_MATRIX , table(i,2)];
+    for i=1:mt  
+      if table(i,3)=='cmex' | table(i,3)=='fmex' | table(i,3)=='Fmex' then
+        MEXCFLAGS = "-Dmexfunction_=mex" + table(i,2) + "_ -DmexFunction=mex_" + table(i,2);
+        MEXFFLAGS = "-Dmexfunction=mex" + table(i,2);
+        if table(i,3)=='cmex' then
+          filenameMex = table(i,2) + '.c';
+        else
+          filenameMex = table(i,2) + '.f';
+        end
+        if grep(FILES_SRC_MATRIX,filenameMex) == [] then
+          FILES_SRC_MATRIX = [FILES_SRC_MATRIX , filenameMex];
+        end
       end
     end
   end
+
   
   FILES_SRC = strcat(FILES_SRC_MATRIX,' ');
   
-  if table(i,3)=='cmex' | table(i,3)=='fmex' | table(i,3)=='Fmex' then
-    MEXCFLAGS = "-Dmexfunction_=mex$*_ -DmexFunction=mex_$*";
-    MEXFFLAGS = "-Dmexfunction=mex$*";
-  end
 
   OBJ_DEST_PATH = '';
   if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","NO") == "NO") then
index b4071a9..462bdaf 100644 (file)
@@ -5,7 +5,7 @@ SCIIMPLIB="$(SCIDIR)/bin/LibScilab.lib"
 
 all :: $(LIBRARY).dll
 
-$(LIBRARY).dll: $(OBJS)
+$(LIBRARY).dll: $(OBJS_WITH_PATH)
        @echo Creation of dll $(LIBRARY).dll and import lib from ...
        @echo $(OBJS)
        $(DUMPEXTS) -o "$*.def" "$*.dll" $(OBJS_WITH_PATH)
index 155fbcf..c0f3fc2 100644 (file)
@@ -87,37 +87,33 @@ SCILAB_LIBS="$(SCIDIR1)/bin/MALLOC.lib" "$(SCIDIR1)/bin/blasplus.lib" \
 "$(SCIDIR1)/bin/libintl.lib" "$(SCIDIR1)/bin/linpack_f.lib" \
 "$(SCIDIR1)/bin/call_scilab.lib" "$(SCIDIR1)/bin/time.lib"
 #==================================================
-.c.obj :
+.c{$(DIR_OBJ)}.obj     :
        @echo ------------- Compile file $< --------------
-       -mkdir $(DIR_OBJ)
-
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
        $(CC) $(CFLAGS) $< 
 
-.cxx.obj       :
+.cxx{$(DIR_OBJ)}.obj   :
        @echo ------------- Compile file $< --------------
-       -mkdir $(DIR_OBJ)
-
-       @$(CC) $(CFLAGS) /EHsc $*.cxx 
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
+       @$(CC) $(CFLAGS) /EHsc $< 
 
-.cpp.obj       :
+.cpp{$(DIR_OBJ)}.obj   :
        @echo ------------- Compile file $< --------------
-       -mkdir $(DIR_OBJ)
-
-       @$(CC) $(CFLAGS) /EHsc $*.cpp
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
+       @$(CC) $(CFLAGS) /EHsc $<
 
 # default rule for Fortran 77 & 90 Compilation 
 
 !IF "$(USE_F2C)" == "YES"
 
-.f.obj :
+.f{$(DIR_OBJ)}.obj     :
        @echo ----------- Compile file $*.f (using f2c) -------------
 !IF "$(F2C_IMPORT_COMMON)" == "YES"    
        @"$(SCIDIR1)/bin/f2c.exe" -E -I"$(SCIDIR1)/modules/core/includes" $(FFLAGS) $*.f 2>NUL
 !ELSE  
        @"$(SCIDIR1)/bin/f2c.exe" -I"$(SCIDIR1)/modules/core/includes" $(FFLAGS) $*.f 2>NUL
 !ENDIF
-       -mkdir $(DIR_OBJ)
-
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
        @$(CC) $(CFLAGS) $*.c 
 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
 
@@ -127,10 +123,9 @@ SCILAB_LIBS="$(SCIDIR1)/bin/MALLOC.lib" "$(SCIDIR1)/bin/blasplus.lib" \
        
 !ELSE 
 
-.f.obj :
+.f{$(DIR_OBJ)}.obj     :
        @echo -----------Compile file $*.f  (using $(FC)) -------------
-       -mkdir $(DIR_OBJ)
-
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
        @$(FC) $(FFLAGS) $<
        
 !ENDIF
@@ -141,10 +136,9 @@ SCILAB_LIBS="$(SCIDIR1)/bin/MALLOC.lib" "$(SCIDIR1)/bin/blasplus.lib" \
        @echo F2C cannot build .f90 file
 !ELSE 
 
-.f90.obj       :
+.f90{$(DIR_OBJ)}.obj   :
        @echo -----------Compile file $*.f90  (using $(FC)) -------------
-       -mkdir $(DIR_OBJ)
-
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
        @$(FC) $(FFLAGS) $<
        
 !ENDIF
@@ -159,6 +153,7 @@ clean::
 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
   -del "$(DIR_OBJ)\*.pdb"
 !ENDIF
+  -rmdir "$(DIR_OBJ)"
 #==================================================
 distclean::  
   -del *.bak 
@@ -166,5 +161,6 @@ distclean::
 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
   -del "$(DIR_OBJ)\*.pdb"
 !ENDIF
+  -rmdir "$(DIR_OBJ)"
 #==================================================
 
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_4528.tst b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_4528.tst
new file mode 100644 (file)
index 0000000..9c0ee3e
--- /dev/null
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 4528 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4528
+//
+// <-- Short Description -->
+// makefile (windows) generated by ilib_for_link forces to rebuild all files each time
+
+// <-- INTERACTIVE TEST -->
+
+// WINDOWS ONLY
+
+cd SCI/contrib/toolbox_skeleton
+for i=1:10
+exec('builder.sce')
+end
+
+// check that only first exec build all
+                    
\ No newline at end of file