summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2018-05-12 12:41:17 -0400
committerMike Gilbert <floppym@gentoo.org>2018-05-24 00:46:53 -0400
commit0fe549260636840b96dfd3b9f55b5bbf7ea1d6a3 (patch)
treeb0f25d3e98c54375ca3680730103d0e73fc37b72 /eclass
parentmeson.eclass: define {fortran,objc,objcpp}_link_args (diff)
downloadgentoo-0fe549260636840b96dfd3b9f55b5bbf7ea1d6a3.tar.gz
gentoo-0fe549260636840b96dfd3b9f55b5bbf7ea1d6a3.tar.bz2
gentoo-0fe549260636840b96dfd3b9f55b5bbf7ea1d6a3.zip
meson.eclass: add _meson_move_flags function
This is used to move flags from CC to CFLAGS, typically during a multilib build.
Diffstat (limited to 'eclass')
-rw-r--r--eclass/meson.eclass31
1 files changed, 31 insertions, 0 deletions
diff --git a/eclass/meson.eclass b/eclass/meson.eclass
index 06e76092a6b9..d15e3ff58795 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}" )