diff options
author | Matt Turner <mattst88@gentoo.org> | 2021-05-22 20:08:40 -0700 |
---|---|---|
committer | Matt Turner <mattst88@gentoo.org> | 2021-06-03 18:14:02 -0700 |
commit | 19243e1fa18faa37ebb25dad91b5637b4ef0113a (patch) | |
tree | aa4ead144a0c07def885615b7a1163014950b9a0 /eclass/meson-multilib.eclass | |
parent | meson.eclass: Run einstalldocs from ${S} (diff) | |
download | gentoo-19243e1fa18faa37ebb25dad91b5637b4ef0113a.tar.gz gentoo-19243e1fa18faa37ebb25dad91b5637b4ef0113a.tar.bz2 gentoo-19243e1fa18faa37ebb25dad91b5637b4ef0113a.zip |
meson-multilib.eclass: Add new eclass
Signed-off-by: Matt Turner <mattst88@gentoo.org>
Diffstat (limited to 'eclass/meson-multilib.eclass')
-rw-r--r-- | eclass/meson-multilib.eclass | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/eclass/meson-multilib.eclass b/eclass/meson-multilib.eclass new file mode 100644 index 000000000000..01e14988463a --- /dev/null +++ b/eclass/meson-multilib.eclass @@ -0,0 +1,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 <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 |