BuildSystem: Fix bugs in new build system
I had not tested the new build system with clean toolchain build but it seems to work now.
This commit is contained in:
parent
2d0da93ac4
commit
c71ac588b2
|
@ -2,8 +2,4 @@
|
||||||
.idea/
|
.idea/
|
||||||
build/
|
build/
|
||||||
base/
|
base/
|
||||||
*.tar.*
|
|
||||||
toolchain/*/
|
|
||||||
|
|
||||||
!toolchain/local/
|
|
||||||
!base-sysroot.tar.gz
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
|
||||||
|
|
||||||
BOCHS_CONFIG_FILE=bochsrc
|
BOCHS_CONFIG_FILE=bochsrc
|
||||||
COM1_TERMINAL=kitty
|
COM1_TERMINAL=kitty
|
||||||
|
|
|
@ -1,24 +1,20 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [[ -z $BANAN_ARCH ]]; then
|
|
||||||
export BANAN_ARCH=x86_64
|
|
||||||
fi
|
|
||||||
|
|
||||||
export BANAN_SCRIPT_DIR=$(dirname $(realpath $0))
|
export BANAN_SCRIPT_DIR=$(dirname $(realpath $0))
|
||||||
source $BANAN_SCRIPT_DIR/config.sh
|
source $BANAN_SCRIPT_DIR/config.sh
|
||||||
|
|
||||||
make_build_dir () {
|
make_build_dir () {
|
||||||
if ! [[ -d $BANAN_BUILD_DIR ]]; then
|
|
||||||
mkdir -p $BANAN_BUILD_DIR
|
mkdir -p $BANAN_BUILD_DIR
|
||||||
cd $BANAN_BUILD_DIR
|
cd $BANAN_BUILD_DIR
|
||||||
cmake --toolchain=$BANAN_TOOLCHAIN_DIR/Toolchain.txt -G Ninja $BANAN_ROOT_DIR $BANAN_CMAKE_ARGS
|
if ! [[ -f "build.ninja" ]]; then
|
||||||
|
cmake --toolchain=$BANAN_TOOLCHAIN_DIR/Toolchain.txt -G Ninja $BANAN_ROOT_DIR
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
build_target () {
|
build_target () {
|
||||||
make_build_dir
|
make_build_dir
|
||||||
if [[ -z $1 ]]; then
|
if [[ $# -eq 0 ]]; then
|
||||||
echo "No target provided"
|
echo "No target provided"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -27,6 +23,15 @@ build_target () {
|
||||||
}
|
}
|
||||||
|
|
||||||
build_toolchain () {
|
build_toolchain () {
|
||||||
|
if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/$BANAN_TOOLCHAIN_TRIPLE_PREFIX-gcc ]]; then
|
||||||
|
echo "You already seem to have a toolchain."
|
||||||
|
read -e -p "Do you want to rebuild it [y/N]? " choice
|
||||||
|
if ! [[ "$choice" == [Yy]* ]]; then
|
||||||
|
echo "Aborting toolchain rebuild"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
$BANAN_TOOLCHAIN_DIR/build.sh
|
$BANAN_TOOLCHAIN_DIR/build.sh
|
||||||
build_target libc-install
|
build_target libc-install
|
||||||
$BANAN_TOOLCHAIN_DIR/build.sh libstdc++
|
$BANAN_TOOLCHAIN_DIR/build.sh libstdc++
|
||||||
|
@ -51,57 +56,42 @@ run_bochs () {
|
||||||
$BANAN_SCRIPT_DIR/bochs.sh $@
|
$BANAN_SCRIPT_DIR/bochs.sh $@
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$1" == "toolchain" ]]; then
|
|
||||||
if [[ -f $BANAN_TOOLCHAIN_PREFIX/bin/$BANAN_TOOLCHAIN_TRIPLE_PREFIX-gcc ]]; then
|
|
||||||
echo "You already seem to have build toolchain."
|
|
||||||
read -e -p "Do you want to rebuild it [y/N]? " choice
|
|
||||||
if ! [[ "$choice" == [Yy]* ]]; then
|
|
||||||
echo "Aborting toolchain rebuild"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
build_toolchain
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$1" == "image" ]]; then
|
|
||||||
create_image
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$1" == "image-full" ]]; then
|
|
||||||
create_image full
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$(uname)" == "Linux" ]]; then
|
if [[ "$(uname)" == "Linux" ]]; then
|
||||||
QEMU_ACCEL="-accel kvm"
|
QEMU_ACCEL="-accel kvm"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$1" == "qemu" ]]; then
|
if [[ $# -eq 0 ]]; then
|
||||||
|
echo "No argument given"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
toolchain)
|
||||||
|
build_toolchain
|
||||||
|
;;
|
||||||
|
image)
|
||||||
|
create_image
|
||||||
|
;;
|
||||||
|
image-full)
|
||||||
|
create_image full
|
||||||
|
;;
|
||||||
|
qemu)
|
||||||
run_qemu -serial stdio $QEMU_ACCEL
|
run_qemu -serial stdio $QEMU_ACCEL
|
||||||
exit 0
|
;;
|
||||||
fi
|
qemu-nographic)
|
||||||
|
|
||||||
if [[ "$1" == "qemu-nographic" ]]; then
|
|
||||||
run_qemu -nographic $QEMU_ACCEL
|
run_qemu -nographic $QEMU_ACCEL
|
||||||
exit 0
|
;;
|
||||||
fi
|
qemu-debug)
|
||||||
|
|
||||||
if [[ "$1" == "qemu-debug" ]]; then
|
|
||||||
run_qemu -serial stdio -d int -no-reboot
|
run_qemu -serial stdio -d int -no-reboot
|
||||||
exit 0
|
;;
|
||||||
fi
|
bochs)
|
||||||
|
|
||||||
if [[ "$1" == "bochs" ]]; then
|
|
||||||
run_bochs
|
run_bochs
|
||||||
exit 0
|
;;
|
||||||
fi
|
check-fs)
|
||||||
|
|
||||||
if [[ "$1" == "check-fs" ]]; then
|
|
||||||
$BANAN_SCRIPT_DIR/check-fs.sh
|
$BANAN_SCRIPT_DIR/check-fs.sh
|
||||||
exit 0
|
;;
|
||||||
fi
|
*)
|
||||||
|
|
||||||
build_target $1
|
build_target $1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
|
||||||
|
|
||||||
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
|
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
|
||||||
echo "You must set BANAN_DISK_IMAGE_PATH environment variable" >&2
|
echo "You must set BANAN_DISK_IMAGE_PATH environment variable" >&2
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
if [[ -z $BANAN_ROOT_DIR ]]; then
|
if [[ -z $BANAN_ROOT_DIR ]]; then
|
||||||
if [[ -z $BANAN_SCRIPT_DIR ]]; then
|
if ! [[ -z $BANAN_SCRIPT_DIR ]]; then
|
||||||
export BANAN_ROOT_DIR=$BANAN_SCRIPT_DIR/..
|
export BANAN_ROOT_DIR=$BANAN_SCRIPT_DIR/..
|
||||||
else
|
else
|
||||||
echo "You must set the BANAN_ROOT_DIR environment variable" >&2
|
echo "You must set the BANAN_ROOT_DIR environment variable" >&2
|
||||||
|
@ -8,8 +8,7 @@ if [[ -z $BANAN_ROOT_DIR ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $BANAN_ARCH ]]; then
|
if [[ -z $BANAN_ARCH ]]; then
|
||||||
echo "You must set the BANAN_ARCH environment variable" >&2
|
export BANAN_ARCH=x86_64
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export BANAN_TOOLCHAIN_DIR=$BANAN_ROOT_DIR/toolchain
|
export BANAN_TOOLCHAIN_DIR=$BANAN_ROOT_DIR/toolchain
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
|
||||||
|
|
||||||
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
|
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
|
||||||
echo "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
|
echo "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
|
||||||
|
@ -79,18 +78,18 @@ if [[ "$BANAN_UEFI_BOOT" == "1" ]]; then
|
||||||
sudo mkfs.fat $PARTITION1 > /dev/null
|
sudo mkfs.fat $PARTITION1 > /dev/null
|
||||||
sudo mount $PARTITION1 "$MOUNT_DIR"
|
sudo mount $PARTITION1 "$MOUNT_DIR"
|
||||||
sudo mkdir -p "$MOUNT_DIR/EFI/BOOT"
|
sudo mkdir -p "$MOUNT_DIR/EFI/BOOT"
|
||||||
sudo "$BANAN_TOOLCHAIN_PREFIX/bin/grub-mkstandalone" -O "$BANAN_ARCH-efi" -o "$MOUNT_DIR/EFI/BOOT/BOOTX64.EFI" "boot/grub/grub.cfg=$BANAN_TOOLCHAIN_PREFIX/grub-memdisk.cfg"
|
sudo "$BANAN_TOOLCHAIN_PREFIX/bin/grub-mkstandalone" -O "$BANAN_ARCH-efi" -o "$MOUNT_DIR/EFI/BOOT/BOOTX64.EFI" "boot/grub/grub.cfg=$BANAN_TOOLCHAIN_DIR/grub-memdisk.cfg"
|
||||||
sudo umount "$MOUNT_DIR"
|
sudo umount "$MOUNT_DIR"
|
||||||
|
|
||||||
sudo mount $PARTITION2 "$MOUNT_DIR"
|
sudo mount $PARTITION2 "$MOUNT_DIR"
|
||||||
sudo mkdir -p "$MOUNT_DIR/boot/grub"
|
sudo mkdir -p "$MOUNT_DIR/boot/grub"
|
||||||
sudo cp "$BANAN_TOOLCHAIN_PREFIX/grub-uefi.cfg" "$MOUNT_DIR/boot/grub/grub.cfg"
|
sudo cp "$BANAN_TOOLCHAIN_DIR/grub-uefi.cfg" "$MOUNT_DIR/boot/grub/grub.cfg"
|
||||||
sudo umount "$MOUNT_DIR"
|
sudo umount "$MOUNT_DIR"
|
||||||
else
|
else
|
||||||
sudo mount $PARTITION2 "$MOUNT_DIR"
|
sudo mount $PARTITION2 "$MOUNT_DIR"
|
||||||
sudo grub-install --no-floppy --target=i386-pc --modules="normal ext2 multiboot" --boot-directory="$MOUNT_DIR/boot" $LOOP_DEV
|
sudo grub-install --no-floppy --target=i386-pc --modules="normal ext2 multiboot" --boot-directory="$MOUNT_DIR/boot" $LOOP_DEV
|
||||||
sudo mkdir -p "$MOUNT_DIR/boot/grub"
|
sudo mkdir -p "$MOUNT_DIR/boot/grub"
|
||||||
sudo cp "$BANAN_TOOLCHAIN_PREFIX/grub-legacy-boot.cfg" "$MOUNT_DIR/boot/grub/grub.cfg"
|
sudo cp "$BANAN_TOOLCHAIN_DIR/grub-legacy-boot.cfg" "$MOUNT_DIR/boot/grub/grub.cfg"
|
||||||
sudo umount "$MOUNT_DIR"
|
sudo umount "$MOUNT_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
|
||||||
|
|
||||||
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
|
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
|
||||||
echo "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
|
echo "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
*/
|
|
@ -10,6 +10,16 @@ if [[ -z $BANAN_SYSROOT ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -z $BANAN_ROOT_DIR ]]; then
|
||||||
|
echo "You must set the BANAN_ROOT_DIR environment variable" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $BANAN_BUILD_DIR ]]; then
|
||||||
|
echo "You must set the BANAN_BUILD_DIR environment variable" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z $BANAN_TOOLCHAIN_DIR ]]; then
|
if [[ -z $BANAN_TOOLCHAIN_DIR ]]; then
|
||||||
echo "You must set the BANAN_TOOLCHAIN_DIR environment variable" >&2
|
echo "You must set the BANAN_TOOLCHAIN_DIR environment variable" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -30,10 +40,16 @@ if [[ -z $BANAN_ARCH ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
enter_clean_build () {
|
||||||
|
rm -rf build
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
}
|
||||||
|
|
||||||
build_binutils () {
|
build_binutils () {
|
||||||
echo "Building ${BINUTILS_VERSION}"
|
echo "Building ${BINUTILS_VERSION}"
|
||||||
|
|
||||||
cd $BANAN_TOOLCHAIN_DIR
|
cd $BANAN_BUILD_DIR/toolchain
|
||||||
|
|
||||||
if [ ! -f ${BINUTILS_VERSION}.tar.xz ]; then
|
if [ ! -f ${BINUTILS_VERSION}.tar.xz ]; then
|
||||||
wget https://ftp.gnu.org/gnu/binutils/${BINUTILS_VERSION}.tar.xz
|
wget https://ftp.gnu.org/gnu/binutils/${BINUTILS_VERSION}.tar.xz
|
||||||
|
@ -41,13 +57,13 @@ build_binutils () {
|
||||||
|
|
||||||
if [ ! -d $BINUTILS_VERSION ]; then
|
if [ ! -d $BINUTILS_VERSION ]; then
|
||||||
tar xvf ${BINUTILS_VERSION}.tar.xz
|
tar xvf ${BINUTILS_VERSION}.tar.xz
|
||||||
patch -s -p0 < ${BINUTILS_VERSION}.patch
|
patch -s -p0 < $BANAN_TOOLCHAIN_DIR/${BINUTILS_VERSION}.patch
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p build/${BINUTILS_VERSION}/
|
cd $BINUTILS_VERSION
|
||||||
cd build/${BINUTILS_VERSION}/
|
enter_clean_build
|
||||||
|
|
||||||
../../${BINUTILS_VERSION}/configure \
|
../configure \
|
||||||
--target="$BANAN_TOOLCHAIN_TRIPLE_PREFIX" \
|
--target="$BANAN_TOOLCHAIN_TRIPLE_PREFIX" \
|
||||||
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
|
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
|
||||||
--with-sysroot="$BANAN_SYSROOT" \
|
--with-sysroot="$BANAN_SYSROOT" \
|
||||||
|
@ -61,7 +77,7 @@ build_binutils () {
|
||||||
build_gcc () {
|
build_gcc () {
|
||||||
echo "Building ${GCC_VERSION}"
|
echo "Building ${GCC_VERSION}"
|
||||||
|
|
||||||
cd $BANAN_TOOLCHAIN_DIR
|
cd $BANAN_BUILD_DIR/toolchain
|
||||||
|
|
||||||
if [ ! -f ${GCC_VERSION}.tar.xz ]; then
|
if [ ! -f ${GCC_VERSION}.tar.xz ]; then
|
||||||
wget https://ftp.gnu.org/gnu/gcc/${GCC_VERSION}/${GCC_VERSION}.tar.xz
|
wget https://ftp.gnu.org/gnu/gcc/${GCC_VERSION}/${GCC_VERSION}.tar.xz
|
||||||
|
@ -69,13 +85,13 @@ build_gcc () {
|
||||||
|
|
||||||
if [ ! -d $GCC_VERSION ]; then
|
if [ ! -d $GCC_VERSION ]; then
|
||||||
tar xvf ${GCC_VERSION}.tar.xz
|
tar xvf ${GCC_VERSION}.tar.xz
|
||||||
patch -s -p0 < ${GCC_VERSION}.patch
|
patch -s -p0 < $BANAN_TOOLCHAIN_DIR/${GCC_VERSION}.patch
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p build/${GCC_VERSION}/
|
cd ${GCC_VERSION}
|
||||||
cd build/${GCC_VERSION}/
|
enter_clean_build
|
||||||
|
|
||||||
../../${GCC_VERSION}/configure \
|
../configure \
|
||||||
--target="$BANAN_TOOLCHAIN_TRIPLE_PREFIX" \
|
--target="$BANAN_TOOLCHAIN_TRIPLE_PREFIX" \
|
||||||
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
|
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
|
||||||
--with-sysroot="$BANAN_SYSROOT" \
|
--with-sysroot="$BANAN_SYSROOT" \
|
||||||
|
@ -90,7 +106,7 @@ build_gcc () {
|
||||||
build_grub () {
|
build_grub () {
|
||||||
echo "Building ${GRUB_VERSION}"
|
echo "Building ${GRUB_VERSION}"
|
||||||
|
|
||||||
cd $BANAN_TOOLCHAIN_DIR
|
cd $BANAN_BUILD_DIR/toolchain
|
||||||
|
|
||||||
if [ ! -f ${GRUB_VERSION}.tar.xz ]; then
|
if [ ! -f ${GRUB_VERSION}.tar.xz ]; then
|
||||||
wget https://ftp.gnu.org/gnu/grub/${GRUB_VERSION}.tar.xz
|
wget https://ftp.gnu.org/gnu/grub/${GRUB_VERSION}.tar.xz
|
||||||
|
@ -100,10 +116,10 @@ build_grub () {
|
||||||
tar xvf ${GRUB_VERSION}.tar.xz
|
tar xvf ${GRUB_VERSION}.tar.xz
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p build/${GRUB_VERSION}/
|
cd $GRUB_VERSION
|
||||||
cd build/${GRUB_VERSION}/
|
enter_clean_build
|
||||||
|
|
||||||
../../${GRUB_VERSION}/configure \
|
../configure \
|
||||||
--target="$BANAN_ARCH" \
|
--target="$BANAN_ARCH" \
|
||||||
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
|
--prefix="$BANAN_TOOLCHAIN_PREFIX" \
|
||||||
--with-platform="efi" \
|
--with-platform="efi" \
|
||||||
|
@ -114,16 +130,35 @@ build_grub () {
|
||||||
}
|
}
|
||||||
|
|
||||||
build_libstdcpp () {
|
build_libstdcpp () {
|
||||||
cd build/${GCC_VERSION}/
|
if ! [[ -d $BANAN_BUILD_DIR/toolchain/$GCC_VERSION/build ]]; then
|
||||||
|
echo "You have to build gcc first"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $BANAN_BUILD_DIR/toolchain/$GCC_VERSION/build
|
||||||
make -j $(nproc) all-target-libstdc++-v3
|
make -j $(nproc) all-target-libstdc++-v3
|
||||||
make install-target-libstdc++-v3
|
make install-target-libstdc++-v3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if [[ $# -ge 1 ]]; then
|
||||||
if [[ "$1" == "libstdc++" ]]; then
|
if [[ "$1" == "libstdc++" ]]; then
|
||||||
build_libstdcpp
|
build_libstdcpp
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "unrecognized arguments $@"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# NOTE: we have to manually create initial sysroot with libc headers
|
||||||
|
# since cmake cannot be invoked yet
|
||||||
|
echo "Syncing sysroot headers"
|
||||||
|
mkdir -p $BANAN_SYSROOT
|
||||||
|
sudo mkdir -p $BANAN_SYSROOT/usr/include
|
||||||
|
sudo rsync -a $BANAN_ROOT_DIR/libc/include/ $BANAN_SYSROOT/usr/include/
|
||||||
|
|
||||||
|
mkdir -p $BANAN_BUILD_DIR/toolchain
|
||||||
|
|
||||||
build_binutils
|
build_binutils
|
||||||
build_gcc
|
build_gcc
|
||||||
build_grub
|
build_grub
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
*/
|
|
Loading…
Reference in New Issue