Hi Jürg, * Jürg Billeter wrote on Wed, Apr 15, 2009 at 08:56:44PM CEST: > On Wed, 2009-04-15 at 20:42 +0200, Ralf Wildenhues wrote: > > I'm looking at adding per-target flag support for vala sources. > > > > Say I have baz.vala and want to create from that > > foo-baz.c foo-baz.h > > > > in one valac invocation, as well as > > bar-baz.c bar-baz.h > > > > in another 'valac -D BAR' invocation. Is there some flag I can pass to > > valac that will use these output names for me? If yes, does it do so > > without generating intermediate baz.c baz.h files or any other temporary > > files that have a name which would conflict with parallel make -jN > > execution? > > valac does not currently support any transformation on the output names > of the .c files. It's not as easy as a simple -o option because you have > multiple input and output files per invocation in general (see below).
Ah. Good to know. > If you think it would make sense to add a --suffix option or similar to > valac, I could certainly take a look at it. I think a --prefix option should do the trick, but I haven't thought this through yet. > > Also, I see that your vala compile passes all sources to valac. Is that > > intentional (or just because that was good enough)? I.e., if you have > > bin_PROGRAMS = foo > > foo_SOURCES = a.c b.vala c.l d.java e.vala > > > > do you really want to invoke > > valac -C a.c b.vala c.l d.java e.vala > > That was not intentional. valac won't mind unnecessary .c files but will > reject files with other extensions. Ah; that looks like a bug we should fix and test. > > rather than > > valac -C b.vala e.vala > > This would be the correct commandline. OK. > > or even > > valac -C b.vala > > valac -C e.vala > > This would not work, valac requires all Vala source files of the same > program / library on the same commandline. The reason is that the source > files can depend on each other, but there is no header/include > mechanism. Hmm. What if I do something like this: bin_PROGRAMS = foo foo_SOURCES = foo1.vala foo2.vala foo_LDADD = libbar.a noinst_LIBRARIES = libbar.a libbar_a_SOURCES = bar1.vala bar2.vala How would valac cope with the necessarily separate invocations for foo*.vala and bar*.vala? And what happens if you try to put vala code into shared libraries, and use them from other vala code? Thanks, Ralf