|
@@ -0,0 +1,67 @@
|
|
|
+// -*- 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 depednencies 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_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 Buidlroot will download,
|
|
|
+ install waf as a host tool and use it to build the package.
|