| # 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 |