/[gentoo-x86]/eclass/autotools-multilib.eclass
Gentoo

Contents of /eclass/autotools-multilib.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Sat Jan 26 11:38:43 2013 UTC (19 months, 3 weeks ago) by mgorny
Branch: MAIN
Changes since 1.5: +3 -2 lines
Require EAPI=5 to make sure everything works predictably.

1 mgorny 1.3 # Copyright 1999-2013 Gentoo Foundation
2 mgorny 1.1 # Distributed under the terms of the GNU General Public License v2
3 mgorny 1.6 # $Header: /var/cvsroot/gentoo-x86/eclass/autotools-multilib.eclass,v 1.5 2013/01/26 11:35:38 mgorny Exp $
4 mgorny 1.1
5     # @ECLASS: autotools-multilib.eclass
6     # @MAINTAINER:
7     # Michał Górny <mgorny@gentoo.org>
8     # @BLURB: autotools-utils wrapper for multilib builds
9     # @DESCRIPTION:
10     # The autotools-multilib.eclass is an autotools-utils.eclass(5) wrapper
11     # introducing support for building for more than one ABI (multilib).
12     #
13     # Inheriting this eclass sets IUSE=multilib and exports autotools-utils
14     # phase function wrappers which build the package for each supported ABI
15     # if the flag is enabled. Otherwise, it works like regular
16     # autotools-utils.
17     #
18     # Note that the multilib support requires out-of-source builds to be
19     # enabled. Thus, it is impossible to use AUTOTOOLS_IN_SOURCE_BUILD with
20     # it.
21    
22 mgorny 1.6 # EAPI=5 is required for meaningful MULTILIB_USEDEP.
23 mgorny 1.1 case ${EAPI:-0} in
24 mgorny 1.6 5) ;;
25 mgorny 1.1 *) die "EAPI=${EAPI} is not supported" ;;
26     esac
27    
28     if [[ ${AUTOTOOLS_IN_SOURCE_BUILD} ]]; then
29     die "${ECLASS}: multilib support requires out-of-source builds."
30     fi
31    
32 mgorny 1.5 inherit autotools-utils multilib multiprocessing
33 mgorny 1.1
34     EXPORT_FUNCTIONS src_configure src_compile src_test src_install
35    
36     IUSE=multilib
37    
38 mgorny 1.4 # @ECLASS-VARIABLE: MULTILIB_USEDEP
39     # @DESCRIPTION:
40     # The USE-dependency to be used on dependencies (libraries) needing
41     # to support multilib as well.
42     #
43     # Example use:
44     # @CODE
45     # RDEPEND="dev-libs/libfoo[${MULTILIB_USEDEP}]
46     # net-libs/libbar[ssl,${MULTILIB_USEDEP}]"
47     # @CODE
48     MULTILIB_USEDEP=multilib?
49    
50 mgorny 1.1 # @FUNCTION: autotools-multilib_foreach_abi
51     # @USAGE: argv...
52     # @DESCRIPTION:
53     # If multilib support is enabled, sets the toolchain up for each
54 mgorny 1.2 # supported ABI along with the ABI variable and correct BUILD_DIR,
55     # and runs the given commands with them.
56 mgorny 1.1 #
57     # If multilib support is disabled, it just runs the commands. No setup
58     # is done.
59     autotools-multilib_foreach_abi() {
60 mgorny 1.2 local initial_dir=${BUILD_DIR:-${S}}
61    
62 mgorny 1.1 if use multilib; then
63     local ABI
64     for ABI in $(get_all_abis); do
65     multilib_toolchain_setup "${ABI}"
66 mgorny 1.2 BUILD_DIR=${initial_dir%%/}-${ABI} "${@}"
67 mgorny 1.1 done
68     else
69     "${@}"
70     fi
71     }
72    
73 mgorny 1.5 # @FUNCTION: autotools-multilib_parallel_foreach_abi
74     # @USAGE: argv...
75     # @DESCRIPTION:
76     # If multilib support is enabled, sets the toolchain up for each
77     # supported ABI along with the ABI variable and correct BUILD_DIR,
78     # and runs the given commands with them. The commands are run
79     # in parallel with number of jobs being determined from MAKEOPTS.
80     #
81     # If multilib support is disabled, it just runs the commands. No setup
82     # is done.
83     #
84     # Useful for running configure scripts.
85     autotools-multilib_parallel_foreach_abi() {
86     local initial_dir=${BUILD_DIR:-${S}}
87    
88     if use multilib; then
89     multijob_init
90    
91     local ABI
92     for ABI in $(get_all_abis); do
93     (
94     multijob_child_init
95    
96     multilib_toolchain_setup "${ABI}"
97     BUILD_DIR=${initial_dir%%/}-${ABI}
98     "${@}"
99     ) &
100    
101     multijob_post_fork
102     done
103    
104     multijob_finish
105     else
106     "${@}"
107     fi
108     }
109    
110 mgorny 1.1 autotools-multilib_src_configure() {
111 mgorny 1.5 autotools-multilib_parallel_foreach_abi autotools-utils_src_configure
112 mgorny 1.1 }
113    
114     autotools-multilib_src_compile() {
115     autotools-multilib_foreach_abi autotools-utils_src_compile
116     }
117    
118     autotools-multilib_src_test() {
119     autotools-multilib_foreach_abi autotools-utils_src_test
120     }
121    
122     autotools-multilib_src_install() {
123     autotools-multilib_foreach_abi autotools-utils_src_install
124     }

  ViewVC Help
Powered by ViewVC 1.1.20