blob: 01e14988463a03c581e1b587d7794cc1a878b372 [file] [log] [blame]
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: meson-multilib.eclass
# @MAINTAINER:
# Author: Matt Turner <mattst88@gentoo.org>
# @AUTHOR:
# Author: Michał Górny <mgorny@gentoo.org>
# Author: Matt Turner <mattst88@gentoo.org>
# @SUPPORTED_EAPIS: 7
# @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'.
if [[ -z ${_MESON_MULTILIB_ECLASS} ]] ; then
_MESON_MULTILIB_ECLASS=1
case ${EAPI:-0} in
7) ;;
*) die "EAPI=${EAPI} is not supported" ;;
esac
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