forked from Bananymous/banan-os
				
			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