[R] compiling R-0.90.0 on alpha-dec-osf4.0

Kurt Hornik Kurt.Hornik@ci.tuwien.ac.at
Sun, 28 Nov 1999 17:22:30 +0100 (CET)

>>>>> Prof Brian D Ripley writes:

> On Fri, 26 Nov 1999, Kurt Hornik wrote:
>> Albrecht Gebhardt had the same bug report a few days ago.  I don't quite
>> understand what is going on.  configure checks (via AC_C_CONST) whether
>> `const' works fine.  If not, it defines const as empty in Rdefines.h.
>> This in turn gets included in all of our source files.  So how can it
>> happen that const is empty in one place and not in another?

> Look in gram.c:

> #ifndef __cplusplus
> #ifndef __STDC__
> #define const
> #endif
> #endif

> comes before the forward declaration and the definition. We have ANSI
> compilers, so this does not happen to us.

> I don't know how to tell bison to behave!

I know :-)

In bison-xy/src/output.c, replace the unconditional

  /* Make "const" do nothing if not in ANSI C.  */
  fprintf (ftable, "#ifndef __cplusplus\n#ifndef __STDC__\n#define const\n#endif

by something more useful :-)

But seriously, what is going on here?  Autoconf says

 - Macro: AC_C_CONST
     If the C compiler does not fully support the keyword `const',
     define `const' to be empty.  Some C compilers that do not define
     `__STDC__' do support `const'; some compilers that define
     `__STDC__' do not completely support `const'.  Programs can simply
     use `const' as if every C compiler supported it; for those that
     don't, the `Makefile' or configuration header file will define it
     as empty.

so how can we deal with the situation where __STDC__ is not defined by
the compiler but `const' still works?

One solution would be to mimic Bison's rule in addition to the autoconf
magic, so that we define const as empty when __STDC__ is not defined,
even if const works.


r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch