Boost logo

Boost :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-10-10 10:30:19


----- Original Message -----
From: "Toon Knapen" <toon.knapen_at_[hidden]>

> I tried to build the boost.jam on IBM and only encountered the problem
> that yyacc was not executable. After a 'chmod +x yyacc', the jam
> executable was generated.
>
> However, I still get the same errors when launching 'jam' as with FTJam :
>
> <\begin terminal output>
> biot:/home/tk/boost/tools/build/jam_src/bin.aix> ./jam
> +: line 1323: yacc stack overflow at string "
> $(AR) $(<) -+$(>)
> "
> don't know how to make all
> ...found 1 target...
> ...can't find 1 target...
> biot:/home/tk/boost/tools/build/jam_src/bin.aix>
> <\end terminal output>

Interesting. What happens if you comment out the following line in the
jam_src/Jamfile

    GenFile jamgram.y jamgramtab.h : ./yyacc jamgram.yy ;

and use the jamgram.y and jamgram.h which are checked in (as opposed to the
ones which were generated on your local system when you tried to build)? I'm
asking this on the theory that there's something strange about your local
yacc.

Another debugging strategy: turn on debugging in your local yacc. If you
look at makedebugjam.bat, which I checked in to jam_src, you'll see that I
enabled it by setting up the YACC variable as follows:

set YACC="bison -t -d -l -v --debug --yacc"

See your local yacc documentation for site-specific debug options. You may
need to #define some special symbols somewhere to actually get the debugging
output.

> On SGI, jam compiled fined (after setting the executable flag on
> 'yyacc'). Some time ago, you agreed with my proposition to provide
> jam-executables to the boost users for the most popular platforms. Do I
> already check in the SGI version and where ?

I'm not sure yet. What do you think?

> On HP (HP-UX 10.20) I did not succeed in building 'jam0' since 'alloca'
> is an undefined symbol. I have searched through all system libraries but
> could not find a definition of alloca. The man page directed me to an
> old library which neither defined 'alloca'. I found some information on
> the web though confirming that 'alloca' is indeed missing on (some / all
> ?) HP-UX machines together with an open-source implementation of the
> routine.
> (ref :
>
http://www.informatik.tu-muenchen.de/rechenbetrieb/infohalle/progber/Portier
ung/alloca.html)

OK, the use of alloca is part of code in jamgram.c, which is generated by
gnu bison, the only version of yacc that I have on my system. If you look at
the previously-checked-in version of jamgram.c, which was generated by some
other yacc, you'll see that there's no use of alloca. If there is a yacc on
your HP machine, it could be used to generate a new jamgram.c, which, I
imagine, would not use alloca.

One way to do that might be as follows:
1. Build Perforce Jam
2. Go to tools/build/jam_src
3. Invoke jam -sYACC=yacc (note that Jambase doesn't seem to define YACC for
HP/UX)

Otherwise, you could try adding the alloca you refer to above to the Jam
sources.

-Dave


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk