changeset 26619:c9e5a09af7af

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Thu, 24 Jan 2019 19:28:27 +0000
parents 1d03bc0d53f3 (current diff) 361f7ce80f85 (diff)
children 7bb23cecb928
files NEWS configure.ac etc/NEWS.5 libinterp/corefcn/error.cc libinterp/corefcn/ft-text-renderer.cc scripts/optimization/sqp.m
diffstat 25 files changed, 75 insertions(+), 76 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Wed Jan 23 20:16:29 2019 +0000
+++ b/.hgignore	Thu Jan 24 19:28:27 2019 +0000
@@ -35,6 +35,7 @@
 ## Scripts associated with building Octave
 ^build-aux/config\.(guess|rpath|sub)$
 (^|/)build-aux/check-subst-vars\.sh$
+^build-aux/ar-lib$
 ^build-aux/depcomp$
 ^build-aux/install-sh$
 ^build-aux/ltmain\.sh$
--- a/configure.ac	Wed Jan 23 20:16:29 2019 +0000
+++ b/configure.ac	Thu Jan 24 19:28:27 2019 +0000
@@ -56,7 +56,7 @@
 dnl FIXME: Since we also set libtool versions for liboctave and libinterp,
 dnl perhaps we should be computing the "api version" from those versions numbers
 dnl in some way instead of setting it independently here.
-OCTAVE_API_VERSION="api-v52+"
+OCTAVE_API_VERSION="api-v53"
 
 AC_SUBST(OCTAVE_MAJOR_VERSION)
 AC_SUBST(OCTAVE_MINOR_VERSION)
--- a/etc/HACKING.md	Wed Jan 23 20:16:29 2019 +0000
+++ b/etc/HACKING.md	Thu Jan 24 19:28:27 2019 +0000
@@ -306,6 +306,7 @@
 
   5.0.0   (experimental)  active development of Octave 5 on default branch
   5.0.1   (pre-release)   stabilization period of Octave 5 on stable branch
+  5.0.90  (pre-release)   first release candidate for 5.1.0
   6.0.0   (experimental)  active development of Octave 6 on default branch
   5.1.0   (release)       first release of Octave 5 from stable branch
   5.1.1   (pre-release)   bug fixing on stable branch after 5.1.0 release
@@ -322,8 +323,10 @@
   * Any version X.0.0 means "this is an experimental development
     version".
 
-  * Any version X.Y.1 means, "this is a pre-release version meant
-    for bug fixing and testing".
+  * Any version X.Y.Z with Z > 0 means, "this is a pre-release version
+    meant for bug fixing and testing".  In practice, Z will be either 1
+    (stabilization period after and before making release candidates) or
+    90, 91, etc. (release candidate snapshots leading up to release).
 
   * Any version X.Y.0 with Y != 0 means "this is a released version".
 
--- a/etc/NEWS.5	Wed Jan 23 20:16:29 2019 +0000
+++ b/etc/NEWS.5	Thu Jan 24 19:28:27 2019 +0000
@@ -1,5 +1,5 @@
-Summary of important user-visible changes for version 5.0 (yyyy-mm-dd):
-----------------------------------------------------------------------
+Summary of important user-visible changes for version 5 (yyyy-mm-dd):
+--------------------------------------------------------------------
 
  ** The determination of an object's dimensions, size, and shape by the
     functions ndims, rows, columns, isscalar, isvector, isrow, iscolumn,
@@ -12,7 +12,7 @@
     results are equally likely) sample of integers.  This may produce
     different results in existing code.  If it is necessary to reproduce
     the exact random integer sequence as in previous versions use
-    
+
       ri = imin + floor ((imax - imin + 1) * rand ());
 
  ** A new core function movfun will apply a function to a sliding
@@ -21,7 +21,7 @@
     scheme movXXX where "XXX" is the function that will be applied.
     For example, the moving average over a dataset is movmean.
     New moving window functions:
-   
+
     movfun   movslice
     movmad   movmax   movmean   movmedian   movmin   movprod
     movstd   movsum   movvar
@@ -47,7 +47,7 @@
     exceeds the string length.  This behavior more closely matches
     common sense and is Matlab compatible.  Example:
 
