BuildSystem: Install meson as part of the toolchain

Debian based distros have meson 0.6x in their repositories. These cause
some obscure error messages when building meson based ports.
This commit is contained in:
Bananymous 2026-01-10 19:12:13 +02:00
parent 78cd054d59
commit 7a49a0d986
1 changed files with 60 additions and 16 deletions

View File

@ -17,6 +17,10 @@ CMAKE_VERSION="cmake-3.26.6-linux-x86_64"
CMAKE_TAR="$CMAKE_VERSION.tar.gz"
CMAKE_URL="https://cmake.org/files/v3.26/$CMAKE_TAR"
MESON_VERSION="meson-1.10.0"
MESON_TAR="$MESON_VERSION.tar.gz"
MESON_URL="https://github.com/mesonbuild/meson/releases/download/1.10.0/$MESON_TAR"
if [[ -z $BANAN_SYSROOT ]]; then
echo "You must set the BANAN_SYSROOT environment variable" >&2
exit 1
@ -68,14 +72,14 @@ enter_clean_build () {
}
build_binutils () {
echo "Building ${BINUTILS_VERSION}"
cd $BANAN_BUILD_DIR/toolchain
if [ ! -d $BINUTILS_VERSION ]; then
if [ ! -f $BINUTILS_TAR ]; then
echo "Downloading ${BINUTILS_TAR}"
wget $BINUTILS_URL
fi
echo "Unpacking ${BINUTILS_TAR}"
tar xf $BINUTILS_TAR
patch -ruN -p1 -d "$BINUTILS_VERSION" < "$BANAN_TOOLCHAIN_DIR/$BINUTILS_VERSION.patch"
fi
@ -83,6 +87,8 @@ build_binutils () {
cd $BANAN_BUILD_DIR/toolchain/$BINUTILS_VERSION
enter_clean_build
echo "Building ${BINUTILS_VERSION}"
../configure \
--target="$BANAN_TOOLCHAIN_TRIPLE" \
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
@ -98,14 +104,14 @@ build_binutils () {
}
build_gcc () {
echo "Building ${GCC_VERSION}"
cd $BANAN_BUILD_DIR/toolchain
if [ ! -d $GCC_VERSION ]; then
if [ ! -f $GCC_TAR ]; then
echo "Downloading ${GCC_TAR}"
wget $GCC_URL
fi
echo "Unpacking ${GCC_TAR}"
tar xf $GCC_TAR
patch -ruN -p1 -d "$GCC_VERSION" < "$BANAN_TOOLCHAIN_DIR/$GCC_VERSION.patch"
fi
@ -113,6 +119,8 @@ build_gcc () {
cd $BANAN_BUILD_DIR/toolchain/$GCC_VERSION
enter_clean_build
echo "Building ${GCC_VERSION}"
../configure \
--target="$BANAN_TOOLCHAIN_TRIPLE" \
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
@ -147,21 +155,22 @@ build_libstdcpp () {
}
build_grub () {
echo "Building ${GRUB_VERSION}"
cd $BANAN_BUILD_DIR/toolchain
if [ ! -f $GRUB_TAR ]; then
wget $GRUB_URL
fi
if [ ! -d $GRUB_VERSION ]; then
if [ ! -f $GRUB_TAR ]; then
echo "Downloading ${GRUB_TAR}"
wget $GRUB_URL
fi
echo "Unpacking ${GRUB_TAR}"
tar xvf $GRUB_TAR
fi
cd $GRUB_VERSION
enter_clean_build
echo "Building ${GRUB_VERSION}"
../configure \
--target="$BANAN_ARCH" \
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
@ -174,20 +183,21 @@ build_grub () {
}
build_cmake() {
echo "Downloading ${CMAKE_VERSION}"
cd $BANAN_BUILD_DIR/toolchain
if [ ! -f $CMAKE_TAR ]; then
wget $CMAKE_URL
fi
if [ ! -d $CMAKE_VERSION ]; then
if [ ! -f $CMAKE_TAR ]; then
echo "Downloading ${CMAKE_TAR}"
wget $CMAKE_URL
fi
echo "Unpacking ${CMAKE_TAR}"
tar xvf $CMAKE_TAR
fi
cd $CMAKE_VERSION
echo "Building ${CMAKE_VERSION}"
mkdir -p $BANAN_TOOLCHAIN_PREFIX/bin
mkdir -p $BANAN_TOOLCHAIN_PREFIX/share
@ -197,6 +207,27 @@ build_cmake() {
cp $BANAN_TOOLCHAIN_DIR/cmake-platform/* $BANAN_TOOLCHAIN_PREFIX/share/cmake-3.26/Modules/Platform/
}
build_meson() {
cd "$BANAN_BUILD_DIR/toolchain"
if [ ! -d $MESON_VERSION ]; then
if [ ! -f $MESON_TAR ]; then
echo "Downloading ${MESON_TAR}"
wget $MESON_URL
fi
echo "Unpacking ${MESON_TAR}"
tar xvf $MESON_TAR
fi
cd $MESON_VERSION
echo "Building ${MESON_VERSION}"
mkdir -p "$BANAN_TOOLCHAIN_PREFIX/bin"
./packaging/create_zipapp.py --outfile "$BANAN_TOOLCHAIN_PREFIX/bin/meson" --interpreter '/usr/bin/env python3'
}
BUILD_BINUTILS=1
if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/$BANAN_TOOLCHAIN_TRIPLE-ld ]]; then
echo "You already seem to have a binutils installed."
@ -241,6 +272,15 @@ if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/cmake ]]; then
fi
fi
BUILD_MESON=1
if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/meson ]]; then
echo "You already seem to have a meson installed."
read -e -p "Do you want to rebuild it [y/N]? " choice
if ! [[ "$choice" == [Yy]* ]]; then
BUILD_MESON=0
fi
fi
# delete everything but toolchain
mkdir -p $BANAN_BUILD_DIR
find $BANAN_BUILD_DIR -mindepth 1 -maxdepth 1 ! -name toolchain -exec rm -r {} +
@ -268,6 +308,10 @@ if (($BUILD_CMAKE)); then
build_cmake
fi
if (($BUILD_MESON)); then
build_meson
fi
if (($BUILD_LIBSTDCPP)); then
# delete sysroot and install libc
rm -r $BANAN_SYSROOT