add environment variable management __USE_DEPRECATED_STACK_FUNCTIONS__ to accept... 99/6399/4
Allan CORNET [Thu, 23 Feb 2012 09:25:00 +0000 (10:25 +0100)]
Change-Id: I67d381e8c2316e915718eb15b114d1f6ae4eb2fe

scilab/modules/dynamic_link/macros/gencompilationflags_unix.sci
scilab/modules/dynamic_link/macros/ilib_compile.sci
scilab/modules/dynamic_link/macros/windows/dlwGenerateMakefile.sci
scilab/modules/dynamic_link/tests/unit_tests/test_flag_deprecated.tst [new file with mode: 0644]

index c664a7a..63217b7 100644 (file)
@@ -23,16 +23,22 @@ function cmd = gencompilationflags_unix(ldflags, cflags, fflags, cc, flagsType)
     return
   end
 
-  cmd='';
+  cmd = "";
+  tbxFlag = " -D__SCILAB_TOOLBOX__ ";
+  envFlag = "";
 
+  if getenv('__USE_DEPRECATED_STACK_FUNCTIONS__', 'NO') == "YES" then
+    envFlag = " -D__USE_DEPRECATED_STACK_FUNCTIONS__ ";
+  end
+  
   // CFLAGS
   if cflags <> '' then
-    cmd = cmd +" CFLAGS=""-D__SCILAB_TOOLBOX__ "+cflags+""""
+    cmd = cmd + " CFLAGS="""+tbxFlag+envFlag+cflags+""""
   end
 
   // CXXFLAGS ... use the same as C
   if cflags <> '' then
-    cmd = cmd +" CXXFLAGS=""-D__SCILAB_TOOLBOX__ "+cflags+""""
+    cmd = cmd +" CXXFLAGS="""+tbxFlag+envFlag+cflags+""""
   end
 
   // LDFLAGS
index 359257b..b5ce21a 100644 (file)
@@ -141,14 +141,12 @@ function libn = ilib_compile(lib_name, ..
     end
 
     if ierr <> 0 then
-      mprintf(gettext("%s: An error occurred during the compilation:\n"),"ilib_compile");
-      lines(0);
-      disp(stderr);
-      mprintf("\n");
-      mprintf(gettext("%s: The command was:\n"),"ilib_compile");
-      mprintf(cmd);
-      mprintf("\n");
+      errMsg = sprintf(gettext("%s: An error occurred during the compilation:\n"), "ilib_compile");
+      errMsg = [errMsg ; stderr];
+      errMsg = [errMsg ; sprintf(gettext("%s: The command was:\n"), "ilib_compile")];
+      errMsg = [errMsg ; cmd];
       chdir(oldPath); // Go back to the working dir
+      error(errMsg);
       return ;
     end
 
index 8c9768f..d4b59bf 100644 (file)
@@ -68,6 +68,10 @@ function Makename = dlwGenerateMakefile(name, ..
     libname = 'lib' + libname;
   end
   
+  if getenv('__USE_DEPRECATED_STACK_FUNCTIONS__', 'NO') == "YES" then
+    cflags = cflags + " -D__USE_DEPRECATED_STACK_FUNCTIONS__";
+  end
+  
   ilib_gen_Make_win32(name, tables, files, libs, libname, Makename, with_gateway, ldflags, cflags, fflags)
 
 endfunction
diff --git a/scilab/modules/dynamic_link/tests/unit_tests/test_flag_deprecated.tst b/scilab/modules/dynamic_link/tests/unit_tests/test_flag_deprecated.tst
new file mode 100644 (file)
index 0000000..8418caa
--- /dev/null
@@ -0,0 +1,50 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- JVM NOT MANDATORY -->
+// <-- NO CHECK REF --> 
+//
+ilib_verbose(0);
+
+if getos() == 'Windows' then
+  TMP_OS_DIR = getenv('TMP','err');
+  assert_checkfalse(TMP_OS_DIR == 'err');
+else
+  TMP_OS_DIR = '/tmp';
+  assert_checkequal(isdir(TMP_OS_DIR), %t);
+end
+
+TMP_DIR = TMP_OS_DIR+filesep()+'link';
+
+rmdir(TMP_DIR,'s');
+mkdir(TMP_OS_DIR,'link');
+
+assert_checkequal(isdir(TMP_DIR), %t);
+
+//Example of the use of ilib_for_link with  a simple C code
+    f1=['#include <math.h>'; ..
+    '#include ""stack-c.h""'; ..
+    'void fooc(double c[],double a[], double *b,int *m,int *n)'; ..
+    '{'; ..
+    '   int i;'; ..
+    '   for ( i =0 ; i < (*m)*(*n) ; i++) '; ..
+    '     c[i] = sin(a[i]) + *b; '; ..
+    '}'];
+
+mputl(f1, TMP_DIR + filesep() + 'test_flag_deprecated.c');
+
+cur_dir = pwd();
+chdir(TMP_DIR);
+
+
+setenv('__USE_DEPRECATED_STACK_FUNCTIONS__', 'NO');
+ierr = execstr("ilib_for_link(''deprecated'', ''test_flag_deprecated.c'', [], ""c"");", "errcatch");
+assert_checkequal(ierr, 10000);
+
+setenv('__USE_DEPRECATED_STACK_FUNCTIONS__', 'YES');
+ierr = execstr("ilib_for_link(''deprecated'', ''test_flag_deprecated.c'', [], ""c"");", "errcatch");
+assert_checkequal(ierr, 0);