-      Octave 5.0 : strncmp ("abc", "abc", 100) => true
+      Octave 5   : strncmp ("abc", "abc", 100) => true
       Previously : strncmp ("abc", "abc", 100) => false
 
  ** The intmax, intmin, and flintmax functions now accept a variable
@@ -57,7 +57,7 @@
     required.  Example:
 
                    x = int8 (3);
-      Octave 5.0 : range = [ intmin(x), intmax(x) ]
+      Octave 5   : range = [ intmin(x), intmax(x) ]
       Previously : range = [ intmin(class(x)), intmax(class(x)) ]
 
  ** The ranks function has been recoded for performance and is now 25X
@@ -196,7 +196,7 @@
     expansion on path elements and Octave's load-path is no longer
     subject to these expansions.
 
- ** New functions added in 5.0:
+ ** New functions added in 5:
 
       clearvars
       isfile
@@ -242,16 +242,16 @@
 
  ** Deprecated functions.
 
-    The following functions have been deprecated in Octave 5.0 and will
+    The following functions have been deprecated in Octave 5 and will
     be removed from Octave 7 (or whatever version is the second major
-    release after 5.0):
+    release after 5):
 
       Function               | Replacement
       -----------------------|------------------
       output_max_field_width | output_precision
 
  ** The following functions were deprecated in Octave 4.2 and have been
-    removed from Octave 5.0.
+    removed from Octave 5.
 
       Function             | Replacement
       ---------------------|------------------
@@ -268,8 +268,8 @@
  ** Deprecated graphics properties.
 
     The following properties or allowed corresponding values have been
-    deprecated in Octave 5.0 and will be removed from Octave 7 (or
-    whatever version is the second major release after 5.0):
+    deprecated in Octave 5 and will be removed from Octave 7 (or
+    whatever version is the second major release after 5):
 
       Object               | Property                | Value
       ---------------------|-------------------------|-------------------
@@ -280,7 +280,7 @@
       uitable              | fontangle               | "oblique"
 
  ** The following properties or allowed corresponding values were
-    deprecated in Octave 4.2 and have been removed from Octave 5.0:
+    deprecated in Octave 4.2 and have been removed from Octave 5:
 
       Object               | Property                | Value
       ---------------------|-------------------------|-------------------
@@ -296,7 +296,7 @@
       text                 | erasemode               |
 
  ** The C++ function is_keyword has been deprecated in favor of
-    iskeyword.  The old function will be removed two versions after 5.0.
+    iskeyword.  The old function will be removed two versions after 5.
 
 ---------------------------------------------------------
 
