mirror of
https://github.com/flatcar/scripts.git
synced 2026-02-10 02:02:22 +01:00
eclass/meson: Sync with Gentoo
It's from Gentoo commit 3de1dd6e7da09404b32449eed5f19af12d72b9e3. Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
parent
fb50bffa11
commit
3e5ffc356c
@ -1,4 +1,4 @@
|
||||
# Copyright 2017-2025 Gentoo Authors
|
||||
# Copyright 2017-2026 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
# @ECLASS: meson.eclass
|
||||
@ -41,7 +41,8 @@ esac
|
||||
if [[ -z ${_MESON_ECLASS} ]]; then
|
||||
_MESON_ECLASS=1
|
||||
|
||||
inherit flag-o-matic multiprocessing ninja-utils python-utils-r1 toolchain-funcs
|
||||
inherit flag-o-matic multiprocessing ninja-utils python-utils-r1 sysroot toolchain-funcs
|
||||
[[ ${EAPI} != 7 ]] && inherit rust-toolchain
|
||||
|
||||
BDEPEND=">=dev-build/meson-1.2.3
|
||||
${NINJA_DEPEND}
|
||||
@ -75,8 +76,8 @@ BDEPEND=">=dev-build/meson-1.2.3
|
||||
# @VARIABLE: emesonargs
|
||||
# @DEFAULT_UNSET
|
||||
# @DESCRIPTION:
|
||||
# Optional meson arguments as Bash array; this should be defined before
|
||||
# calling meson_src_configure.
|
||||
# Optional meson arguments as Bash array; this should be defined before calling
|
||||
# meson_src_configure, meson_add_machine_file, or meson_add_native_file.
|
||||
|
||||
# @VARIABLE: MYMESONARGS
|
||||
# @DEFAULT_UNSET
|
||||
@ -103,7 +104,7 @@ BDEPEND=">=dev-build/meson-1.2.3
|
||||
# '--unicode-16=𐐷', '--unicode-32=𐤅']
|
||||
#
|
||||
_meson_env_array() {
|
||||
meson-format-array "$@"
|
||||
meson-format-array "$@" || die
|
||||
}
|
||||
|
||||
# @FUNCTION: _meson_get_machine_info
|
||||
@ -149,12 +150,23 @@ _meson_create_cross_file() {
|
||||
_meson_get_machine_info "${CHOST}"
|
||||
|
||||
local fn=${T}/meson.${CHOST}.${ABI}.ini
|
||||
local CFLAGS_ABI=CFLAGS_${ABI:-${DEFAULT_ABI}}
|
||||
|
||||
cat > "${fn}" <<-EOF
|
||||
if has rust-toolchain ${INHERITED}; then
|
||||
local LD_A=( $(tc-getCC) ${LDFLAGS} )
|
||||
local RUSTC=( rustc --target="$(rust_abi)" --codegen=linker="${LD_A[0]}" )
|
||||
LD_A=( "${LD_A[@]:1}" )
|
||||
[[ ${LD_A[@]} ]] && RUSTC+=( "${LD_A[@]/#/--codegen=link-arg=}" )
|
||||
else
|
||||
unset RUSTC
|
||||
fi
|
||||
|
||||
cat > "${fn}" <<-EOF || die "failed to create cross file"
|
||||
[binaries]
|
||||
ar = $(_meson_env_array "$(tc-getAR)")
|
||||
c = $(_meson_env_array "$(tc-getCC)")
|
||||
cpp = $(_meson_env_array "$(tc-getCXX)")
|
||||
exe_wrapper = '$(sysroot_make_run_prefixed)'
|
||||
fortran = $(_meson_env_array "$(tc-getFC)")
|
||||
llvm-config = '$(tc-getPROG LLVM_CONFIG llvm-config)'
|
||||
nm = $(_meson_env_array "$(tc-getNM)")
|
||||
@ -165,6 +177,7 @@ _meson_create_cross_file() {
|
||||
# >=1.3.0.
|
||||
pkgconfig = '$(tc-getPKG_CONFIG)'
|
||||
pkg-config = '$(tc-getPKG_CONFIG)'
|
||||
rust = $(_meson_env_array "${RUSTC[@]@Q}")
|
||||
strip = $(_meson_env_array "$(tc-getSTRIP)")
|
||||
windres = $(_meson_env_array "$(tc-getRC)")
|
||||
|
||||
@ -181,9 +194,10 @@ _meson_create_cross_file() {
|
||||
objcpp_link_args = $(_meson_env_array "${OBJCXXFLAGS} ${LDFLAGS}")
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = true
|
||||
sys_root = '${SYSROOT}'
|
||||
needs_exe_wrapper = $(tc-is-cross-compiler && echo true || echo false)
|
||||
pkg_config_libdir = '${PKG_CONFIG_LIBDIR:-${EPREFIX}/usr/$(get_libdir)/pkgconfig}'
|
||||
bindgen_clang_arguments = $(_meson_env_array "${!CFLAGS_ABI}")
|
||||
sys_root = '${SYSROOT}'
|
||||
|
||||
[host_machine]
|
||||
system = '${system}'
|
||||
@ -205,9 +219,14 @@ _meson_create_native_file() {
|
||||
local system cpu_family cpu
|
||||
_meson_get_machine_info "${CBUILD}"
|
||||
|
||||
local fn=${T}/meson.${CBUILD}.${ABI}.ini
|
||||
local fn=${T}/meson.${CBUILD}.ini
|
||||
|
||||
cat > "${fn}" <<-EOF
|
||||
local LD_A=( $(tc-getBUILD_CC) ${BUILD_LDFLAGS} )
|
||||
local RUSTC=( rustc --codegen=linker="${LD_A[0]}" )
|
||||
LD_A=( "${LD_A[@]:1}" )
|
||||
[[ ${LD_A[@]} ]] && RUSTC+=( "${LD_A[@]/#/--codegen=link-arg=}" )
|
||||
|
||||
cat > "${fn}" <<-EOF || die "failed to create native file"
|
||||
[binaries]
|
||||
ar = $(_meson_env_array "$(tc-getBUILD_AR)")
|
||||
c = $(_meson_env_array "$(tc-getBUILD_CC)")
|
||||
@ -222,6 +241,7 @@ _meson_create_native_file() {
|
||||
# >=1.3.0.
|
||||
pkgconfig = '$(tc-getBUILD_PKG_CONFIG)'
|
||||
pkg-config = '$(tc-getBUILD_PKG_CONFIG)'
|
||||
rust = $(_meson_env_array "${RUSTC[@]@Q}")
|
||||
strip = $(_meson_env_array "$(tc-getBUILD_STRIP)")
|
||||
windres = $(_meson_env_array "$(tc-getBUILD_PROG RC windres)")
|
||||
|
||||
@ -251,6 +271,33 @@ _meson_create_native_file() {
|
||||
echo "${fn}"
|
||||
}
|
||||
|
||||
# @FUNCTION: meson_add_machine_file
|
||||
# @USAGE: <name> < <data>
|
||||
# @DESCRIPTION:
|
||||
# Appends --native-file or --cross-file to emesonargs with the data given via
|
||||
# standard input. Assumes emesonargs has already been defined as an array.
|
||||
meson_add_machine_file() {
|
||||
local file=${T}/meson.${CHOST}.${ABI}.${1}.ini
|
||||
cat > "${file}" || die
|
||||
|
||||
if tc-is-cross-compiler || [[ ${ABI} != "${DEFAULT_ABI}" ]]; then
|
||||
emesonargs+=( --cross-file "${file}" )
|
||||
else
|
||||
emesonargs+=( --native-file "${file}" )
|
||||
fi
|
||||
}
|
||||
|
||||
# @FUNCTION: meson_add_native_file
|
||||
# @USAGE: <name> < <data>
|
||||
# @DESCRIPTION:
|
||||
# Appends --native-file (never --cross-file) to emesonargs with the data given
|
||||
# via standard input. Assumes emesonargs has already been defined as an array.
|
||||
meson_add_native_file() {
|
||||
# Ensure the filename is unique by including the target tuple and ABI.
|
||||
local name=${CHOST}.${ABI}.${1} CHOST=${CBUILD} ABI=${DEFAULT_ABI}
|
||||
meson_add_machine_file "${name}"
|
||||
}
|
||||
|
||||
# @FUNCTION: meson_use
|
||||
# @USAGE: <USE flag> [option name]
|
||||
# @DESCRIPTION:
|
||||
@ -382,7 +429,7 @@ setup_meson_src_configure() {
|
||||
MESONARGS+=( -Dbuildtype="${EMESON_BUILDTYPE}" )
|
||||
fi
|
||||
|
||||
if tc-is-cross-compiler; then
|
||||
if tc-is-cross-compiler || [[ "${ABI}" != "${DEFAULT_ABI}" ]]; then
|
||||
MESONARGS+=( --cross-file "$(_meson_create_cross_file)" )
|
||||
fi
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user