automake
[Top][All Lists]
Advanced

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

Re: seperate CFLAGS/LFLAFS


From: Philip Herron
Subject: Re: seperate CFLAGS/LFLAFS
Date: Wed, 15 Apr 2009 17:52:07 +0100
User-agent: Thunderbird 2.0.0.21 (X11/20090318)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Christian Rössel wrote:
> Philip Herron wrote:
>> Hey
>>
>> I was just wondering say you have a Makefile.am like this:
>>
>> bin_PROGRAMS= myprog
>> AM_YFLAGS= -d
>> AM_LFLAGS=
>>
>> mprog_CFLAGS= -I$(top_srcdir)/include
>> myprog_SOURCES= foo1.c foo2.c bla.l bla_gram.y bla2.l bla bla bla....
>>
>> Can you specify seperate FLAG like LFLAG to one single source.
>>
>> Like it would solve alot of problems if you could run this but run the
>> lexer -Pprefix option on only one of those lexer files. or specify
>> sperate prefixes for each lexer/yacc
>>
>> -Phil
> 
> Hi Phil,
> 
> I not sure if this applies also to your lexer stuff, but there is an
> "Per-Object Flags Emulation", see
> http://www.gnu.org/software/automake/manual/automake.html#Per_002dObject-Flags
> 
> Cheers,
> Christian
> 
> 
> -------------------------------------------------------------------
> -------------------------------------------------------------------
> Forschungszentrum Jülich GmbH
> 52425 Jülich
> 
> Sitz der Gesellschaft: Jülich
> Eingetragen im Handelsregister des Amtsgerichts Düren Nr. HR B 3498
> Vorsitzende des Aufsichtsrats: MinDir'in Bärbel Brumme-Bothe
> Geschäftsführung: Prof. Dr. Achim Bachem (Vorsitzender),
> Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr. Harald Bolt,
> Dr. Sebastian M. Schmidt
> -------------------------------------------------------------------
> -------------------------------------------------------------------
> 
> 
Hey

Guys i am so happy right now i finally fixed my multiple lexer problem
for good!

I'll outline here what i done just to get around it. So its a closed
topic and put it up on my blog :P so as i dont loose it because there
are like 3 main approaches to doing it but automake with ylwrap does the
trick.

So What i have its one main program, it has to lexers: foo1.l foo2.l

the foo2.l also has a foo2_grammar.y. and some other c files etc...

So my Makefile.am looks like:

bin_PROGRAMS= myprogram

AM_YFLAGS = -d -p re_
myprogram_CFLAGS= -I$(top_srcdir)/include
myprogram_SOURCES= foo_a.c foo_b.c foo_c.c foo1.l foo2.l foo2_grammar.y
foo_d.c

Becuase i only have one grammar file this can work but i'll show the
work around for multiple grammar's and multiple lexers.

So i can leave one of those lexers are default, i left the foo1.l as
default yy prefix because its ok.

But the 2nd lexer foo2.l:

Just after your top header definitions just before your lexer stuff add
in this:

//make sure your leave the outfile to lex.yy.c for ylwrap to be pleased
:P gives you the error something about -s being missing because ylwrap
auto renames anyways.

%option prefix="re_" outfile="lex.yy.c"

change the "re_" -> whatever you want your prefix to be: so then also
inside your lexer change your stuff to your prefix like:

void re_error(const char *str)
{
  fprintf(stderr,"Error: %s\n",str);
}

int re_wrap()
{
  return 1;
}

int run_parser( const char* rulesPath )
{
  FILE *rules= fopen(rulesPath, "r");
  if( rules == (FILE*)0 ) {
    fprintf(stderr, "Cannot open file: %s\n", rulesPath);
    return 1;
  }
  //change default input to the file instead of stdin..
  re_in= rules;
  re_parse();

  return 0;
}

notice the re_in instead of yyin the re_parse instead of yyparse()
re_wrap instead of yywrap re_error instead of yyerror

Then remember in my Makefile.am:

AM_YFLAGS = -d -p re_

the -p works for the yacc.
But the -Pprefix for flex causes erros for automake + ylwrap.

This all seems to work for me ok. But say you have 2 lexers each with
their own grammar i would make them like libraries like this:

http://www.gnu.org/software/automake/manual/automake.html#Per_002dObject-Flags

And then its seperate but also do different prefixes. like this! But its
all easier than it sounds. Thanks very much for you all anwsering my
questions :)

- -Phil
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknmELQACgkQAhcOgIaQQ2Ha1wCgkNWHaWcYtXTJpNOv7wPL576E
l3YAoJSUwOjl8jBcxM0Idfqs/pwk2Wxb
=giV5
-----END PGP SIGNATURE-----




reply via email to

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