--- a/libgui/graphics/GLCanvas.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libgui/graphics/GLCanvas.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -140,11 +140,11 @@
     if (obj.valid_object ())
       {
         graphics_object figObj (obj.get_ancestor ("figure"));
-        
+
         // Make sure we have a valid current context
         if (! begin_rendering ())
           error ("print: no valid OpenGL offscreen context");
-        
+
         try
           {
             octave::gl2ps_print (m_glfcns, figObj, file_cmd.toStdString (),
@@ -154,7 +154,7 @@
           {
             octave_link::post_exception (std::current_exception ());
           }
-        
+
         end_rendering ();
       }
   }
--- a/libgui/module.mk	Wed Jan 23 20:16:29 2019 +0000
+++ b/libgui/module.mk	Thu Jan 24 19:28:27 2019 +0000
@@ -61,7 +61,7 @@
 ## Increment the following version numbers as needed and according
 ## to the rules in the etc/HACKING.md file:
 
-%canon_reldir%_liboctgui_current = 4
+%canon_reldir%_liboctgui_current = 5
 %canon_reldir%_liboctgui_revision = 0
 %canon_reldir%_liboctgui_age = 0
 
--- a/libgui/src/dialog.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libgui/src/dialog.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -463,7 +463,7 @@
 
     setWindowTitle (title.isEmpty () ? " " : title);
     setDirectory (dirname);
-    
+
     // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
     if (! resource_manager::get_settings ()->value ("use_native_file_dialogs",
                                                     true).toBool ())
--- a/libinterp/corefcn/ft-text-renderer.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libinterp/corefcn/ft-text-renderer.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -527,7 +527,7 @@
 
     // The X offset of the baseline for the current line.
     int line_xoffset;
-     
+
     // Min and max y coordinates of all glyphs in a line.
     FT_Pos m_ymin;
     FT_Pos m_ymax;
@@ -856,12 +856,12 @@
     // First run text_to_pixels which will also build the string list
 
     m_strlist = std::list<text_renderer::string> ();
-    
+
     octave::unwind_protect frame;
     frame.protect_var (m_do_strlist);
     frame.protect_var (m_strlist);
     m_do_strlist = true;
-    
+
     text_to_pixels (txt, pxls, box, ha, va, rot, interp, false);
 
     lst = m_strlist;
@@ -878,7 +878,7 @@
         std::string str = e.string_value ();
         const uint8_t *c = reinterpret_cast<const uint8_t *> (str.c_str ());
         uint32_t u32_c;
-        
+
         size_t n = str.size ();
         size_t icurr = 0;
         size_t ibegin = 0;
@@ -903,7 +903,7 @@
                     // the newline character
                     fs.set_y (line_yoffset + yoffset);
                     fs.set_color (color);
-                
+
                     std::string s = str.substr (ibegin, icurr - ibegin);
                     if (! s.empty ())
                       {
@@ -923,7 +923,7 @@
             if (u32_c == 10)
               {
                 previous = 0;
-                
+
                 if (m_do_strlist && mode == MODE_RENDER)
                   {
                     // Start a new string in m_strlist
--- a/libinterp/corefcn/svd.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libinterp/corefcn/svd.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -395,8 +395,8 @@
 well as singular values).  When calculating just the singular values the
 following discussion is not relevant.
 
-The default routine use by Octave is the newer @code{gesdd} which is based on a
-Divide-and-Conquer algorithm that is 5X faster than the alternative
+The default routine used by Octave is the newer @code{gesdd} which is based on
+a Divide-and-Conquer algorithm that is 5X faster than the alternative
 @code{gesvd}, which is based on QR factorization.  However, the new algorithm
 can use significantly more memory.  For an @nospell{MxN} input matrix the
 memory usage is of order O(min(M,N) ^ 2), whereas the alternative is of order
--- a/libinterp/corefcn/sysdep.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libinterp/corefcn/sysdep.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -1110,9 +1110,9 @@
 @end deftypefn */)
 {
   octave_value_list retval;
-  
+
   int nargin = args.length ();
-  
+
   if (nargin > 1)
     print_usage ();
 
@@ -1120,7 +1120,7 @@
     {
       bool saved_state = Vpause_enabled;
       std::string state = args(0).string_value ();
-      
+
       if (state == "on")
         Vpause_enabled = true;
       else if (state == "off")
@@ -1129,14 +1129,14 @@
         ;// Do nothing
       else
         error ("pause: first argument must be \"on\", \"off\" or \"query\"");
-      
+
       if (nargout > 0 || state == "query")
         retval.append (saved_state ? "on" : "off");
     }
   else if (Vpause_enabled)
     {
       double dval;
-  
+
       if (nargin == 0)
         dval = octave_Inf;
       else
@@ -1147,7 +1147,7 @@
       else
         {
           Fdrawnow ();
-      
+
           octave::sleep (dval, true);
         }
     }
--- a/libinterp/corefcn/utils.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libinterp/corefcn/utils.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -1283,15 +1283,15 @@
     // is asleep
     if (do_graphics_events)
       gh_manager::unlock ();
-    
+
     if (octave::math::isinf (seconds))
       {
         // Wait for kbhit
         int c = -1;
         octave::flush_stdout ();
-        
+
         struct timespec one_tenth = { 0, 100000000 };
-        
+
         while (c < 0)
           {
             octave_nanosleep_wrapper (&one_tenth, nullptr);
--- a/libinterp/module.mk	Wed Jan 23 20:16:29 2019 +0000
+++ b/libinterp/module.mk	Thu Jan 24 19:28:27 2019 +0000
@@ -150,7 +150,7 @@
 ## Increment the following version numbers as needed and according
 ## to the rules in the etc/HACKING.md file:
 
-%canon_reldir%_liboctinterp_current = 6
+%canon_reldir%_liboctinterp_current = 7
 %canon_reldir%_liboctinterp_revision = 0
 %canon_reldir%_liboctinterp_age = 0
 
--- a/libinterp/parse-tree/pt-jit.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/libinterp/parse-tree/pt-jit.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -137,7 +137,7 @@
 namespace octave
 {
   namespace jit
-  {    
+  {
 #if defined (LEGACY_PASSMANAGER)
     typedef llvm::legacy::PassManager PassManager;
     typedef llvm::legacy::FunctionPassManager FunctionPassManager;
@@ -2447,7 +2447,7 @@
     // FIXME: Provide a meaningful replacement instead of simply skipping it?
     module_pass_manager->add (llvm::createAlwaysInlinerPass ());
 #endif
-    
+
     // In 3.6, a pass was inserted in the pipeline to make the DataLayout accessible:
     //    MyPassManager->add(new DataLayoutPass(MyTargetMachine->getDataLayout()));
     // In 3.7, you don’t need a pass, you set the DataLayout on the Module:
--- a/liboctave/module.mk	Wed Jan 23 20:16:29 2019 +0000
+++ b/liboctave/module.mk	Thu Jan 24 19:28:27 2019 +0000
@@ -85,7 +85,7 @@
 ## Increment the following version numbers as needed and according
 ## to the rules in the etc/HACKING.md file:
 
-%canon_reldir%_%canon_reldir%_current = 6
+%canon_reldir%_%canon_reldir%_current = 7
 %canon_reldir%_%canon_reldir%_revision = 0
 %canon_reldir%_%canon_reldir%_age = 0
 
--- a/liboctave/util/oct-rl-hist.c	Wed Jan 23 20:16:29 2019 +0000
+++ b/liboctave/util/oct-rl-hist.c	Thu Jan 24 19:28:27 2019 +0000
@@ -280,7 +280,7 @@
       // FIXME: Should this call current_liboctave_error_handler instead?
       if (! retval)
         return retval;
-      
+
       k = 0;
       for (i = beg; i < end; i++)
         {
--- a/scripts/+matlab/+lang/makeUniqueStrings.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/+matlab/+lang/makeUniqueStrings.m	Thu Jan 24 19:28:27 2019 +0000
@@ -41,7 +41,7 @@
 ## The optional input @var{maxlength} specifies the maximum length of any
 ## string in @var{uniqstr}.  If an input string cannot be made unique without
 ## exceeding @var{maxlength} an error is emitted.
-## 
+##
 ## The optional output @var{ismodified} is a logical array indicating whether
 ## each element in @var{str} was modified to make it unique.
 ##
--- a/scripts/general/randi.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/general/randi.m	Thu Jan 24 19:28:27 2019 +0000
@@ -102,20 +102,20 @@
   elseif (nargin == 2 && isscalar (varargin{1}))
     varargin(2) = varargin(1);
   endif
-    
+
   ## Rejection Algorithm to guarantee unbiased results.  See bug #54619.
   rng = (imax - imin) + 1;              # requested range
   N = prod ([varargin{:}]);             # number of requested elements
   K = floor ((flintmax () + 1) / rng);  # number of primary integers ...
                                         # mapped to single output
   p = (K*rng) / (flintmax () + 1);      # expected proportion of used primaries
-  
-  do  
+
+  do
     M = ceil (N/p + 10*sqrt (N/p - N)); # number of requested primary integers
     r_prim = floor (rand (M,1) * (flintmax () + 1));
     r_prim = r_prim(r_prim < K*rng);
   until (numel (r_prim) >= N)           # should practically always be true
-  
+
   ri = imin + floor (reshape (r_prim(1:N), varargin{:}) / K);
 
   if (! strcmp (rclass, "double"))
--- a/scripts/gui/waitbar.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/gui/waitbar.m	Thu Jan 24 19:28:27 2019 +0000
@@ -278,10 +278,10 @@
 %! disp ("Push the <cancel> button to stop the process.");
 %! hf = waitbar (0,"0","Name","Building Koch curve ...",...
 %!               "createcancelbtn", "setappdata (gcbf,'interrupt', true)");
-%! 
+%!
 %! pos2 = get (hf, "position");
 %! set (hf, "position", [pos1(1)+(pos1(3)-pos2(3))/2, pos1(2)+pos1(4), pos2(3:4)]);
-%! 
+%!
 %! for ii = 1:niter
 %!   ## Check cancel request
 %!   if (! ishghandle (hf))
--- a/scripts/miscellaneous/clearvars.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/miscellaneous/clearvars.m	Thu Jan 24 19:28:27 2019 +0000
@@ -147,7 +147,7 @@
   if (numvar > 0 && any ([vars.except]))
     ptn = strjoin ({ vars([vars.except]).var_name }, '|');
     idx_except = ! cellfun (@isempty, regexp (varlist, ptn));
-    idx_clear(idx_except) = false; 
+    idx_clear(idx_except) = false;
   endif
 
   varlist = varlist(idx_clear);
--- a/scripts/optimization/sqp.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/optimization/sqp.m	Thu Jan 24 19:28:27 2019 +0000
@@ -441,7 +441,7 @@
     [x_new, alpha, obj_new, globals] = ...
         linesearch_L1 (x, p, obj_fun, obj_grd, ce_fun, ci_fun, lambda, ...
                        obj, c, globals);
-    
+
     delx = x_new - x;
 
     ## Check if step size has become too small (indicates lack of progress).
--- a/scripts/plot/draw/fplot.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/plot/draw/fplot.m	Thu Jan 24 19:28:27 2019 +0000
@@ -123,14 +123,14 @@
   while (i <= numel (varargin))
     arg = varargin{i};
     if (ischar (arg))
-      [~, valid_fmt] = __pltopt__ ("fplot", arg, false); 
+      [~, valid_fmt] = __pltopt__ ("fplot", arg, false);
       if (valid_fmt)
         fmt(end+1) = arg;
       else
         if (i == numel (varargin))
           error ("fplot: bad input in position %d", i);
         endif
-        fmt(end+(1:2)) = varargin([i, i+1]); 
+        fmt(end+(1:2)) = varargin([i, i+1]);
         i++;  # Skip PROPERTY.
       endif
     elseif (isnumeric (arg) && isscalar (arg) && arg > 0)
--- a/scripts/plot/util/openfig.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/plot/util/openfig.m	Thu Jan 24 19:28:27 2019 +0000
@@ -145,7 +145,7 @@
 %!   h = figure ("visible", "off");
 %!   ftmp = [tempname() ".ofig"];
 %!   hgsave (h, ftmp);
-%!   openfig (ftmp, "new", [1, 2, 3]); 
+%!   openfig (ftmp, "new", [1, 2, 3]);
 %! unwind_protect_cleanup
 %!   unlink (ftmp);
 %!   close (h);
@@ -155,7 +155,7 @@
 %!   h = figure ("visible", "off");
 %!   ftmp = [tempname() ".ofig"];
 %!   hgsave (h, ftmp);
-%!   openfig (ftmp, "foobar"); 
+%!   openfig (ftmp, "foobar");
 %! unwind_protect_cleanup
 %!   unlink (ftmp);
 %!   close (h);
--- a/scripts/plot/util/private/__print_parse_opts__.m	Wed Jan 23 20:16:29 2019 +0000
+++ b/scripts/plot/util/private/__print_parse_opts__.m	Thu Jan 24 19:28:27 2019 +0000
@@ -253,7 +253,7 @@
              graphics_toolkit (arg_st.figure));
   endif
 
-  
+
   if (arg_st.use_color == 0)
     if (any (strcmp ({"ps", "ps2", "eps", "eps2"}, arg_st.devopt)))
       arg_st.use_color = -1;
@@ -615,7 +615,7 @@
     if (isempty (bindir))
       bindir = __octave_config_info__ ("archlibdir");
     endif
-    
+
     binary = fullfile (bindir, "octave-svgconvert");
 
     if (! exist (binary, "file"))
--- a/src/mkoctfile.in.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/src/mkoctfile.in.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -306,7 +306,7 @@
   vars["OCT_LINK_OPTS"] = get_variable ("OCT_LINK_OPTS",
                                         %OCTAVE_CONF_OCT_LINK_OPTS%);
 
-  vars["LDFLAGS"] = get_variable ("LDFLAGS", DEFAULT_LDFLAGS);
+  vars["LDFLAGS"] = get_variable ("LDFLAGS", %OCTAVE_CONF_LDFLAGS%);
 
   vars["LD_CXX"] = get_variable ("LD_CXX", %OCTAVE_CONF_MKOCTFILE_LD_CXX%);
 
@@ -315,6 +315,8 @@
 
   // FIXME: Remove LFLAGS in Octave 7.0
   vars["LFLAGS"] = get_variable ("LFLAGS", DEFAULT_LDFLAGS);
+  if (vars["LFLAGS"] != DEFAULT_LDFLAGS)
+    std::cerr << "warning: LFLAGS is deprecated and will be removed in a future version of Octave, use LDFLAGS instead" << std::endl;
 
   vars["F77_INTEGER8_FLAG"] = get_variable ("F77_INTEGER8_FLAG",
                                             %OCTAVE_CONF_F77_INTEGER_8_FLAG%);
@@ -1076,29 +1078,21 @@
       return 1;
     }
 
-  // FIXME: Remove LFLAGS in Octave 7.0
-  if (vars["LFLAGS"] != vars["LDFLAGS"])
-    {
-      std::cerr << "warning: LFLAGS is deprecated and will be removed in a future version of Octave, use LDFLAGS instead" << std::endl;
-      vars["LDFLAGS"] = vars["LFLAGS"];
-    }
-
   std::string octave_libs;
 
   if (link_stand_alone)
     {
       if (! vars["LD_CXX"].empty ())
         {
-          octave_libs = vars["OCTAVE_LIBS"];
+          octave_libs = "-L" + quote_path (vars["OCTLIBDIR"])
+                      + ' ' + vars["OCTAVE_LIBS"];
 
           std::string cmd
             = (vars["LD_CXX"] + ' ' + vars["CPPFLAGS"] + ' '
                + vars["ALL_CXXFLAGS"] + ' ' + vars["RDYNAMIC_FLAG"] + ' '
                + vars["ALL_LDFLAGS"] + ' ' + pass_on_options + ' '
                + output_option + ' ' + objfiles + ' ' + libfiles + ' '
-               + ldflags + ' ' + vars["LDFLAGS"]
-               + " -L" + quote_path (vars["OCTLIBDIR"])
-               + ' ' + octave_libs + ' '
+               + ldflags + ' ' + vars["LFLAGS"] + ' ' + octave_libs + ' '
                + vars["OCTAVE_LINK_OPTS"] + ' ' + vars["OCTAVE_LINK_DEPS"]);
 
           int status = run_command (cmd, printonly);
@@ -1119,14 +1113,15 @@
   else
     {
 #if defined (OCTAVE_USE_WINDOWS_API) || defined(CROSS)
-      octave_libs = vars["OCTAVE_LIBS"];
+      octave_libs = "-L" + quote_path (vars["OCTLIBDIR"])
+                  + ' ' + vars["OCTAVE_LIBS"];
 #endif
 
       std::string cmd
         = (vars["DL_LD"] + ' ' + vars["ALL_CXXFLAGS"] + ' '
-           + vars["DL_LDFLAGS"] + ' ' + pass_on_options
+           + vars["DL_LDFLAGS"] + ' ' + vars["LDFLAGS"] + ' ' + pass_on_options
            + " -o " + octfile + ' ' + objfiles + ' ' + libfiles + ' '
-           + ldflags + ' ' + vars["LDFLAGS"] + ' ' + octave_libs + ' '
+           + ldflags + ' ' + vars["LFLAGS"] + ' ' + octave_libs + ' '
            + vars["OCT_LINK_OPTS"] + ' ' + vars["OCT_LINK_DEPS"]);
 
       int status = run_command (cmd, printonly);
--- a/src/octave-svgconvert.cc	Wed Jan 23 20:16:29 2019 +0000
+++ b/src/octave-svgconvert.cc	Thu Jan 24 19:28:27 2019 +0000
@@ -718,7 +718,7 @@
 * font: specify a file name for the default FreeSans font\n\
 * reconstruct: specify wether to reconstruct triangle to polygons (0 or 1)\n\
 * outfile: output file name\n";
-  
+
   if (strcmp (argv[1], "-h") == 0)
     {
       std::cout << help;
@@ -804,7 +804,7 @@
             {
               int id = QFontDatabase::addApplicationFont (fontpath);
               if (id < 0)
-                std::cerr << "warning: print: " 
+                std::cerr << "warning: print: "
                   "Unable to add default font to database\n";
             }
           else