uses Intel fortran if detected (and not F2C) on Windows
Allan Cornet [Sat, 5 Jul 2008 09:31:43 +0000 (09:31 +0000)]
update .ref (rev 25725)

20 files changed:
scilab/CHANGES
scilab/Makefile.incl.mak
scilab/modules/dynamic_link/etc/dynamic_link.start
scilab/modules/dynamic_link/help/en_US/configure_msifort.xml [new file with mode: 0644]
scilab/modules/dynamic_link/help/en_US/findmsifortcompiler.xml [new file with mode: 0644]
scilab/modules/dynamic_link/macros/configure_msifort.sci [new file with mode: 0644]
scilab/modules/dynamic_link/macros/detectmsifort64tools.sci [new file with mode: 0644]
scilab/modules/dynamic_link/macros/findmsifortcompiler.sci [new file with mode: 0644]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_2085.win.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_2119.unix.dia.ref [moved from scilab/modules/dynamic_link/tests/nonreg_tests/bug_2119.dia.ref with 96% similarity]
scilab/modules/dynamic_link/tests/nonreg_tests/bug_2119.win.dia.ref [new file with mode: 0644]
scilab/modules/dynamic_link/tests/unit_tests/addinter.win.dia.ref [moved from scilab/modules/dynamic_link/tests/unit_tests/addinter.dia.ref with 93% similarity]
scilab/modules/dynamic_link/tests/unit_tests/call.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_build.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_for_link.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_mex_build.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/link.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/links.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/optim_external.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/schur_external.win.dia.ref

index fb5a1ff..3e8afaf 100644 (file)
@@ -420,6 +420,7 @@ Dynamic/incremental link:
 =========================
  - Module renamed to dynamic link
  - Visual Studio 2008 support
+ - Intel Fortran 10 support on Windows
  - Under Linux/Unix, now based on basic autotools for the detection of compiler
        and compilation.
  - New functions:
index af30d99..9c4ac8e 100644 (file)
@@ -1,72 +1,72 @@
-#----------------------------------------------
-# version for Visual C++
-#----------------------------------------------
-
+#==================================================
+# Visual C++/Intel Fortran 10.x 
+# Allan CORNET - 2008
+#==================================================
 all::
 MAKE=nmake /f Makefile.mak
-#----------------------------------------------
+#==================================================
 # C compiler
 # typically, for compiling use: CFLAGS = $(CC_OPTIONS)
 # and for linking: $(CC) -o $(PROGRAM) $(OBJS) $(CC_LDFLAGS)
-#----------------------------------------------
+#==================================================
 CC=cl
 LINKER=link
 
-# standard option for the linker
-!IF "$(WIN64)" == "OK"
-LINKER_FLAGS=/NOLOGO /machine:X64 /RELEASE
+!IF "$(WIN64)" == "OK" 
+MACHINE=/machine:X64
+DWIN=-D_WIN64
 !ELSE
-LINKER_FLAGS=/NOLOGO /machine:ix86 /RELEASE
+MACHINE=/machine:ix86
+DWIN=-DWIN32
 !ENDIF
 
-# debug for the linker
-!IF "$(WIN64)" == "OK" 
-#LINKER_FLAGS=/NOLOGO /machine:X64 /DEBUG
+!IF "DEBUG_SCILAB_DYNAMIC_LINK" == "YES"
+LINKER_OPTIMISATION_MODE=/DEBUG
+CC__OPTIMISATION_MODE=-Zi -Od
 !ELSE
-#LINKER_FLAGS=/NOLOGO /machine:ix86 /DEBUG
+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) $(DTK) $(USE_MT)
+LINKER_FLAGS=/NOLOGO $(MACHINE) $(LINKER_OPTIMISATION_MODE)
+CC_OPTIONS = $(CC_COMMON) -W3 -Gd $(CC__OPTIMISATION_MODE)
 
 # include options 
 INCLUDES=-I"$(SCIDIR)\libs\MALLOC\includes" -I"$(SCIDIR)\modules\core\includes" -I"$(SCIDIR)\modules\output_stream\includes" -I"$(SCIDIR)/libs/f2c" -I"$(SCIDIR)/modules/mexlib/includes" 
 
-!IF "$(WIN64)" == "OK" 
-CC_COMMON=-D__MSC__ -D_WIN64 -c -DSTRICT -D_CRT_SECURE_NO_DEPRECATE -D__MAKEFILEVC__ -nologo $(INCLUDES) $(DTK) $(USE_MT)
-!ELSE
-CC_COMMON=-D__MSC__ -DWIN32 -c -DSTRICT -D_CRT_SECURE_NO_DEPRECATE -D__MAKEFILEVC__ -nologo $(INCLUDES) $(DTK) $(USE_MT)
-!ENDIF
-
-# standard option for C compiler for VC 2008
-CC_OPTIONS = $(CC_COMMON) -Z7 -W3 -O2 -Gd
-
-# debug option for C compiler  for VC 2008
-#CC_OPTIONS = $(CC_COMMON) -Zi -W3 -Od -Gd
-
 CC_LDFLAGS = 
-#----------------------------------------------
+#==================================================
 # Fortran Compiler 
 # default usage is to use f2c 
-#----------------------------------------------
+#==================================================
+# detect intel fortran compiler 10.x family
+!IF "$(IFORT_COMPILER10)" == ""
 USE_F2C=YES
-# if USE_F2C is set to NO we will use the following Fortran compiler (i.e Intel Fortran 9.1)
+!ELSE
+USE_F2C=NO
+!ENDIF
+
+# 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,nomixed_str_len_arg) /names:lowercase 
+FC_OPTIONS=/debug /nologo /assume:underscore /compile_only /iface:cref /names:lowercase 
 LINKER_FLAGS=$(LINKER_FLAGS) /force:multiple
 !ENDIF
-#----------------------------------------------
+#==================================================
 # resource compiler 
-#----------------------------------------------
+#==================================================
 RC=rc
 RCVARS=-r -DWIN32
-#----------------------------------------------
+#==================================================
 # Libraries 
-#----------------------------------------------
+#==================================================
 GUIFLAGS=-SUBSYSTEM:console
 GUI=comctl32.lib wsock32.lib shell32.lib winspool.lib user32.lib gdi32.lib comdlg32.lib kernel32.lib advapi32.lib 
 GUILIBS=-NODEFAULTLIB:libc.lib -NODEFAULTLIB:msvcrt.lib $(GUI) libcmt.lib oldnames.lib
 # XLIBSBIN is used by the binary version of Scilab for linking examples
 XLIBSBIN= "$(SCIDIR1)\bin\MALLOC.lib" "$(SCIDIR1)\bin\blasplus.lib" "$(SCIDIR1)\bin\libf2c.lib" "$(SCIDIR1)\bin\lapack.lib" "$(SCIDIR1)\bin\scicos.lib" "$(SCIDIR1)\bin\intersci.lib" "$(SCIDIR1)\bin\scioutput_stream.lib" "$(SCIDIR1)\bin\dynamic_link.lib"
+#==================================================
 .c.obj :
        @echo ------------- Compile file $< --------------
        $(CC) $(CFLAGS) $< 
@@ -88,13 +88,14 @@ XLIBSBIN= "$(SCIDIR1)\bin\MALLOC.lib" "$(SCIDIR1)\bin\blasplus.lib" "$(SCIDIR1)\
        @echo -----------Compile file $*.f  (using $(FC)) -------------
        @$(FC) $(FFLAGS) $<
 !ENDIF 
-#----------------------------------------------
+#==================================================
 # clean 
 RM = del
-#----------------------------------------------
+#==================================================
 clean::
        -del *.bak 
   -del *.obj
 distclean::  
   -del *.bak 
   -del *.obj
+#==================================================
index 3ccc108..b23d563 100644 (file)
@@ -23,6 +23,11 @@ if MSDOS then
        if (findmsvccompiler()<>'unknown') then
     configure_msvc();
     clear configure_msvc 
+    if (findmsifortcompiler()<>'unknown') then
+      configure_msifort();
+      clear configure_msifort
+    end
+    clear findmsifortcompiler
   else
     if ( findlcccompiler() ) then
       configure_lcc();
