// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

=== Infrastructure for QMake-based packages

[[qmake-package-tutorial]]

==== +qmake-package+ tutorial

First, let's see how to write a +.mk+ file for a QMake-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 = QT_CONFIG+=bar QT_CONFIG-=baz
11: LIBFOO_DEPENDENCIES = bar
12:
13: $(eval $(qmake-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 +qmake-package+
macro that generates all the Makefile rules that actually allows the
package to be built.

[[qmake-package-reference]]

==== +qmake-package+ reference

The main macro of the QMake package infrastructure is +qmake-package+.
It is similar to the +generic-package+ macro.

Just like the generic infrastructure, the QMake infrastructure works
by defining a number of variables before calling the +qmake-package+
macro.

All the package metadata information variables that exist in the
xref:generic-package-reference[generic package infrastructure] also
exist in the QMake infrastructure.

A few additional variables, specific to the QMake infrastructure, can
also be defined.

* +LIBFOO_CONF_ENV+, to specify additional environment variables to
  pass to the +qmake+ script for the configuration step. By default, empty.

* +LIBFOO_CONF_OPTS+, to specify additional options to pass to the
  +qmake+ script for the configuration step. By default, empty.

* +LIBFOO_MAKE_ENV+, to specify additional environment variables to the
  +make+ command during the build and install steps. By default, empty.

* +LIBFOO_MAKE_OPTS+, to specify additional targets to pass to the
  +make+ command during the build step. By default, empty.

* +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional targets to pass
  to the +make+ command during the staging installation step. By default,
  +install+.

* +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional targets to pass
  to the +make+ command during the target installation step. By default,
  +install+.

* +LIBFOO_SYNC_QT_HEADERS+, to run syncqt.pl before qmake. Some packages
  need this to have a properly populated include directory before
  running the build.
