Linux/Mac dynamic link: prepend gcc/clang libraries on LD_LIBRARY_PATH 59/19759/3
Clément DAVID [Tue, 13 Feb 2018 16:58:01 +0000 (17:58 +0100)]
Change-Id: I63cd49a646b6ca3e21cdbe65301a2cde39324da1

scilab/CHANGES.md
scilab/modules/dynamic_link/help/en_US/ilib_build.xml
scilab/modules/dynamic_link/help/en_US/ilib_compile.xml
scilab/modules/dynamic_link/help/en_US/ilib_for_link.xml
scilab/modules/dynamic_link/macros/ilib_compile.sci
scilab/modules/dynamic_link/src/scripts/compilerDetection.sh

index 984d3a7..05eff90 100644 (file)
@@ -545,6 +545,7 @@ Known issues
 * [#15375](http://bugzilla.scilab.org/show_bug.cgi?id=15375): A .zcos file opened as a palette was greyed out.
 * [#15379](http://bugzilla.scilab.org/show_bug.cgi?id=15379): `zeros(A)` was not documented as equivalent to `mtlb_zeros(size(A))`.
 * [#15380](http://bugzilla.scilab.org/show_bug.cgi?id=15380): `argn()` documentation was somewhat unclear and uncomplete.
+* [#15388](http://bugzilla.scilab.org/show_bug.cgi?id=15388): Dynamic link did not work on MACOSX 10,12.
 * [#15395](http://bugzilla.scilab.org/show_bug.cgi?id=15395): `ones(2,3,2) / %z` yielded an error..
 * [#15396](http://bugzilla.scilab.org/show_bug.cgi?id=15396): `[m,n,p] = size(hr)` yielded an error with an hypermatrix hr of rationals.
 * [#15402](http://bugzilla.scilab.org/show_bug.cgi?id=15402): The `range()` page was not fixed against the bug 1904 for the french and portuguese versions.
index 0d406f3..f7ac36f 100644 (file)
             On the internal technical level, under GNU/Linux and Mac OS X, the ilib_* function are based on the autotools. First, a configure is executed to detect compilers available. Then, a make is launched with the provided arguments. For more information: <ulink url="http://wiki.scilab.org/Full%20technical%20description%20of%20the%20incremental%20link">Full technical description of the incremental link / dynamic link</ulink>
         </para>
         <para>
-            Since version 5.3.2, under GNU/Linux, Scilab detects where the libstdc++ is located (thanks to the command <emphasis role="italic">gcc -print-search-dirs|grep ^install:|awk '{print $2}'</emphasis>). Previously, the dynamic link was using the libstdc++ embedded in Scilab.
+            Since version 6.0.1, under GNU/Linux, Scilab detects where the libstdc++ is located (thanks to the command <emphasis role="italic">gcc -print-search-dirs|awk -F= '$1=="libraries: "{print $2}'</emphasis>). Previously, the dynamic link was using the libstdc++ embedded in Scilab.
         </para>
     </refsection>
     <refsection>
index c650f92..a531a5e 100644 (file)
@@ -82,7 +82,7 @@
             On the internal technical level, under GNU/Linux and Mac OS X, the ilib_* function are based on the autotools. First, a configure is executed to detect compilers available. Then, a make is launched with the provided arguments. For more information: <ulink url="http://wiki.scilab.org/Full%20technical%20description%20of%20the%20incremental%20link">Full technical description of the incremental link / dynamic link</ulink>
         </para>
         <para>
-            Since version 5.3.2, under GNU/Linux, Scilab detects where the libstdc++ is located (thanks to the command <emphasis role="italic">gcc -print-search-dirs|grep ^install:|awk '{print $2}'</emphasis>). Previously, the dynamic link was using the libstdc++ embedded in Scilab.
+            Since version 6.0.1, under GNU/Linux, Scilab detects where the libstdc++ is located (thanks to the command <emphasis role="italic">gcc -print-search-dirs|awk -F= '$1=="libraries: "{print $2}'</emphasis>). Previously, the dynamic link was using the libstdc++ embedded in Scilab.
         </para>
     </refsection>
     <refsection role="see also">
index 971c860..8444d2c 100644 (file)
             On the internal technical level, under GNU/Linux and Mac OS X, the ilib_* function are based on the autotools. First, a configure is executed to detect compilers available. Then, a make is launched with the provided arguments. For more information: <ulink url="http://wiki.scilab.org/Full%20technical%20description%20of%20the%20incremental%20link">Full technical description of the incremental link / dynamic link</ulink>
         </para>
         <para>
-            Since version 5.3.2, under GNU/Linux, Scilab detects where the libstdc++ is located (thanks to the command <emphasis role="italic">gcc -print-search-dirs|grep ^install:|awk '{print $2}'</emphasis>). Previously, the dynamic link was using the libstdc++ embedded in Scilab.
+            Since version 6.0.1, under GNU/Linux, Scilab detects where the libstdc++ is located (thanks to the command <emphasis role="italic">gcc -print-search-dirs|awk -F= '$1=="libraries: "{print $2}'</emphasis>). Previously, the dynamic link was using the libstdc++ embedded in Scilab.
         </para>
     </refsection>
     <refsection>
index 7632172..7c1a394 100644 (file)
@@ -155,11 +155,11 @@ function libn = ilib_compile(lib_name, ..
         // build, we want to use the same lib as the compiler installed.
         // CF bug #7887 for more information.
         // Note that, for the configure, the setup is done by compilerDetection.sh
-        cmdGCC="if test -x ""$(which gcc 2>/dev/null)""; then echo $(LC_ALL=C gcc -print-search-dirs|awk ''$1==""install:""{print $2}''); fi";
+        cmdGCC="if test -x ""$(which gcc 2>/dev/null)""; then echo $(LC_ALL=C gcc -print-search-dirs|awk -F= ''$1==""libraries: ""{print $2}''); fi";
         [GCClibpath, ierr, stderr] = unix_g(cmdGCC);
 
         if (GCClibpath <> "" & GCClibpath <> [] & ierr == 0 & grep(getenv("LD_LIBRARY_PATH"),GCClibpath) == []) then
-            setenv("LD_LIBRARY_PATH",GCClibpath+"/../../../:"+getenv("LD_LIBRARY_PATH"));
+            setenv("LD_LIBRARY_PATH",GCClibpath+":"+getenv("LD_LIBRARY_PATH"));
         end
 
         cmd = "make "
index 03dcba7..0a22a69 100755 (executable)
@@ -9,7 +9,7 @@ if test -x "$(which gcc 2>/dev/null)"; then
     # CF bug #7887 for more information.
     # Note that, for the Makefile, the setup is done in the Scilab macros
     # ilib_compile
-    GCClibpath=$(LC_ALL=C gcc -print-search-dirs|awk '$1=="install:"{print $2}')/../../../
+    GCClibpath=$(LC_ALL=C gcc -print-search-dirs|awk -F= '$1=="libraries: "{print $2}')
 
     if test -z "$(grep $GCClibpath $LD_LIBRARY_PATH 2>/dev/null)"; then
         LD_LIBRARY_PATH="$GCClibpath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"