configure 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/sh
  2. DEFAULT_ARCH="x86_64"
  3. event() {
  4. printf "$1... "
  5. }
  6. ARCH=${ARCH:-x86_64}
  7. # Define toolchain and QEMU/GDB settings for per architecture
  8. event "target architecture"
  9. echo "$ARCH"
  10. case "$ARCH" in
  11. x86_64)
  12. QEMU_EXECUTABLES="qemu-system-x86_64"
  13. GDB_EXECUTABLES="gdb x86_64-elf-gdb"
  14. : "${CROSS_COMPILE:=}"
  15. ;;
  16. riscv64)
  17. QEMU_EXECUTABLES="qemu-system-riscv64"
  18. GDB_EXECUTABLES="gdb riscv64-unknown-elf-gdb"
  19. : "${CROSS_COMPILE:=riscv64-unknown-elf-}"
  20. ;;
  21. aarch64)
  22. QEMU_EXECUTABLES="qemu-system-aarch64"
  23. GDB_EXECUTABLES="gdb aarch64-none-elf-gdb"
  24. : "${CROSS_COMPILE:=aarch64-none-elf-}"
  25. ;;
  26. *)
  27. echo "Unsupported ARCH: $ARCH"
  28. exit 1
  29. ;;
  30. esac
  31. if [ "$QEMU" = "" ]; then
  32. event "checking default qemu"
  33. QEMU="qemu-system-$DEFAULT_ARCH"
  34. if $QEMU --version > /dev/null 2>&1; then
  35. QEMU="qemu-system-\$(ARCH)"
  36. break
  37. fi
  38. else
  39. event "checking given qemu"
  40. for item in $QEMU; do
  41. if $item --version > /dev/null 2>&1; then
  42. QEMU="$item"
  43. break
  44. fi
  45. done
  46. QEMU=""
  47. fi
  48. if [ "$QEMU" = "" ]; then
  49. echo "failed"
  50. exit 1
  51. fi
  52. echo "$QEMU"
  53. check_gdb_arch() {
  54. local item="$1"
  55. if $item --init-eval-command 'set arch' \
  56. --init-eval-command 'q' 2>&1 \
  57. | grep "$DEFAULT_ARCH" >/dev/null 2>&1; then
  58. return 0
  59. else
  60. return 1
  61. fi
  62. }
  63. if [ "$GDB" = "" ]; then
  64. event "checking default gdb"
  65. if check_gdb_arch "$DEFAULT_ARCH-elf-gdb"; then
  66. GDB="\$(ARCH)-elf-gdb"
  67. break
  68. fi
  69. else
  70. event 'checking given gdb'
  71. for item in $GDB; do
  72. if check_gdb_arch "$GDB"; then
  73. GDB="$item"
  74. break
  75. fi
  76. done
  77. GDB=""
  78. fi
  79. if [ "$GDB" = "" ]; then
  80. echo "failed"
  81. exit 1
  82. fi
  83. echo "$GDB"
  84. event "checking util-linux fdisk"
  85. if [ "$FDISK" = "" ]; then
  86. if ! which fdisk > /dev/null 2>&1; then
  87. echo "no"
  88. exit 1
  89. fi
  90. FDISK=`which fdisk`
  91. fi
  92. if ! $FDISK -v 2>&1 | grep util-linux > /dev/null 2>&1 ; then
  93. echo "no, fdisk is not from util-linux"
  94. exit 1
  95. else
  96. echo "$FDISK"
  97. fi
  98. event "checking mkfs tool"
  99. if ! which mkfs.fat > /dev/null 2>&1; then
  100. echo "no"
  101. exit 1
  102. else
  103. echo `which mkfs.fat`
  104. fi
  105. cp Makefile.src Makefile
  106. sed -i '' -e "s|##DEFAULT_ARCH##|$DEFAULT_ARCH|" Makefile > /dev/null 2>&1
  107. sed -i '' -e "s|##GDB##|$GDB|" Makefile > /dev/null 2>&1
  108. sed -i '' -e "s|##QEMU##|$QEMU|" Makefile > /dev/null 2>&1
  109. sed -i '' -e "s|##FDISK##|$FDISK|" Makefile > /dev/null 2>&1
  110. exit 0