On Mon, 2009-04-06 at 01:52 -0400, Yu Feng wrote:
> Hi Jürg,
> 
> On Sun, 2009-04-05 at 17:54 +0200, Jürg Billeter wrote:
> > We are pleased to announce version 0.7.0 of Vala, a compiler for the
> > GObject type system.
> > 
> > Vala 0.7.0 is now available for download at:
> >    http://download.gnome.org/sources/vala/0.7/
> > 
> > Changes since 0.6.0
> 
> >  * Do not generate header files unless requested by the -H commandline
> >    option. This requires changes in the build system of Vala projects.
> Are there any references on how to port a project to the new header
> schema?
> 

Hi Yu,

this are my .02 cents on the argument because I tried to port Vtg just
yesterday. At the moment I didn't manage to compile it yet, but I think
that I'm hitting a vala bug and not a automake problem.

>From what Jürg told me yesterday we have two main case: library and
programs.

The library is the most "complex" one (nothing really complex...) to
port and you need to do:

1) change the generated C source line 

From:

vbftest_SOURCES = \
        libvbf.vala.stamp \
        $(vbftest_VALASOURCES:.vala=.c) \
        $(vbftest_VALASOURCES:.vala=.h) \
        $(NULL)

To:

vbftest_SOURCES = \
        libvbf.vala.stamp \
        $(vbftest_VALASOURCES:.vala=.c) \
        $(NULL)

2) Add the -H switch to the valac compile line like in this example:

$(VALAC) $(DEBUG) -C -H vbf.h --library vbf-1.0 --vapidir ../vapi --pkg
gio-2.0 --pkg config --pkg vala-1.0 --pkg utils --basedir
$(top_srcdir)/vbf $^

Note the -H vbf.h, so the vala compiler will generate the vbf.h header
of all the exported (public) symbols

3) Add the generated header (vbf.h in this example) to the _HEADERS
automake directive:

noinst_HEADERS = \
        vbf.h \
        $(NULL)

The step 3 can be done in two variants, the above one is what I used for
an utility library statically linked with my app. The automake manual
says that for this case is better to include the vbf.h directly in the
_SOURCES but I haven't tried it yet.

The following snippet is taken from the libgee library included with the
vala sources and it's the other way of doing it:

geeincludedir = $(includedir)/vala-1.0

geeinclude_HEADERS = \
        gee.h \
        $(NULL)

Where gee.vala.stamp is defined in the BUILT_SOURCES directive as
always.

For programs only the first step should be required.

Hope this helps.

Cheers,
        Andrea

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to