[[autotargets-tutorial]]
-+AUTOTARGETS+ tutorial
++autotools-package+ tutorial
~~~~~~~~~~~~~~~~~~~~~~
First, let's see how to write a +.mk+ file for an autotools-based
11: LIBFOO_CONF_OPT = --enable-shared
12: LIBFOO_DEPENDENCIES = libglib2 host-pkg-config
13:
-14: $(eval $(AUTOTARGETS))
+14: $(eval $(autotools-package))
------------------------
On line 6, we declare the version of the package.
On line 12, we declare our dependencies, so that they are built
before the build process of our package starts.
-Finally, on line line 14, we invoke the +AUTOTARGETS+
+Finally, on line line 14, we invoke the +autotools-package+
macro that generates all the Makefile rules that actually allows the
package to be built.
[[autotargets-reference]]
-+AUTOTARGETS+ reference
++autotools-package+ reference
~~~~~~~~~~~~~~~~~~~~~~~
The main macro of the autotools package infrastructure is
-+AUTOTARGETS+. It is similar to the +GENTARGETS+ macro. The ability to
++autotools-package+. It is similar to the +generic-package+ macro. The ability to
have target and host packages is also available, with the
+host-autotools-package+ macro.
Just like the generic infrastructure, the autotools infrastructure
works by defining a number of variables before calling the
-+AUTOTARGETS+ macro.
++autotools-package+ macro.
First, all the package metadata information variables that exist in the
generic infrastructure also exist in the autotools infrastructure:
[[cmaketargets-tutorial]]
-+CMAKETARGETS+ tutorial
++cmake-package+ tutorial
~~~~~~~~~~~~~~~~~~~~~~~
First, let's see how to write a +.mk+ file for a CMake-based package,
11: LIBFOO_CONF_OPT = -DBUILD_DEMOS=ON
12: LIBFOO_DEPENDENCIES = libglib2 host-pkg-config
13:
-14: $(eval $(CMAKETARGETS))
+14: $(eval $(cmake-package))
------------------------
On line 6, we declare the version of the package.
On line 12, we declare our dependencies, so that they are built
before the build process of our package starts.
-Finally, on line line 14, we invoke the +CMAKETARGETS+
+Finally, on line line 14, we invoke the +cmake-package+
macro that generates all the Makefile rules that actually allows the
package to be built.
[[cmaketargets-reference]]
-+CMAKETARGETS+ reference
++cmake-package+ reference
~~~~~~~~~~~~~~~~~~~~~~~~
The main macro of the CMake package infrastructure is
-+CMAKETARGETS+. It is similar to the +GENTARGETS+ macro. The ability to
++cmake-package+. It is similar to the +generic-package+ macro. The ability to
have target and host packages is also available, with the
+host-cmake-package+ macro.
Just like the generic infrastructure, the CMake infrastructure works
-by defining a number of variables before calling the +CMAKETARGETS+
+by defining a number of variables before calling the +cmake-package+
macro.
First, all the package metadata information variables that exist in
[[gentargets-tutorial]]
-+GENTARGETS+ Tutorial
++generic-package+ Tutorial
~~~~~~~~~~~~~~~~~~~~~
------------------------------
32: /bin/foo f 4755 0 0 - - - - -
33: endef
34:
-35: $(eval $(GENTARGETS))
+35: $(eval $(generic-package))
--------------------------------
The Makefile begins on line 6 to 8 with metadata information: the
contains the directory where the source code of the package has been
extracted.
-Finally, on line 35, we call the +GENTARGETS+ which
+Finally, on line 35, we call the +generic-package+ which
generates, according to the variables defined previously, all the
Makefile code necessary to make your package working.
[[gentargets-reference]]
-+GENTARGETS+ Reference
++generic-package+ Reference
~~~~~~~~~~~~~~~~~~~~~~
-There are two variants of the generic target. The +GENTARGETS+ macro is
+There are two variants of the generic target. The +generic-package+ macro is
used for packages to be cross-compiled for the target. The
+host-generic-package+ macro is used for host packages, natively compiled
for the host. It is possible to call both of them in a single +.mk+
package and once to create the rules to generate a host package:
----------------------
-$(eval $(GENTARGETS))
+$(eval $(generic-package))
$(eval $(host-generic-package))
----------------------
variables of other packages, if they depend on +libfoo+ or
+host-libfoo+.
-The call to the +GENTARGETS+ and/or +host-generic-package+ macro *must* be
+The call to the +generic-package+ and/or +host-generic-package+ macro *must* be
at the end of the +.mk+ file, after all variable definitions.
-For the target package, the +GENTARGETS+ uses the variables defined by
+For the target package, the +generic-package+ uses the variables defined by
the .mk file and prefixed by the uppercased package name:
+LIBFOO_*+. +host-generic-package+ uses the +HOST_LIBFOO_*+ variables. For
'some' variables, if the +HOST_LIBFOO_+ prefixed variable doesn't
endef
################################################################################
-# AUTOTARGETS_INNER -- defines how the configuration, compilation and
+# inner-autotools-package -- defines how the configuration, compilation and
# installation of an autotools package should be done, implements a
# few hooks to tune the build process for autotools specifities and
# calls the generic package infrastructure to generate the necessary
# argument 5 is the type (target or host)
################################################################################
-define AUTOTARGETS_INNER
+define inner-autotools-package
# define package-specific variables to default values
ifndef $(2)_SUBDIR
fi
endef
-# This must be repeated from GENTARGETS_INNER, otherwise we get an empty
+# This must be repeated from inner-generic-package, otherwise we get an empty
# _DEPENDENCIES if _AUTORECONF is YES. Also filter the result of _AUTORECONF
# away from the non-host rule
$(2)_DEPENDENCIES ?= $(filter-out host-automake host-autoconf host-libtool $(1),\
# Call the generic package infrastructure to generate the necessary
# make targets
-$(call GENTARGETS_INNER,$(1),$(2),$(3),$(4),$(5))
+$(call inner-generic-package,$(1),$(2),$(3),$(4),$(5))
endef
################################################################################
-# AUTOTARGETS -- the target generator macro for autotools packages
-#
-# Argument 1 is "target" or "host" [optional, default: "target"]
+# autotools-package -- the target generator macro for autotools packages
################################################################################
-AUTOTARGETS = $(call AUTOTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
-host-autotools-package = $(call AUTOTARGETS_INNER,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
+autotools-package = $(call inner-autotools-package,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
+host-autotools-package = $(call inner-autotools-package,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
################################################################################
################################################################################
-# CMAKETARGETS_INNER -- defines how the configuration, compilation and
+# inner-cmake-package -- defines how the configuration, compilation and
# installation of a CMake package should be done, implements a few hooks to
# tune the build process and calls the generic package infrastructure to
# generate the necessary make targets
# argument 5 is the type (target or host)
################################################################################
-define CMAKETARGETS_INNER
+define inner-cmake-package
# define package-specific variables to default values
ifndef $(2)_SUBDIR
endif
endif
-# This must be repeated from GENTARGETS_INNER, otherwise we only get
+# This must be repeated from inner-generic-package, otherwise we only get
# host-cmake in _DEPENDENCIES because of the following line
$(2)_DEPENDENCIES ?= $(filter-out $(1),$(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
# Call the generic package infrastructure to generate the necessary
# make targets
-$(call GENTARGETS_INNER,$(1),$(2),$(3),$(4),$(5))
+$(call inner-generic-package,$(1),$(2),$(3),$(4),$(5))
endef
################################################################################
-# CMAKETARGETS -- the target generator macro for CMake packages
-#
-# Argument 1 is "target" or "host" [optional, default: "target"]
+# cmake-package -- the target generator macro for CMake packages
################################################################################
-CMAKETARGETS = $(call CMAKETARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
-host-cmake-package = $(call CMAKETARGETS_INNER,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
+cmake-package = $(call inner-cmake-package,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
+host-cmake-package = $(call inner-cmake-package,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
################################################################################
# Generation of the CMake toolchain file
rm -Rf $(@D)
################################################################################
-# GENTARGETS_INNER -- generates the make targets needed to build a
+# inner-generic-package -- generates the make targets needed to build a
# generic package
#
# argument 1 is the lowercase package name
# argument 5 is the type (target or host)
################################################################################
-define GENTARGETS_INNER
+define inner-generic-package
# Define default values for various package-related variables, if not
# already defined. For some variables (version, source, site and
DL_TOOLS_DEPENDENCIES += $(firstword $(INFLATE$(suffix $($(2)_SOURCE))))
endif # $(2)_KCONFIG_VAR
-endef # GENTARGETS_INNER
+endef # inner-generic-package
################################################################################
-# GENTARGETS -- the target generator macro for generic packages
-#
-# Argument 1 is "target" or "host" [optional, default: "target"]
+# generic-package -- the target generator macro for generic packages
################################################################################
# In the case of target packages, keep the package name "pkg"
-GENTARGETS = $(call GENTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
+generic-package = $(call inner-generic-package,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
# In the case of host packages, turn the package name "pkg" into "host-pkg"
-host-generic-package = $(call GENTARGETS_INNER,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
+host-generic-package = $(call inner-generic-package,host-$(call pkgname),$(call UPPERCASE,host-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
# :mode=makefile:
--- HOWTO ---
If your package uses config.guess and/or config.sub, then it probably
relies on the autotools as its build system. In this case, you should
-use the AUTOTARGETS infrastructure, which will take care of updating
+use the autotools-package infrastructure, which will take care of updating
the config.guess and/or config.sub files appropriately. See the
-Buildroot documentation for details about the AUTOTARGETS
+Buildroot documentation for details about the autotools-package
infrastructure.
-If for some reason your package does not use the AUTOTARGETS
+If for some reason your package does not use the autotools-package
infrastructure, you can request the config.guess and/or config.sub
files of your package to be updated by using:
<td rowspan=\"2\">Id</td>
<td rowspan=\"2\">Package</td>
<td rowspan=\"2\">Patch count</td>
-<td colspan=\"2\" class=\"centered\">AUTOTARGETS</td>
-<td colspan=\"2\" class=\"centered\">GENTARGETS</td>
-<td colspan=\"2\" class=\"centered\">CMAKETARGETS</td>
+<td colspan=\"2\" class=\"centered\">autotools-package</td>
+<td colspan=\"2\" class=\"centered\">generic-package</td>
+<td colspan=\"2\" class=\"centered\">cmake-package</td>
<td colspan=\"2\" class=\"centered\">manual</td>
<td rowspan=\"2\" class=\"centered\">Actions</td>
</tr>
is_auto_host=1
fi
- if grep -E "\(AUTOTARGETS\)" $i > /dev/null ; then
+ if grep -E "\(autotools-package\)" $i > /dev/null ; then
is_auto_target=1
fi
is_pkg_host=1
fi
- if grep -E "\(GENTARGETS\)" $i > /dev/null ; then
+ if grep -E "\(generic-package\)" $i > /dev/null ; then
is_pkg_target=1
fi
is_cmake_host=1
fi
- if grep -E "\(CMAKETARGETS\)" $i > /dev/null ; then
+ if grep -E "\(cmake-package\)" $i > /dev/null ; then
is_cmake_target=1
fi