forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
meson-multilib.eclass
131 lines (109 loc) · 3.3 KB
/
meson-multilib.eclass
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: meson-multilib.eclass
# @MAINTAINER:
# Author: Matt Turner <[email protected]>
# @AUTHOR:
# Author: Michał Górny <[email protected]>
# Author: Matt Turner <[email protected]>
# @SUPPORTED_EAPIS: 7 8
# @BLURB: meson wrapper for multilib builds
# @DESCRIPTION:
# The meson-multilib.eclass provides a glue between meson.eclass(5)
# and multilib-minimal.eclass(5), aiming to provide a convenient way
# to build packages using meson for multiple ABIs.
#
# Inheriting this eclass sets IUSE and exports default multilib_src_*()
# sub-phases that call meson phase functions for each ABI enabled.
# The multilib_src_*() functions can be defined in ebuild just like
# in multilib-minimal, yet they ought to call appropriate meson
# phase rather than 'default'.
case ${EAPI} in
7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
if [[ -z ${_MESON_MULTILIB_ECLASS} ]] ; then
_MESON_MULTILIB_ECLASS=1
inherit meson multilib-minimal
EXPORT_FUNCTIONS src_configure src_compile src_test src_install
# @FUNCTION: meson_native_use_bool
# @USAGE: <USE flag> [option name]
# @DESCRIPTION:
# Given a USE flag and a meson project option, output a string like:
#
# -Doption=true
# -Doption=false
#
# if building for the native ABI (multilib_is_native_abi is true). Otherwise,
# output -Doption=false. If the project option is unspecified, it defaults
# to the USE flag.
meson_native_use_bool() {
multilib_native_usex "${1}" "-D${2-${1}}=true" "-D${2-${1}}=false"
}
# @FUNCTION: meson_native_use_feature
# @USAGE: <USE flag> [option name]
# @DESCRIPTION:
# Given a USE flag and a meson project option, output a string like:
#
# -Doption=enabled
# -Doption=disabled
#
# if building for the native ABI (multilib_is_native_abi is true). Otherwise,
# output -Doption=disabled. If the project option is unspecified, it defaults
# to the USE flag.
meson_native_use_feature() {
multilib_native_usex "${1}" "-D${2-${1}}=enabled" "-D${2-${1}}=disabled"
}
# @FUNCTION: meson_native_enabled
# @USAGE: <option name>
# @DESCRIPTION:
# Output -Doption=enabled option if executables are being built
# (multilib_is_native_abi is true). Otherwise, output -Doption=disabled option.
meson_native_enabled() {
if multilib_is_native_abi; then
echo "-D${1}=enabled"
else
echo "-D${1}=disabled"
fi
}
# @FUNCTION: meson_native_true
# @USAGE: <option name>
# @DESCRIPTION:
# Output -Doption=true option if executables are being built
# (multilib_is_native_abi is true). Otherwise, output -Doption=false option.
meson_native_true() {
if multilib_is_native_abi; then
echo "-D${1}=true"
else
echo "-D${1}=false"
fi
}
meson-multilib_src_configure() {
local _meson_args=( "${@}" )
multilib-minimal_src_configure
}
multilib_src_configure() {
meson_src_configure "${_meson_args[@]}"
}
meson-multilib_src_compile() {
local _meson_args=( "${@}" )
multilib-minimal_src_compile
}
multilib_src_compile() {
meson_src_compile "${_meson_args[@]}"
}
meson-multilib_src_test() {
local _meson_args=( "${@}" )
multilib-minimal_src_test
}
multilib_src_test() {
meson_src_test "${_meson_args[@]}"
}
meson-multilib_src_install() {
local _meson_args=( "${@}" )
multilib-minimal_src_install
}
multilib_src_install() {
meson_src_install "${_meson_args[@]}"
}
fi