CloverBootloader/Qemu/launch_from_eclipse
jief666 ba18b31cc7 Fix no log generated in Qemu portable.
Allow no argument in launch script.
2021-03-19 10:40:19 +03:00

135 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
SCRIPT_ABS_FILENAME=`LC_ALL=en_US.ISO8859-1 perl -e 'use Cwd "abs_path";print abs_path(shift)' "${BASH_SOURCE[0]}"`
SCRIPT_DIR=`dirname "$SCRIPT_ABS_FILENAME"`
#SCRIPT_DIR="$(pwd)" # copy in terminal to be able to copy and paste command from this file
OSTYPE=`uname -s`
echo $OSTYPE
#env
#echo "$@"
project_dir="$1"
echo project_dir="$project_dir"
executable="$2"
echo executable="$executable"
executable_name=$(basename "$executable")
echo executable_name="$executable_name"
executable_name_without_extension="${executable_name%.*}"
echo executable_name_without_extension="$executable_name_without_extension"
executable_path="$(dirname "$executable")"
echo executable_path="$executable_path"
executable_dirname="${executable_path##*/}"
echo executable_dirname="$executable_dirname"
cd "$SCRIPT_DIR"
if [ "$OSTYPE" = "Linux" ]
then
: # todo
fi
set -x
if [ "$OSTYPE" = "Darwin" ]
then
if pgrep qemu
then
killall qemu-system-x86_64
fi
> ./serial0_qemu_out.log # empty file without erasing it. Useful for editor for refreshing and reloading.
if ! [ -f "$SCRIPT_DIR"/disk_image_gpt.img ]
then
unzip -o "$SCRIPT_DIR"/disk_image_gpt.img.zip
rm -rf "$SCRIPT_DIR"/__MACOSX
fi
hdiutil attach ./disk_image_gpt.img || exit 1
shopt -s nocasematch
if [[ "$executable_name" == "CloverX64"* ]]
then
if [[ "$executable_dirname" == "DWARF" ]]
then
echo ditto "$project_dir"/"$(dirname "$executable")"/../../../../"$executable_name_without_extension".efi /Volumes/QEMU_EFI/EFI/CLOVER/"$executable_name_without_extension".efi
ditto "$project_dir"/"$(dirname "$executable")"/../../../../"$executable_name_without_extension".efi /Volumes/QEMU_EFI/EFI/CLOVER/"$executable_name_without_extension".efi || exit 1
else
echo ditto "$project_dir"/"$executable_path"/"$executable_name_without_extension".efi /Volumes/QEMU_EFI/EFI/CLOVER/"$executable_name_without_extension".efi
ditto "$project_dir"/"$executable_path"/"$executable_name_without_extension".efi /Volumes/QEMU_EFI/EFI/CLOVER/"$executable_name_without_extension".efi || exit 1
fi
else
: # if it's a module, has to be copied in Drivers
fi
shopt -u nocasematch
diskutil eject /Volumes/QEMU_EFI || exit 1
./qemu_portable/qemu-system-x86_64 \
-L qemu_portable \
-m 2048 \
-cpu core2duo \
-bios bios.bin-1.13.0 \
-machine q35 \
-device VGA,vgamem_mb=64,edid=on,xres=1024,yres=768 \
-device ahci,id=ahi \
-drive format=raw,id=hda,file=./disk_image_gpt.img \
-usb \
-device usb-mouse,bus=usb-bus.0,port=2 \
-device usb-kbd,bus=usb-bus.0,port=1 \
-serial file:./serial0_qemu_out.log \
-nic none \
-gdb tcp::9000 &
[[ $? -eq 0 ]] || exit 1
# -cdrom "/JiefLand/3.Infos/3.Infos-Mac/MacOs/11.0.20A5343j Big Sur/BigSurInstall.iso" \
count=1
timeout=60
image_base_str="CloverX64 : Image base = "
getImageBase() {
[ -f ./serial0_qemu_out.log ] || return 1
grep "$image_base_str" ./serial0_qemu_out.log
return $?
}
while [ $count -le $timeout ] && ! getImageBase
do
sleep 1
count=$((count+1))
done
if [ $count -ge $timeout ]
then
echo Cannot find "\"Clover : Image base = \"" in ./serial0_qemu_out.log after $timeout seconds
exit 1
fi
adr="$(grep "$image_base_str" ./serial0_qemu_out.log | awk '{printf "0x%x",$6}')"
echo adr="$adr"
echo ovh.knudsen.jf.launch.vmware.efi.adr="$adr"
exit 0
fi
# Windows ???
#if [ "$OSTYPE" = "FreeBSD" ]
#then
#fi