commit:     0fe549260636840b96dfd3b9f55b5bbf7ea1d6a3
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat May 12 16:41:17 2018 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Thu May 24 04:46:53 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0fe54926

meson.eclass: add _meson_move_flags function

This is used to move flags from CC to CFLAGS, typically during a
multilib build.

 eclass/meson.eclass | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/eclass/meson.eclass b/eclass/meson.eclass
index 06e76092a6b..d15e3ff5879 100644
--- a/eclass/meson.eclass
+++ b/eclass/meson.eclass
@@ -198,6 +198,25 @@ meson_use() {
        usex "$1" "-D${2-$1}=true" "-D${2-$1}=false"
 }
 
+# @FUNCTION: _meson_move_flags
+# @INTERNAL
+# @USAGE: PROG FLAGS
+# @DESCRIPTION:
+# Moves extra arguments from PROG to FLAGS.
+# For example:
+# CC="gcc -m32" -> CC="gcc" CFLAGS="-m32"
+_meson_move_flags() {
+       local prog=${1}
+       local flags=${2}
+       local x=( ${!prog} )
+       if [[ -n ${x[0]} ]]; then
+               export ${prog}=${x[0]}
+       fi
+       if [[ -n ${x[1]} ]]; then
+               export ${flags}="${x[@]:1}${!flags:+ }${!flags}"
+       fi
+}
+
 # @FUNCTION: meson_src_configure
 # @DESCRIPTION:
 # This is the meson_src_configure function.
@@ -214,6 +233,18 @@ meson_src_configure() {
                --wrap-mode nodownload
                )
 
+       # Prevent multilib flags from leaking across ABIs
+       local -x BUILD_CFLAGS=${BUILD_CFLAGS}
+       local -x BUILD_CXXFLAGS=${BUILD_CXXFLAGS}
+
+       # Move multilib flags from CC to CFLAGS
+       local -x CC=$(tc-getCC) CFLAGS=${CFLAGS}
+       _meson_move_flags CC CFLAGS
+
+       # Move multilib flags from CXX to CXXFLAGS
+       local -x CXX=$(tc-getCXX) CXXFLAGS=${CXXFLAGS}
+       _meson_move_flags CXX CXXFLAGS
+
        if tc-is-cross-compiler; then
                _meson_create_cross_file || die "unable to write meson cross 
file"
                mesonargs+=( --cross-file "${T}/meson.${CHOST}" )

Reply via email to