guile-user
[Top][All Lists]
Advanced

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

Re: Compiling v1.8.5 on tru64 5.1b


From: Neil Jerram
Subject: Re: Compiling v1.8.5 on tru64 5.1b
Date: Mon, 12 May 2008 21:20:24 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux)

Didier Godefroy <address@hidden> writes:

> Hi all,
>
> Having trouble compiling guile 1.8.5 on tru64 unix v5.1b:

> cc: Error: eval.c, line 2363: In this statement, "*(SCM
> ...)0=(((SCM)((((0))<<8)+scm_tc8_isym)))" is not constant, but occurs in a
> context that requires a constant expression. (needconstexpr)
>     case (ISYMNUM (SCM_IM_AND)):

Are you using a somewhat dated compiler?  scm_tc8_isym is defined
like this:

enum scm_tc8_tags
{
  scm_tc8_flag = scm_tc3_imm24 + 0x00,  /* special objects ('flags') */
  scm_tc8_char = scm_tc3_imm24 + 0x08,  /* characters */
  scm_tc8_isym = scm_tc3_imm24 + 0x10,  /* evaluator byte codes ('isyms') */
  scm_tc8_iloc = scm_tc3_imm24 + 0x18   /* evaluator byte codes ('ilocs') */
};

and scm_tc3_imm24 is:

#define scm_tc3_imm24            4

So a clever enough compiler could deduce that scm_tc8_isym actually is
a constant, and hence the whole of the expression reported above is a
constant.

A fix should be to replace the enum above (in tags.h) by:

#define scm_tc8_flag (scm_tc3_imm24 + 0x00)
#define scm_tc8_char (scm_tc3_imm24 + 0x08)
#define scm_tc8_isym (scm_tc3_imm24 + 0x10)
#define scm_tc8_iloc (scm_tc3_imm24 + 0x18)

Can you try that out and report if it works, or if you then hit other
problems?  Can you also tell us about your compiler, and if there is a
C preprocessor macro that can be used to detect it dynamically?

>
> So I'm wondering, was my copying of the ltdl.h file in the root of the build
> tree an ok thing to do?

I don't think the above has anything to do with ltdl.h.

Regards,
      Neil





reply via email to

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