12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // -*- mode:doc; -*-
- // vim: set syntax=asciidoc:
- === Infrastructure for Waf-based packages
- [[waf-package-tutorial]]
- ==== +waf-package+ tutorial
- First, let's see how to write a +.mk+ file for a Waf-based package, with
- an example :
- ------------------------
- 01: ################################################################################
- 02: #
- 03: # libfoo
- 04: #
- 05: ################################################################################
- 06:
- 07: LIBFOO_VERSION = 1.0
- 08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
- 09: LIBFOO_SITE = http://www.foosoftware.org/download
- 10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz
- 11: LIBFOO_DEPENDENCIES = bar
- 12:
- 13: $(eval $(waf-package))
- ------------------------
- On line 7, we declare the version of the package.
- On line 8 and 9, we declare the name of the tarball (xz-ed tarball
- recommended) and the location of the tarball on the Web. Buildroot
- will automatically download the tarball from this location.
- On line 10, we tell Buildroot what options to enable for libfoo.
- On line 11, we tell Buildroot the dependencies of libfoo.
- Finally, on line line 13, we invoke the +waf-package+
- macro that generates all the Makefile rules that actually allows the
- package to be built.
- [[waf-package-reference]]
- ==== +waf-package+ reference
- The main macro of the Waf package infrastructure is +waf-package+.
- It is similar to the +generic-package+ macro.
- Just like the generic infrastructure, the Waf infrastructure works
- by defining a number of variables before calling the +waf-package+
- macro.
- First, all the package metadata information variables that exist in
- the generic infrastructure also exist in the Waf infrastructure:
- +LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+,
- +LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+,
- +LIBFOO_INSTALL_TARGET+.
- An additional variable, specific to the Waf infrastructure, can
- also be defined.
- * +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the
- package that contains the main wscript file. This is useful,
- if for example, the main wscript file is not at the root of
- the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not
- specified, it defaults to +LIBFOO_SUBDIR+.
- * +LIBFOO_NEEDS_EXTERNAL_WAF+ can be set to +YES+ or +NO+ to tell
- Buildroot to use the bundled +waf+ executable. If set to +NO+, the
- default, then Buildroot will use the waf executable provided in the
- package source tree; if set to +YES+, then Buildroot will download,
- install waf as a host tool and use it to build the package.
- * +LIBFOO_WAF_OPTS+, to specify additional options to pass to the
- +waf+ script at every step of the package build process: configure,
- build and installation. By default, empty.
- * +LIBFOO_CONF_OPTS+, to specify additional options to pass to the
- +waf+ script for the configuration step. By default, empty.
- * +LIBFOO_BUILD_OPTS+, to specify additional options to pass to the
- +waf+ script during the build step. By default, empty.
- * +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional options to pass
- to the +waf+ script during the staging installation step. By default,
- empty.
- * +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional options to pass
- to the +waf+ script during the target installation step. By default,
- empty.
|