diff --git a/scilab/modules/dynamic_link/help/en_US/configure_msifort.xml b/scilab/modules/dynamic_link/help/en_US/configure_msifort.xml
new file mode 100644 (file)
index 0000000..2ea6936
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ -->
+<refentry version="5.0-subset Scilab" xml:id="configure_msifort" xml:lang="en"
+          xmlns="http://docbook.org/ns/docbook"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg"
+          xmlns:ns3="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook">
+  <info>
+    <pubdate>$LastChangedDate: 2006-09-03 11:54:48 +0200 (Sun, 03 Sep 2006)
+    $</pubdate>
+  </info>
+
+  <refnamediv>
+    <refname>configure_ifort</refname>
+
+    <refpurpose>set environments variables for Intel Fortran Compiler
+    (Windows).</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <title>Calling Sequence</title>
+
+    <synopsis>bOK=configure_msifort()</synopsis>
+  </refsynopsisdiv>
+
+  <refsection>
+    <title>Parameters</title>
+
+    <variablelist>
+      <varlistentry>
+        <term>bOK</term>
+
+        <listitem>
+          <para>returns %T if environments variables for Intel fortran (9 or
+          10) Compiler are OK.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsection>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>set environments variables for Intel fortran (9 or 10)
+    Compiler.</para>
+  </refsection>
+
+  <refsection>
+    <title>Examples</title>
+
+    <programlisting role="example">bOK = configure_msifort()
+</programlisting>
+  </refsection>
+
+  <refsection>
+    <title>Authors</title>
+
+    <para>Allan CORNET</para>
+  </refsection>
+</refentry>
\ No newline at end of file
diff --git a/scilab/modules/dynamic_link/help/en_US/findmsifortcompiler.xml b/scilab/modules/dynamic_link/help/en_US/findmsifortcompiler.xml
new file mode 100644 (file)
index 0000000..a4cd32e
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ -->
+<refentry version="5.0-subset Scilab" xml:id="findmsifortcompiler"
+          xml:lang="en" xmlns="http://docbook.org/ns/docbook"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg"
+          xmlns:ns3="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook">
+  <info>
+    <pubdate>$LastChangedDate: 2006-09-03 11:54:48 +0200 (Sun, 03 Sep 2006)
+    $</pubdate>
+  </info>
+
+  <refnamediv>
+    <refname>findmsifortcompiler</refname>
+
+    <refpurpose>detects Intel fortran Compiler</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <title>Calling Sequence</title>
+
+    <synopsis>ifortv=findmsifortcompiler()</synopsis>
+  </refsynopsisdiv>
+
+  <refsection>
+    <title>Parameters</title>
+
+    <variablelist>
+      <varlistentry>
+        <term>ifortv</term>
+
+        <listitem>
+          <para>returns 'ifort90','ifort10','unknown'</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsection>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>detects Intel fortran Compiler (Windows).</para>
+  </refsection>
+
+  <refsection>
+    <title>Examples</title>
+
+    <programlisting role="example">ifortv = findmsifortcompiler()
+</programlisting>
+  </refsection>
+
+  <refsection>
+    <title>Authors</title>
+
+    <para>Allan CORNET</para>
+  </refsection>
+</refentry>
\ No newline at end of file
diff --git a/scilab/modules/dynamic_link/macros/configure_msifort.sci b/scilab/modules/dynamic_link/macros/configure_msifort.sci
new file mode 100644 (file)
index 0000000..ac84b3d
--- /dev/null
@@ -0,0 +1,92 @@
+//==========================================\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) DIGITEO - Allan CORNET\r
+// \r
+// This file must be used under the terms of the CeCILL.\r
+// This source file is licensed as described in the file COPYING, which\r
+// you should have received as part of this distribution.  The terms\r
+// are also available at    \r
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
+\r
+//==========================================\r
+function bOK = configure_msifort()\r
+\r
+//==========================================\r
+//  functions defined only in configure_ifort\r
+//==========================================\r
+function ifpath = getIFpath(ifversion)\r
+  select ifversion ,\r
+    case 'ifort9' then\r
+       ifpath = getenv('IFORT_COMPILER9','');\r
+    case 'ifort10' then\r
+       ifpath = getenv('IFORT_COMPILER10','');\r
+         else\r
+      ifpath = '';\r
+    end\r
+endfunction\r
+//==========================================\r
+function bOK = set_commons_msifort(ifpath,machinepath)\r
+  bOK = %F;\r
\r
+  // example set PATH=%IFORT_COMPILER10%\EM64T\Bin;\r
+  ENV_PATH = getenv('PATH','');\r
+  PATH_TO_ADD = ifpath + machinepath + filesep() + 'bin';\r
+  if isdir(PATH_TO_ADD) then\r
+    ENV_PATH = PATH_TO_ADD + pathsep() + ENV_PATH;\r
+    err = setenv('PATH',ENV_PATH);\r
+    if (err == %F) then bOK = %F,return,end\r
+    bOK = %T;\r
+  else\r
+    bOK = %F;\r
+    return;\r
+  end\r
+  \r
+  // example set INCLUDE=%IFORT_COMPILER10%\EM64T\Include;\r
+  ENV_INCLUDE = getenv('INCLUDE','');\r
+  PATH_TO_ADD = ifpath + machinepath + filesep() + 'Include';\r
+  if isdir(PATH_TO_ADD) then\r
+    ENV_INCLUDE = PATH_TO_ADD + pathsep() + ENV_INCLUDE;\r
+    err = setenv('INCLUDE',ENV_INCLUDE);\r
+    if (err == %F) then bOK = %F,return,end\r
+    bOK = %T;\r
+  else\r
+    bOK = %F;\r
+    return;\r
+  end\r
+  \r
+  // example set LIB=%IFORT_COMPILER10%\EM64T\Lib;\r
+  ENV_LIB = getenv('LIB','');\r
+  PATH_TO_ADD = ifpath + machinepath + filesep() + 'Lib';\r
+  if isdir(PATH_TO_ADD) then\r
+    ENV_LIB = PATH_TO_ADD + pathsep() + ENV_LIB;\r
+    err = setenv('LIB',ENV_LIB);\r
+    if (err == %F) then bOK = %F,return,end\r
+    bOK = %T;\r
+  else\r
+    bOK = %F;\r
+    return;\r
+  end\r
+  \r
+endfunction\r
+//==========================================\r
+\r
+  bOK = %F;\r
+  if MSDOS then\r
+    ifortcompiler = findmsifortcompiler();\r
+    if ifortcompiler <> 'unknown' then\r
+    \r
+      if_path = getIFpath(ifortcompiler);\r
+      \r
+      if win64() & detectmsifort64tools then\r
+        set_commons_msifort(if_path,'EM64T');\r
+      else\r
+        set_commons_msifort(if_path,'IA32');\r
+      end\r
+      \r
+    end\r
+  end\r
+\r
+endfunction\r
+\r
+//==========================================\r
+\r
diff --git a/scilab/modules/dynamic_link/macros/detectmsifort64tools.sci b/scilab/modules/dynamic_link/macros/detectmsifort64tools.sci
new file mode 100644 (file)
index 0000000..4b1b5bb
--- /dev/null
@@ -0,0 +1,45 @@
+//==========================================\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) DIGITEO - Allan CORNET\r
+// \r
+// This file must be used under the terms of the CeCILL.\r
+// This source file is licensed as described in the file COPYING, which\r
+// you should have received as part of this distribution.  The terms\r
+// are also available at    \r
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
+\r
+//==========================================\r
+\r
+function bOK = detectmsifort64tools()\r
+\r
+ bOK = %F;\r
+ if MSDOS & win64() then\r
+   IFORTPATH = '';\r
+   ifortcomp = findmsifortcompiler();\r
+   if ifortcomp <> 'unknown' then\r
+     select compiler,\r
+     \r
+       case  'ifort10' then          \r
+         IFORTPATH = getenv('IFORT_COMPILER10','');\r
+     \r
+       case  'ifort9' then                \r
+         IFORTPATH = getenv('IFORT_COMPILER9','');\r
+     \r
+     else\r
+       TXT = gettext('Intel Fortran Comiler 9 or 10 Compiler not found.');\r
+       warning(TXT);\r
+       bOK = %F;\r
+       return\r
+     end\r
+   end\r
+   \r
+   IFORTSPATHEMT64 = IFORTPATH + filesep + 'emt64';\r
+   \r
+   if isdir(IFORTSPATHEMT64) then\r
+     bOK = %T;\r
+   end\r
+ end\r
+  \r
+endfunction\r
+//==========================================\r
+\r
diff --git a/scilab/modules/dynamic_link/macros/findmsifortcompiler.sci b/scilab/modules/dynamic_link/macros/findmsifortcompiler.sci
new file mode 100644 (file)
index 0000000..d874369
--- /dev/null
@@ -0,0 +1,30 @@
+//==========================================\r
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
+// Copyright (C) DIGITEO - Allan CORNET\r
+// \r
+// This file must be used under the terms of the CeCILL.\r
+// This source file is licensed as described in the file COPYING, which\r
+// you should have received as part of this distribution.  The terms\r
+// are also available at    \r
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
+\r
+//==========================================\r
+function ifortCompiler = findmsifortcompiler()\r
+\r
+  ifortCompiler='unknown'; // unknown\r
+\r
+  if MSDOS then\r
+    if getenv('IFORT_COMPILER10','NOK') <> 'NOK' then\r
+      ifortCompiler='ifort10';\r
+    else\r
+      if getenv('IFORT_COMPILER9','NOK') <> 'NOK' then\r
+        ifortCompiler='ifort9';\r
+      end\r
+    end\r
+  else // NOT MSDOS\r
+    ifortCompiler = 'unknown'; // unknown\r
+  end\r
+endfunction\r
+//==========================================\r
+\r
+  
\ No newline at end of file
index 29032a3..376d460 100644 (file)
@@ -27,8 +27,8 @@ ilib_build('bug',['ex2c_1','intex2c'],files,[]);
    Generate a loader file
    Generate a Makefile: Makelib
    Running the makefile
