blob: e7d6cc95644e0579164d66072bb1097e55b78dc0 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2016 The Fuchsia Authors
# Copyright (c) 2008 Travis Geiselbrecht
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT
function HELP {
echo "help:"
echo "-a : add intel hda sound"
echo "-b : a virtio block device"
echo "-n : a virtio network device"
echo "-g : with graphics"
echo "-k : use KVM"
echo "-6 : x86-64"
echo "-m <memory in MB>"
echo "-s <number of cpus>"
echo "-h for help"
echo "all arguments after -- are passed to qemu directly"
exit 1
}
DO_AUDIO=0
DO_BLOCK=0
DO_NET=0
DO_64BIT=0
DO_GRAPHICS=0
DO_KVM=0
MEMSIZE=512
SMP=1
SUDO=""
MAKE_VARS=""
while getopts 6abngkm:s:h FLAG; do
case $FLAG in
a) DO_AUDIO=1;;
b) DO_BLOCK=1;;
n) DO_NET=1;;
6) DO_64BIT=1;;
g) DO_GRAPHICS=1;;
k) DO_KVM=1;;
m) MEMSIZE=$OPTARG;;
s) SMP=$OPTARG;;
h) HELP;;
\?)
echo unrecognized option
HELP
esac
done
shift $((OPTIND-1))
if [ $DO_64BIT == 1 ]; then
QEMU="qemu-system-x86_64"
PROJECT="pc-x86-64-test"
else
QEMU="qemu-system-i386"
PROJECT="pc-x86-test"
fi
AUDIO_ARGS=" -soundhw hda"
BLOCK_ARGS=" -drive if=virtio,file=blk.bin,id=blk,format=raw"
NET_ARGS=" -netdev type=user,hostname=qemu,id=net0 -device virtio-net-pci,netdev=net0"
ARGS=" -m $MEMSIZE -smp $SMP -machine q35 -kernel build-${PROJECT}/zircon.bin"
if [ $DO_AUDIO == 1 ]; then
ARGS+=$AUDIO_ARGS
export QEMU_AUDIO_DRV=none
fi
if [ $DO_BLOCK == 1 ]; then
ARGS+=$BLOCK_ARGS
fi
if [ $DO_NET == 1 ]; then
ARGS+=$NET_ARGS
fi
if [ $DO_GRAPHICS == 0 ]; then
ARGS+=" -nographic"
else
ARGS+=" -serial stdio"
fi
if [ $DO_KVM != 0 ]; then
ARGS+=" -enable-kvm -cpu host"
fi
make $MAKE_VARS $PROJECT -j4 &&
echo $SUDO $QEMU $ARGS $@ &&
$SUDO $QEMU $ARGS $@