bug 4548
Allan CORNET [Fri, 29 May 2009 14:55:45 +0000 (16:55 +0200)]
scilab/CHANGES_5.2.X
scilab/modules/dynamic_link/etc/dynamic_link.start
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_4548.tst [new file with mode: 0644]

index 441542b..99d7dfd 100644 (file)
@@ -223,3 +223,4 @@ Bug fixes:
 
 * bug 4547 fixed - examples of javasci with graphics are no more interactive.
 
+* bug 4548 fixed - with intel fortran, file unit opened in a external dll are not shared.
\ No newline at end of file
index f632ff8..fa05bca 100644 (file)
@@ -26,6 +26,8 @@ if MSDOS then
     if (findmsifortcompiler()<>'unknown') then
       configure_msifort();
       clear configure_msifort
+    else
+      setenv('USE_F2C','YES');  
     end
     clear findmsifortcompiler
   else
index 462bdaf..106e37d 100644 (file)
@@ -9,7 +9,9 @@ $(LIBRARY).dll: $(OBJS_WITH_PATH)
        @echo Creation of dll $(LIBRARY).dll and import lib from ...
        @echo $(OBJS)
        $(DUMPEXTS) -o "$*.def" "$*.dll" $(OBJS_WITH_PATH)
-       $(LINKER) $(LINKER_FLAGS) $(OBJS_WITH_PATH) $(OTHERLIBS) $(SCIIMPLIB) $(SCILAB_LIBS) $(EXTRA_LDFLAGS) /nologo /dll /out:"$*.dll" /implib:"$*.lib" /def:"$*.def" 
+       $(LINKER) $(LINKER_FLAGS) $(OBJS_WITH_PATH) $(OTHERLIBS) \
+$(SCIIMPLIB) $(FORTRAN_RUNTIME_LIBRARIES) $(SCILAB_LIBS) \
+$(EXTRA_LDFLAGS) /nologo /dll /out:"$*.dll" /implib:"$*.lib" /def:"$*.def" 
 
 clean  ::
        -del "$(DIR_OBJ)\*.obj"
index 7039a88..b0c99a1 100644 (file)
@@ -30,7 +30,7 @@ LINKER_OPTIMISATION_MODE=/RELEASE
 CC__OPTIMISATION_MODE=-Z7 -O2
 !ENDIF
 
-CC_COMMON=-D__MSC__ $(DWIN) -c -DSTRICT -D_CRT_SECURE_NO_DEPRECATE -D__MAKEFILEVC__ -nologo $(INCLUDES)
+CC_COMMON=-D__MSC__ -DFORDLL $(DWIN) -c -DSTRICT -D_CRT_SECURE_NO_DEPRECATE -D__MAKEFILEVC__ -nologo $(INCLUDES)
 LINKER_FLAGS=/NOLOGO $(MACHINE) $(LINKER_OPTIMISATION_MODE)
 CC_OPTIONS = $(CC_COMMON) -W3 -Gd $(CC__OPTIMISATION_MODE) /Fo"$(DIR_OBJ)/" /Fd"$(DIR_OBJ)/"
 
@@ -65,8 +65,21 @@ USE_F2C=NO
 # if USE_F2C is set to NO we will use the following Fortran compiler (i.e Intel Fortran 10.x)
 !IF "$(USE_F2C)" == "NO"
 FC=ifort 
-FC_OPTIONS=/debug /nologo /assume:underscore /compile_only /iface:cref /names:lowercase /Fo"$(DIR_OBJ)/" /Fd"$(DIR_OBJ)/" \
+FC_OPTIONS_COMMON=/nologo /G6 /DFORDLL /assume:underscore \
+/noaltparam /f77rtl /fpscomp:nolibs /names:lowercase \
+/iface:cref /libs:dll /threads /dbglibs /c /Qvc9 \
+/Fo"$(DIR_OBJ)/" /Fd"$(DIR_OBJ)/" \
 /include:"$(SCIDIR1)/modules/core/includes"