-   compilation of bug_2085
-   building shared library (be patient)
+   Compilation of bug_2085
+   Building shared library (be patient)
 // disable message
 warning_mode = warning('query');
 warning('off');
@@ -1,52 +1,52 @@
-//create fortran code a copy of the lapack dgesv routine
-curdir=pwd();
-mputl(['      subroutine dgesvtst( n,nrhs,a,lda,ipiv,b,ldb,info )'
-       '      integer            info,lda,ldb,n,nrhs,ipiv( * )'
-       '      double precision   a(lda,*),b(ldb,*)'
-       '      external           dgetrf,dgetrs'
-       '      info = 0'
-       '      call dgetrf(n,n,a,lda,ipiv,info)'
-       '      if(info.eq.0) then'
-       '         call dgetrs(''no transpose'',n,nrhs,a,lda,ipiv,b,ldb,info)'
-       '      end if'
-       '      return'
-       '      end'],TMPDIR+'/dgesvtst.f')
-function [X, LU, IPIV, INFO] = msolve(A,B)
-// Simplified From Mark code, solve AX = B for matrix X with DGESV from LAPACK
-  [N, NCA]     = size(A);
-  [LDB,NRHS]   = size(B);
-  LDA          = N;
-  INFO         = 0;
-  [LU, IPIV, X, INFO]  =  call ('dgesvtst',...
-                               N   , 1, "i", ...
-                               NRHS, 2, "i", ...
-                               A   , 3, "d", ...
-                               LDA , 4, "i", ...
-                               B   , 6, "d", ...
-                               LDB , 7, "i", ...
-                               "out", ...
-                               3,...
-                               [N,1],5, "i", ...
-                               6,...
-                               [1,1],8, "i");
-endfunction
-chdir(TMPDIR);
-libn=ilib_for_link('dgesvtst','dgesvtst.o',[],'f');
-   Generate a loader file
-   Generate a Makefile
-   ilib_gen_Make: configure : Generate Makefile in SCI/modules/dynamic_link/src/scripts/
-   ilib_gen_Make: Copy compilation files (Makefile*, libtool...) to TMPDIR
-   ilib_gen_Make: Copy dgesvtst.f to TMPDIR
-   ilib_gen_Make: Modification of the Makefile in TMPDIR.
-   Running the Makefile
-exec loader.sce;
-Shared archive loaded.
-Link done.
-chdir(curdir),
- ans  =
-  T  
-n=44;
-A=eye(n,n);B=(1:n)';
-[X, LU, IPIV, INFO] = msolve(A,B);
-if norm(A*X-B)>1d-15 then bugmes();quit;end
+//create fortran code a copy of the lapack dgesv routine\r
+curdir=pwd();\r
+mputl(['      subroutine dgesvtst( n,nrhs,a,lda,ipiv,b,ldb,info )'\r
+       '      integer            info,lda,ldb,n,nrhs,ipiv( * )'\r
+       '      double precision   a(lda,*),b(ldb,*)'\r
+       '      external           dgetrf,dgetrs'\r
+       '      info = 0'\r
+       '      call dgetrf(n,n,a,lda,ipiv,info)'\r
+       '      if(info.eq.0) then'\r
+       '         call dgetrs(''no transpose'',n,nrhs,a,lda,ipiv,b,ldb,info)'\r
+       '      end if'\r
+       '      return'\r
+       '      end'],TMPDIR+'/dgesvtst.f')\r
+function [X, LU, IPIV, INFO] = msolve(A,B)\r
+// Simplified From Mark code, solve AX = B for matrix X with DGESV from LAPACK\r
+  [N, NCA]     = size(A);\r
+  [LDB,NRHS]   = size(B);\r
+  LDA          = N;\r
+  INFO         = 0;\r
+  [LU, IPIV, X, INFO]  =  call ('dgesvtst',...\r
+                               N   , 1, "i", ...\r
+                               NRHS, 2, "i", ...\r
+                               A   , 3, "d", ...\r
+                               LDA , 4, "i", ...\r
+                               B   , 6, "d", ...\r
+                               LDB , 7, "i", ...\r
+                               "out", ...\r
+                               3,...\r
+                               [N,1],5, "i", ...\r
+                               6,...\r
+                               [1,1],8, "i");\r
+endfunction\r
+chdir(TMPDIR);\r
+libn=ilib_for_link('dgesvtst','dgesvtst.o',[],'f');\r
+   Generate a loader file\r
+   Generate a Makefile\r
+   ilib_gen_Make: configure : Generate Makefile in SCI/modules/dynamic_link/src/scripts/\r
+   ilib_gen_Make: Copy compilation files (Makefile*, libtool...) to TMPDIR\r
+   ilib_gen_Make: Copy dgesvtst.f to TMPDIR\r
+   ilib_gen_Make: Modification of the Makefile in TMPDIR.\r
+   Running the Makefile\r
+exec loader.sce;\r
+Shared archive loaded.\r
+Link done.\r
+chdir(curdir),\r
+ ans  =\r
\r
+  T  \r
+n=44;\r
+A=eye(n,n);B=(1:n)';\r
+[X, LU, IPIV, INFO] = msolve(A,B);\r
+if norm(A*X-B)>1d-15 then bugmes();quit;end\r
diff --git a/scilab/modules/dynamic_link/tests/nonreg_tests/bug_2119.win.dia.ref b/scilab/modules/dynamic_link/tests/nonreg_tests/bug_2119.win.dia.ref
new file mode 100644 (file)
index 0000000..97e5b3a
--- /dev/null
@@ -0,0 +1,50 @@
+//create fortran code a copy of the lapack dgesv routine
+curdir=pwd();
+mputl(['      subroutine dgesvtst( n,nrhs,a,lda,ipiv,b,ldb,info )'
+       '      integer            info,lda,ldb,n,nrhs,ipiv( * )'
+       '      double precision   a(lda,*),b(ldb,*)'
+       '      external           dgetrf,dgetrs'
+       '      info = 0'
+       '      call dgetrf(n,n,a,lda,ipiv,info)'
+       '      if(info.eq.0) then'
+       '         call dgetrs(''no transpose'',n,nrhs,a,lda,ipiv,b,ldb,info)'
+       '      end if'
+       '      return'
+       '      end'],TMPDIR+'/dgesvtst.f')
+function [X, LU, IPIV, INFO] = msolve(A,B)
+// Simplified From Mark code, solve AX = B for matrix X with DGESV from LAPACK
+  [N, NCA]     = size(A);
+  [LDB,NRHS]   = size(B);
+  LDA          = N;
+  INFO         = 0;
+  [LU, IPIV, X, INFO]  =  call ('dgesvtst',...
+                               N   , 1, "i", ...
+                               NRHS, 2, "i", ...
+                               A   , 3, "d", ...
+                               LDA , 4, "i", ...
+                               B   , 6, "d", ...
+                               LDB , 7, "i", ...
+                               "out", ...
+                               3,...
+                               [N,1],5, "i", ...
+                               6,...
+                               [1,1],8, "i");
+endfunction
+chdir(TMPDIR);
+libn=ilib_for_link('dgesvtst','dgesvtst.o',[],'f');
+   Generate a loader file
+   Generate a Makefile
+   Running the Makefile
+   Compilation of dgesvtst
+   Building shared library (be patient)
+exec loader.sce;
+Shared archive loaded.
+Link done.
+chdir(curdir),
+ ans  =
+  T  
+n=44;
+A=eye(n,n);B=(1:n)';
+[X, LU, IPIV, INFO] = msolve(A,B);
+if norm(A*X-B)>1d-15 then bugmes();quit;end
@@ -11,8 +11,8 @@ if ~c_link('libintertest') then
    Generate a loader file
    Generate a Makefile: Makelib
    Running the makefile
-   compilation of addinter
-   building shared library (be patient)
+   Compilation of addinter
+   Building shared library (be patient)
   // disable message
   warning_mode = warning('query');
   warning('off');
index b60cc57..62d9a68 100644 (file)
@@ -13,8 +13,8 @@ if ~c_link('foo') then
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of foo
-   building shared library (be patient)
+   Compilation of foo
+   Building shared library (be patient)
   // disable message
   warning_mode = warning('query');
   warning('off');
index 93243ca..a258a56 100644 (file)
@@ -51,10 +51,10 @@ ilib_build('foo',['scifun1','intfun1'],files,[]);
    Generate a loader file
    Generate a Makefile: Makelib
    Running the makefile
-   compilation of fun1
-   compilation of fun2
-   compilation of intfun1
-   building shared library (be patient)
+   Compilation of fun1
+   Compilation of fun2
+   Compilation of intfun1
+   Building shared library (be patient)
 // disable message
 warning_mode = warning('query');
 warning('off');
index 939b0b0..7b270f5 100644 (file)
@@ -28,8 +28,8 @@ ilib_for_link('ext1c','fun1.o',[],"c")
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of fun1
-   building shared library (be patient)
+   Compilation of fun1
+   Building shared library (be patient)
  ans  =
  
  libext1c.dll   
