Gentoo Development Guide
MULTILIB-BUILD.ECLASS
Section: portage (5)Updated: May 2013
Index Return to Main Contents
NAME
multilib-build.eclass - flags and utility functions for building multilib packagesDESCRIPTION
The multilib-build.eclass exports USE flags and utility functions necessary to build packages for multilib in a clean and uniform manner.Please note that dependency specifications for multilib-capable dependencies shall use the USE dependency string in ${MULTILIB_USEDEP} to properly request multilib enabled.
FUNCTIONS
- multilib_get_enabled_abis
-
Return the ordered list of enabled ABIs if multilib builds
are enabled. The best (most preferred) ABI will come last.
If multilib is disabled, the default ABI will be returned in order to enforce consistent testing with multilib code.
- multilib_foreach_abi <argv>...
-
If multilib support is enabled, sets the toolchain up for each
supported ABI along with the ABI variable and correct BUILD_DIR,
and runs the given commands with them.
If multilib support is disabled, it just runs the commands. No setup is done.
- multilib_parallel_foreach_abi <argv>...
-
If multilib support is enabled, sets the toolchain up for each
supported ABI along with the ABI variable and correct BUILD_DIR,
and runs the given commands with them. The commands are run
in parallel with number of jobs being determined from MAKEOPTS.
If multilib support is disabled, it just runs the commands. No setup is done.
Useful for running configure scripts.
- multilib_for_best_abi <argv>...
- Runs the given command with setup for the 'best' (usually native) ABI.
- multilib_check_headers
-
Check whether the header files are consistent between ABIs.
This function needs to be called after each ABI's installation phase. It obtains the header file checksums and compares them with previous runs (if any). Dies if header files differ.
- multilib_copy_sources
-
Create a single copy of the package sources for each enabled ABI.
The sources are always copied from initial BUILD_DIR (or S if unset) to ABI-specific build directory matching BUILD_DIR used by multilib_foreach_abi().
- multilib_prepare_wrappers [<install-root>]
-
Perform the preparation of all kinds of wrappers for the current ABI.
This function shall be called once per each ABI, after installing
the files to be wrapped.
Takes an optional custom <install-root> from which files will be used. If no root is specified, uses ${ED}.
The files to be wrapped are specified using separate variables, e.g. MULTILIB_WRAPPED_HEADERS. Those variables shall not be changed between the successive calls to multilib_prepare_wrappers and multilib_install_wrappers.
After all wrappers are prepared, multilib_install_wrappers shall be called to commit them to the installation tree.
- multilib_install_wrappers [<install-root>]
-
Install the previously-prepared wrappers. This function shall
be called once, after all wrappers were prepared.
Takes an optional custom <install-root> to which the wrappers will be installed. If no root is specified, uses ${ED}. There is no need to use the same root as when preparing the wrappers.
The files to be wrapped are specified using separate variables, e.g. MULTILIB_WRAPPED_HEADERS. Those variables shall not be changed between the calls to multilib_prepare_wrappers and multilib_install_wrappers.
ECLASS VARIABLES
- MULTILIB_USEDEP
-
The USE-dependency to be used on dependencies (libraries) needing
to support multilib as well.
Example use:
RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}] net-libs/libbar[ssl,${MULTILIB_USEDEP}]" - MULTILIB_WRAPPED_HEADERS
-
A list of headers to wrap for multilib support. The listed headers
will be moved to a non-standard location and replaced with a file
including them conditionally to current ABI.
This variable has to be a bash array. Paths shall be relative to installation root (${ED}), and name regular files. Recursive wrapping is not supported.
Please note that header wrapping is *discouraged*. It is preferred to install all headers in a subdirectory of libdir and use pkg-config to locate the headers. Some C preprocessors will not work with wrapped headers.
Example:
MULTILIB_WRAPPED_HEADERS=( /usr/include/foobar/config.h )
MAINTAINERS
Michał Górny <mgorny@gentoo.org>
REPORTING BUGS
Please report bugs via http://bugs.gentoo.org/FILES
/usr/portage/eclass/multilib-build.eclassSEE ALSO
ebuild(5)http://sources.gentoo.org/eclass/multilib-build.eclass?view=log
Index
This document was created by man2html, using the manual pages.
Time: 03:25:02 GMT, May 24, 2013