+#==================================================
+!IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
+FC_OPTIONS=$(FC_OPTIONS_COMMON) /Zi /Od /debug /dbglibs
+FORTRAN_RUNTIME_LIBRARIES = libifcoremdd.lib libmmdd.lib
+#==================================================
+!ELSE
+FC_OPTIONS=$(FC_OPTIONS_COMMON)
+FORTRAN_RUNTIME_LIBRARIES = libifcoremd.lib libmmd.lib
+!ENDIF
+#==================================================
 LINKER_FLAGS=$(LINKER_FLAGS) /force:multiple
 !ENDIF
 #==================================================
@@ -87,62 +100,60 @@ 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{$(DIR_OBJ)}.obj     :
-       @echo ------------- Compile file $< --------------
-       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
-       $(CC) $(CFLAGS) $< 
-
-.cxx{$(DIR_OBJ)}.obj   :
-       @echo ------------- Compile file $< --------------
-       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
-       @$(CC) $(CFLAGS) /EHsc $< 
-
-.cpp{$(DIR_OBJ)}.obj   :
-       @echo ------------- Compile file $< --------------
-       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
-       @$(CC) $(CFLAGS) /EHsc $<
-
-# default rule for Fortran 77 & 90 Compilation 
-
+# default rules for Fortran 77 & 90 Compilation 
+#==================================================
 !IF "$(USE_F2C)" == "YES"
-
+#==================================================
+# F2C
+#==================================================
 .f{$(DIR_OBJ)}.obj     :
        @echo ----------- Compile file $< (using f2c) -------------
 !IF "$(F2C_IMPORT_COMMON)" == "YES"    
        @"$(SCIDIR1)/bin/f2c.exe" -E -I"$(SCIDIR1)/modules/core/includes" $(FFLAGS) $< 2>NUL
-!ELSE  
+!ELSE
        @"$(SCIDIR1)/bin/f2c.exe" -I"$(SCIDIR1)/modules/core/includes" $(FFLAGS) $< 2>NUL
 !ENDIF
        -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
-       @$(CC) $(CFLAGS) $<
-!IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
 
+       @$(CC) $(CFLAGS) $(<:.f=.c)
+!IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
 !ELSE
-       -del $< 
+  -del $(<:.f=.c)
 !ENDIF
-       
-!ELSE 
-
+.f90{$(DIR_OBJ)}.obj   :
+       @echo F2C cannot build .f90 file        
+!ELSE
+#==================================================
+# INTEL FORTRAN
+#==================================================
 .f{$(DIR_OBJ)}.obj     :
-       @echo -----------Compile file $<  (using $(FC)) -------------
+       @echo ----------- Compile file $< (using INTEL FORTRAN) -------------
        -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
        @$(FC) $(FFLAGS) $<
-       
-!ENDIF
-
-!IF "$(USE_F2C)" == "YES"
-
-.f90.obj       :
-       @echo F2C cannot build .f90 file
-!ELSE 
-
 .f90{$(DIR_OBJ)}.obj   :
-       @echo -----------Compile file $<  (using $(FC)) -------------
+       @echo ----------- Compile file $< (using INTEL FORTRAN) -------------
        -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
        @$(FC) $(FFLAGS) $<
-       
 !ENDIF
-
+#==================================================
+# default rules for C++
+#==================================================
+.cxx{$(DIR_OBJ)}.obj   :
+       @echo ------------- Compile file $< --------------
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
+       @$(CC) $(CFLAGS) /EHsc $< 
+#==================================================
+.cpp{$(DIR_OBJ)}.obj   :
+       @echo ------------- Compile file $< --------------
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
+       @$(CC) $(CFLAGS) /EHsc $<
+#==================================================
+# default rules for C
+#==================================================
+.c{$(DIR_OBJ)}.obj     :
+       @echo ------------- Compile file $< --------------
+       -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
+       $(CC) $(CFLAGS) $< 
 #==================================================
 # clean 
 RM = del
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_4548.tst b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_4548.tst
new file mode 100644 (file)
index 0000000..4c573f5
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// 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 4548 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4548
+//
+// <-- Short Description -->
+// 
+
+// <-- INTERACTIVE TEST -->
+
+// WINDOWS ONLY
+// see bug in bugzilla
+// download attachment and tests
+                    
\ No newline at end of file