problem with bison
Nicolas Flipo
Nicolas.Flipo at ensmp.fr
Fri Jul 18 07:38:05 CDT 2008
Hi Satish,
Thanks for your quick answer but I don't manage to make it works
because I don't have enough expertise with makefiles.
Thus here is the Makefile of my initial problem (sorry I just saw that
I forgot to include the last lines concerning the .y.o in my first
message):
PROGRAMME= program
SOURCES.c = verouille.c \
hydraulique.c debug.c flux_apport.c init_hyd.c\
adv_bott.c adv_decentre.c transport.c dispersion.c adv_caract.c pk.c \
reaere.c tubes.c rayons.c traceur.c \
bact_nit.c timing.c GMcatch_main.c sortie.c verification_basin.c
output_basin.c messages.c surf-zns.c \
phyto.c oxygene.c element_nut.c zoo.c bact.c\
geometrie.c calculs_courants.c\
maillage.c init.c biologie.c\
matrice.c
SOURCES.l = lexique.l
SOURCES.y = newent.y
SOURCES.h = parametres.h structurs.h var_globals.h functions.h
CFLAGS_GLOBAUX= -g -Wall -DYYDEBUG
CFLAGS= $(CFLAGS_GLOBAUX)
YACC= bison -y
LEX= flex
YFLAGS= -dv
LFLAGS= -v
CC=gcc
OBJ= $(SOURCES.y:.y=.o) $(SOURCES.l:.l=.o) $(SOURCES.c:.c=.o)
CLEANFILES = $(OBJ) core y.*
include ${PETSC_DIR}/bmake/common/base
$(PROGRAMME) : $(OBJ) chkopts
-$(CLINKER) -o $(PROGRAMME) $(OBJ) ${PETSC_KSP_LIB}
.y.o :
$(YACC.y) $<
$(COMPILE.c) -o $@ y.tab.c
giving this error
[user at horsdeprix ]$ make program
In file included from newent.y:166:
var_globals.h:8:35: petscksp.h : File or folder not found
I then tried to replace the target .y.o by a .y.c one. I erased the
target .y.o and replace it by what you said:
.y.c :
$(YACC.y) $<
what led to the following error
[user at horsdeprix ]$ make program
bison -y -dv newent.y
mpicxx -o newent.o -c -Wall -Wwrite-strings -Wno-strict-aliasing -g -g
-Wall -DYYDEBUG -I/usr/local/PETSc/petsc-2.3.3-p13
-I/usr/local/PETSc/petsc-2.3.3-p13/bmake/linux-gnu-c-debug
-I/usr/local/PETSc/petsc-2.3.3-p13/include -I. -I/usr/local/include
-I/usr/local/include -I/usr/X11R6/include -D__SDIR__="" newent.c
c++: newent.c : No files or folder of this type
c++: pas de fichier à l'entrÃ(c)e
make: *** [newent.o] Erreur 1
The thing is that bison -y -dv newent.y creates three files called
y.tab.c y.tab.h and y.output
If I don't set the -y option I gonna also have three files called
newent.tab.c newent.tab.h and newent.output
And I don't know how to force the makefile to take y.tab.c and y.tab.h
instead of newent.c which does not exist. Maybe it comes from the
lines
OBJ= $(SOURCES.y:.y=.o) $(SOURCES.l:.l=.o) $(SOURCES.c:.c=.o)
and
$(PROGRAMME) : $(OBJ) chkopts
-$(CLINKER) -o $(PROGRAMME) $(OBJ) ${PETSC_KSP_LIB}
Maybe I also have to include the .tab.h at one point of the compiling process.
Thanks for your help
Nico
On Thu, Jul 17, 2008 at 9:00 PM, Satish Balay <balay at mcs.anl.gov> wrote:
> What I mean by not having the correct make targets is:
>
> PETSc provides a make target for compiling .c files into .o files. i.e
>
> .c.o:
> ${CC} -c -I${PETSC_DIR} -I ${PETSC_DIR}/include $<
>
> However when your sourcefile is .y - and not .c, make is using a .y.o
> target such as:
>
> .y.o:
> ${YACC} $<
> ${CC} -c ${CFLAGS} -o $*.o y.tab.c
>
>
> This '.y.o:' target might be internal to make. So I was speculating
> that becuase this other target is used to create .y.o - instead of the
> '.c.o' from PETSc - the compile is failing.
>
> I was sugesting - perhaps you can add a '.y.c' target in your makefile
> - this way make uses .y -> .c and .c -> .o targets [instead of .y->.o
> target]
>
> .y.c:
> ${YACC} $<
>
>
> [or whatever the correct syntax for invoking yacc to convert foo.y to foo.c is]
>
> Satish
>
> On Thu, 17 Jul 2008, Nicolas Flipo wrote:
>
>> Hi Satish,
>>
>> I'm not sure to understand exactly what you mean.
>
>> The last thing is that I don't understand why include
>> ${PETSC_DIR}/bmake/common/base doesn't work for bison?
>> Nico
>
>> On Thu, Jul 17, 2008 at 9:40 AM, Satish Balay <balay at mcs.anl.gov> wrote:
>> > Hmm - perhaps you need to specify a '.y.c:' target in your makefile?
>> >
>> > It loks like make is using a '.y.o:' target - thus skipping '.c.o:'
>> > target as defined in PETSc makefiles.
>> >
>> >> gcc -g -Wall -DYYDEBUG -c -o newent.o y.tab.c
>> >
>> > If PETSc target for .c file is used - you should see
>> > -I$PETSC_DIR/include etc options aswell.
>> >
>> > Satish
>
>
--
-------------------------------------------------------
Nicolas Flipo
Centre de Géosciences
Systèmes Hydrologiques et Réservoirs
Ecole Nationale Supérieure des Mines de Paris
35, rue Saint-Honoré
77305 Fontainebleau
tél.: (33) (0)1 64 69 47 52
e-mail: Nicolas.Flipo at ensmp.fr
http://cig.ensmp.fr/~flipo
-------------------------------------------------------
More information about the petsc-users
mailing list