Vala und die Autotools Teil 2

3. September 2010

Da man in Vala meist Pakete angeben muss, welche der Valacompiler benützt um die richtigen C Funktionen zu erstellen, müssen diese den Autotools bekannt gegeben werden. Dies macht man über

1
VALAFLAGS = --pkg gio-2.0

Mit den VALAFLAGS werden alle zusätzlichen Compilerangaben für den Valacompiler übermittelt. Dadurch kann er nicht überprüfen ob die .vapi-Files (das sind mehr oder weniger die Binding-Files für die C-Bibliotheken) vorhanden sind. Jedoch installiert der Vala-Compiler alle gängigen Gtk-Binding-Files von Haus aus. Es muss so lediglich überprüft werden, ob die C-Bibliotheken installiert sind.

Normalerweise muss die Variable VALAFLAGS in dem spezifischen Makefile.am angegeben werden. Kann aber auch im configure.ac angegeben werden. Dies würde dann folgendermaßen aussehen:

1
2
3
configure.ac
VALAFLAGS = --pkg gio-2.0
AC_SUBST(VALAFLAGS)

AC_SUBST übernimmt hier die Variable und macht sie in allen angegebenen Makefiles bekannt.

Das ermöglicht einem auch mit bedingter Übersetzung zu spielen. Angenommen ich habe einige Debug-Anweisungen in meinem Vala-Programm und möchte für die Distribution diese aus dem Kompilat nehmen. Dafür existieren in Vala die sogenannten Conditional Expressions. Ähnlich wie die Präprozessor-Anweisungen von C kann man somit Teile des Quellcodes für den Compiler ausblenden. Wenn nun beispielsweise Anweisungen mit #ifdef Foo … #endif eingeschachtelt wurden, muss man dem Compiler die Definition mitgeben

1
$ valac -D Foo foo.vala

Die Frage, die sich natürlich schnell stellt: Wie kann man dies in die Autotools integrieren?

Conditionals

Um dem configure-Skript zusätzliche Parameter mitgeben zu können benutzt man folgendes Makro:

1
2
3
AC_ARG_ENABLE(foo, AS_HELP_STRING([--enable-foo], \
          [turn on Foo-Condition]), enable_foo=$enableval, enable_foo=no)
AM_CONDITIONAL(ENABLE_FOO, text x$enable_foo = xno)

Nun kann man einer einfachen Bash-if-Abfrage verschieden Variablen setzen

1
2
3
4
5
6
if test "$enable_foo" = "yes"; then
  VALAFLAGS="-D Foo"
else
  VALAFLAGS=""
fi
AC_SUBST(VALAFLAGS)

Somit kann ich beim configurieren der Makefiles als Option

1
$ ./configure --enable-foo

aktivieren und meine Anweisungen an den Vala-Compiler weiter reichen.

Filed under: Allgemein,Archlinux

Schlagwörter: , ,

Hinterlasse einen Kommentar

(erforderlich)

(erforderlich), (Versteckt)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

TrackBack URL  |  RSS Feed für Kommentare zu diesem Artikel.


Kalender

September 2010
M D M D F S S
« Feb   Jul »
 12345
6789101112
13141516171819
20212223242526
27282930  

Blogroll

Meta