2023-09-18 21:40:49 +02:00
|
|
|
# This build helper writes a Meson cross-file, allowing other build styles
|
|
|
|
# to properly drive cross-builds in Meson when appropriate
|
|
|
|
|
2023-10-26 15:18:13 +02:00
|
|
|
# Action is only taken for cross builds
|
|
|
|
[ -z "$CROSS_BUILD" ] && return 0
|
2023-09-18 21:40:49 +02:00
|
|
|
|
2023-10-26 15:18:13 +02:00
|
|
|
# The cross file should only be written once, unless forced
|
|
|
|
[ -e "${XBPS_WRAPPERDIR}/meson/xbps_meson.cross" ] && [ -z "$XBPS_BUILD_FORCEMODE" ] && return 0
|
2023-09-18 21:40:49 +02:00
|
|
|
|
2023-10-26 15:18:13 +02:00
|
|
|
mkdir -p "${XBPS_WRAPPERDIR}/meson"
|
2023-09-18 21:40:49 +02:00
|
|
|
|
2023-10-26 15:18:13 +02:00
|
|
|
_MESON_TARGET_ENDIAN=little
|
|
|
|
# drop the -musl suffix to the target cpu, meson doesn't recognize it
|
|
|
|
_MESON_TARGET_CPU=${XBPS_TARGET_MACHINE/-musl/}
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
|
|
mips|mips-musl|mipshf-musl)
|
|
|
|
_MESON_TARGET_ENDIAN=big
|
|
|
|
_MESON_CPU_FAMILY=mips
|
|
|
|
;;
|
|
|
|
armv*)
|
|
|
|
_MESON_CPU_FAMILY=arm
|
|
|
|
;;
|
|
|
|
i686*)
|
|
|
|
_MESON_CPU_FAMILY=x86
|
|
|
|
;;
|
|
|
|
ppc64le*)
|
|
|
|
_MESON_CPU_FAMILY=ppc64
|
|
|
|
;;
|
|
|
|
ppc64*)
|
|
|
|
_MESON_TARGET_ENDIAN=big
|
|
|
|
_MESON_CPU_FAMILY=ppc64
|
|
|
|
;;
|
|
|
|
ppcle*)
|
|
|
|
_MESON_CPU_FAMILY=ppc
|
|
|
|
;;
|
|
|
|
ppc*)
|
|
|
|
_MESON_TARGET_ENDIAN=big
|
|
|
|
_MESON_CPU_FAMILY=ppc
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# if we reached here that means that the cpu and cpu_family
|
|
|
|
# are the same like 'x86_64' and 'aarch64'
|
|
|
|
_MESON_CPU_FAMILY=${_MESON_TARGET_CPU}
|
|
|
|
;;
|
|
|
|
esac
|
2023-09-18 21:40:49 +02:00
|
|
|
|
2023-10-26 15:18:13 +02:00
|
|
|
# Tell meson to run binaries with qemu if desired
|
|
|
|
_MESON_EXE_WRAPPER=""
|
|
|
|
if [[ "${build_helper}" = *qemu* ]]; then
|
|
|
|
_MESON_EXE_WRAPPER="exe_wrapper = '/usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static'"
|
2023-09-18 21:40:49 +02:00
|
|
|
fi
|
2023-10-26 15:18:13 +02:00
|
|
|
|
|
|
|
# Record cross-compiling information in cross file.
|
|
|
|
#
|
|
|
|
# CFLAGS, CXXFLAGS and LDFLAGS are not yet available and
|
|
|
|
# will be taken from the environment at configure time.
|
|
|
|
cat > "${XBPS_WRAPPERDIR}/meson/xbps_meson.cross" <<-EOF
|
|
|
|
[binaries]
|
|
|
|
${_MESON_EXE_WRAPPER:-# exe_wrapper is not set}
|
|
|
|
c = '${CC}'
|
|
|
|
cpp = '${CXX}'
|
|
|
|
ar = '${XBPS_CROSS_TRIPLET}-gcc-ar'
|
|
|
|
nm = '${NM}'
|
|
|
|
strip = '${STRIP}'
|
|
|
|
readelf = '${READELF}'
|
|
|
|
objcopy = '${OBJCOPY}'
|
|
|
|
pkgconfig = '${PKG_CONFIG}'
|
|
|
|
rust = ['rustc', '--target', '${RUST_TARGET}' ,'--sysroot', '${XBPS_CROSS_BASE}/usr']
|
|
|
|
g-ir-scanner = '${XBPS_CROSS_BASE}/usr/bin/g-ir-scanner'
|
|
|
|
g-ir-compiler = '${XBPS_CROSS_BASE}/usr/bin/g-ir-compiler'
|
|
|
|
g-ir-generate = '${XBPS_CROSS_BASE}/usr/bin/g-ir-generate'
|
|
|
|
llvm-config = '/usr/bin/llvm-config'
|
|
|
|
cups-config = '${XBPS_CROSS_BASE}/usr/bin/cups-config'
|
|
|
|
|
|
|
|
[properties]
|
|
|
|
needs_exe_wrapper = true
|
2023-12-01 02:08:32 +01:00
|
|
|
bindgen_clang_arguments = ['-target', '${XBPS_CROSS_TRIPLET}']
|
2023-10-26 15:18:13 +02:00
|
|
|
|
|
|
|
[host_machine]
|
|
|
|
system = 'linux'
|
|
|
|
cpu_family = '${_MESON_CPU_FAMILY}'
|
|
|
|
cpu = '${_MESON_TARGET_CPU}'
|
|
|
|
endian = '${_MESON_TARGET_ENDIAN}'
|
|
|
|
EOF
|
|
|
|
|
|
|
|
unset _MESON_CPU_FAMILY _MESON_TARGET_CPU _MESON_TARGET_ENDIAN _MESON_EXE_WRAPPER
|