| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/bin/sh
- DEFAULT_ARCH="x86_64"
- event() {
- printf "$1... "
- }
- ARCH=${ARCH:-x86_64}
- # Define toolchain and QEMU/GDB settings for per architecture
- event "target architecture"
- echo "$ARCH"
- case "$ARCH" in
- x86_64)
- QEMU_EXECUTABLES="qemu-system-x86_64"
- GDB_EXECUTABLES="gdb x86_64-elf-gdb"
- : "${CROSS_COMPILE:=}"
- ;;
- riscv64)
- QEMU_EXECUTABLES="qemu-system-riscv64"
- GDB_EXECUTABLES="gdb riscv64-unknown-elf-gdb"
- : "${CROSS_COMPILE:=riscv64-unknown-elf-}"
- ;;
- aarch64)
- QEMU_EXECUTABLES="qemu-system-aarch64"
- GDB_EXECUTABLES="gdb aarch64-none-elf-gdb"
- : "${CROSS_COMPILE:=aarch64-none-elf-}"
- ;;
- *)
- echo "Unsupported ARCH: $ARCH"
- exit 1
- ;;
- esac
- if [ "$QEMU" = "" ]; then
- event "checking default qemu"
- QEMU="qemu-system-$DEFAULT_ARCH"
- if $QEMU --version > /dev/null 2>&1; then
- QEMU="qemu-system-\$(ARCH)"
- break
- fi
- else
- event "checking given qemu"
- for item in $QEMU; do
- if $item --version > /dev/null 2>&1; then
- QEMU="$item"
- break
- fi
- done
- QEMU=""
- fi
- if [ "$QEMU" = "" ]; then
- echo "failed"
- exit 1
- fi
- echo "$QEMU"
- check_gdb_arch() {
- local item="$1"
- if $item --init-eval-command 'set arch' \
- --init-eval-command 'q' 2>&1 \
- | grep "$DEFAULT_ARCH" >/dev/null 2>&1; then
- return 0
- else
- return 1
- fi
- }
- if [ "$GDB" = "" ]; then
- event "checking default gdb"
- if check_gdb_arch "$DEFAULT_ARCH-elf-gdb"; then
- GDB="\$(ARCH)-elf-gdb"
- break
- fi
- else
- event 'checking given gdb'
- for item in $GDB; do
- if check_gdb_arch "$GDB"; then
- GDB="$item"
- break
- fi
- done
- GDB=""
- fi
- if [ "$GDB" = "" ]; then
- echo "failed"
- exit 1
- fi
- echo "$GDB"
- event "checking util-linux fdisk"
- if [ "$FDISK" = "" ]; then
- if ! which fdisk > /dev/null 2>&1; then
- echo "no"
- exit 1
- fi
- FDISK=`which fdisk`
- fi
- if ! $FDISK -v 2>&1 | grep util-linux > /dev/null 2>&1 ; then
- echo "no, fdisk is not from util-linux"
- exit 1
- else
- echo "$FDISK"
- fi
- event "checking mkfs tool"
- if ! which mkfs.fat > /dev/null 2>&1; then
- echo "no"
- exit 1
- else
- echo `which mkfs.fat`
- fi
- cp Makefile.src Makefile
- sed -i '' -e "s|##DEFAULT_ARCH##|$DEFAULT_ARCH|" Makefile > /dev/null 2>&1
- sed -i '' -e "s|##GDB##|$GDB|" Makefile > /dev/null 2>&1
- sed -i '' -e "s|##QEMU##|$QEMU|" Makefile > /dev/null 2>&1
- sed -i '' -e "s|##FDISK##|$FDISK|" Makefile > /dev/null 2>&1
- exit 0
|