octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to not break cross-building


From: John W. Eaton
Subject: Re: how to not break cross-building
Date: Thu, 28 Apr 2016 14:51:16 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0

On 04/28/2016 02:12 PM, Mike Miller wrote:
On Thu, Apr 28, 2016 at 13:24:23 +0200, Olaf Till wrote:
In building package documentation, when the package is not yet
installed, the cleanest way for extracting help strings from C++ code
seems to be to compile a (minimalistic) binary which outputs this help
string. In this way, all special characters in the C-string are
treated as they should be.

This certainly will break cross-building if the cross-compiler is used
to compile the minimalistic binary. But any native C-compiler would
serve, it only has to evaluate the C-string correctly and call
'printf'. I have no practical experience with cross-building, I only
care for it because I know others want to do it with packages. Is
there a way to specifiy, in the Makefile, that for a certain step a
native compiler should be used, not the cross-compiler?

I am actually not familiar with the minimalistic binary approach.

In Octave's build system, the C++ preprocessor is used to extract the
docstrings from all source files, which are then inserted into the
manual and used to build the doc-cache file. I think that a
cross-preprocessor would be just as effective as a native preprocessor.

Yes, the .df files are generated using the preprocessor and sed (sed script is in libinterp/mkdefs). The .df files still have \n and \" in them. Those are handled by the libinterp/gendoc.pl script. I think it is better to do this job with a perl script instead of compiling a program that includes the docstrings.

Rik and I had some plans to change the way docstrings are handled in the Octave sources so that instead of writing

  DEFUN (fcn, args, nargout,
         "-*- texinfo -*-\n\
  @deftypefn ...
  ...
  ...)

you would write something like this:

  DEFUN (fcn, args, nargout,
         doc: /* -*- texinfo -*-
  @deftypefn ...
  ...
  ...)

This is what is done in the Emacs sources now (and Emacs is where I got the idea for the DEFUN macro).

If we switch to this method, the docstring in the C++ sources would be easier to edit because they would just need to be valid C comments instead of having to follow the rules for C strings.

Either way, I think we could eliminate the need for the preprocessor just having a perl script search for DEFUN and extract the docstrings. But it would be simpler to not have to deal with escape sequences.

jwe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]