56 lines
1.4 KiB
Bash
Executable File
56 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Script to build picolibc for i686 freestanding environment
|
|
|
|
set -e
|
|
|
|
PICOLIBC_DIR="picolibc"
|
|
BUILD_DIR="build/picolibc"
|
|
INSTALL_DIR="$(pwd)/picolibc-install"
|
|
|
|
echo "=== Building Picolibc for i686 freestanding ==="
|
|
|
|
# Check if picolibc exists
|
|
if [ ! -d "$PICOLIBC_DIR" ]; then
|
|
echo "Error: Picolibc source not found at $PICOLIBC_DIR"
|
|
echo "Cloning..."
|
|
git clone --branch 1.8.10 https://github.com/picolibc/picolibc.git "$PICOLIBC_DIR"
|
|
fi
|
|
|
|
# Get current version
|
|
cd "$PICOLIBC_DIR"
|
|
CURRENT_VERSION=$(git describe --tags 2>/dev/null || echo "unknown")
|
|
echo "Using picolibc version: $CURRENT_VERSION"
|
|
cd ..
|
|
|
|
# Create build directory
|
|
mkdir -p "$BUILD_DIR"
|
|
|
|
echo "Configuring picolibc with meson..."
|
|
meson setup "$BUILD_DIR" "$PICOLIBC_DIR" \
|
|
--cross-file picolibc-i686.txt \
|
|
--prefix="$INSTALL_DIR" \
|
|
--wipe \
|
|
-Dmultilib=false \
|
|
-Dpicocrt=false \
|
|
-Dsemihost=false \
|
|
-Dspecsdir=none \
|
|
-Dtinystdio=true \
|
|
-Dio-long-long=true \
|
|
-Dformat-default=double \
|
|
-Dtests=false
|
|
|
|
echo "Building picolibc..."
|
|
meson compile -C "$BUILD_DIR"
|
|
|
|
echo "Installing picolibc..."
|
|
meson install -C "$BUILD_DIR"
|
|
|
|
echo ""
|
|
echo "=== Picolibc build complete! ==="
|
|
echo "Installation directory: $INSTALL_DIR"
|
|
echo ""
|
|
echo "To use picolibc in your kernel:"
|
|
echo " Include path: -I$INSTALL_DIR/include"
|
|
echo " Library path: -L$INSTALL_DIR/lib"
|
|
echo " Link with: -lc"
|