index cc69947..cdf75eb 100644 (file)
@@ -21,7 +21,7 @@ else
    Generate a loader file
    Generate a Makefile: Makelib
    Running the makefile
-   building shared library (be patient)
+   Building shared library (be patient)
 end
 Shared archive loaded.
 Link done.
index 8fc7454..aa30ee7 100644 (file)
@@ -35,8 +35,8 @@ ilib_for_link('fooc','fooc.o',[],"c");
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of fooc
-   building shared library (be patient)
+   Compilation of fooc
+   Building shared library (be patient)
 // display the loader.sce file which calls link
 mprintf('%s\n',mgetl('loader.sce'))
 // ------------------------------------------------------
index ed5f321..63d0268 100644 (file)
@@ -14,8 +14,8 @@ ilib_for_link(routines,'externals.o',[],"f");
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of externals
-   building shared library (be patient)
+   Compilation of externals
+   Building shared library (be patient)
 // disable message
 warning_mode = warning('query');
 warning('off');
index 6ebfbe9..cb40922 100644 (file)
@@ -37,8 +37,8 @@ l=ilib_for_link('rosenc','rosenc.o',[],'c',TMPDIR+'/Makefile');
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of rosenc
-   building shared library (be patient)
+   Compilation of rosenc
+   Building shared library (be patient)
 // incremental linking
 link(l,'rosenc','c');
 Shared archive loaded.
@@ -83,8 +83,8 @@ l=ilib_for_link('rosenf','rosenf.o',[],'f',TMPDIR+'/Makefile');
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of rosenf
-   building shared library (be patient)
+   Compilation of rosenf
+   Building shared library (be patient)
 // incremental linking
 link(l,'rosenf','f');
 Shared archive loaded.
index 5bc34c7..9b3fdf7 100644 (file)
@@ -19,8 +19,8 @@ lp=ilib_for_link('mytest','mytest.o',[],'c',TMPDIR+'/Makefile');
    Generate a loader file
    Generate a Makefile
    Running the Makefile
-   compilation of mytest
-   building shared library (be patient)
+   Compilation of mytest
+   Building shared library (be patient)
 link(lp,'mytest','c');
 Shared archive loaded.
 Link done.