db82b6fedb
This permits Magenta to build properly on systems where bash is not the default shell and/or is installed in locations other than /bin. Change-Id: Ic95e215c5d28b1a6e653bec53283540868c628f8
117 linhas
2.9 KiB
Bash
Arquivo Executável
117 linhas
2.9 KiB
Bash
Arquivo Executável
#!/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 "-c : cmpctmalloc instead of dlmalloc"
|
|
echo "-M : miniheap instead of dlmalloc"
|
|
echo "-n : a virtio network device"
|
|
echo "-t : a virtio tap network device"
|
|
echo "-d : a virtio display"
|
|
echo "-3 : cortex-m3 based platform"
|
|
echo "-6 : 64bit arm"
|
|
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_NET_TAP=0
|
|
DO_64BIT=0
|
|
DO_CORTEX_M3=0
|
|
DO_DISPLAY=0
|
|
DO_CMPCTMALLOC=0
|
|
DO_MINIHEAP=0
|
|
SMP=1
|
|
MEMSIZE=512
|
|
SUDO=""
|
|
|
|
while getopts abdhm:cMnt36s: FLAG; do
|
|
case $FLAG in
|
|
a) DO_AUDIO=1;;
|
|
b) DO_BLOCK=1;;
|
|
c) DO_CMPCTMALLOC=1;;
|
|
d) DO_DISPLAY=1;;
|
|
M) DO_MINIHEAP=1;;
|
|
n) DO_NET=1;;
|
|
t) DO_NET_TAP=1;;
|
|
3) DO_CORTEX_M3=1;;
|
|
6) DO_64BIT=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-aarch64 -machine virt -cpu cortex-a53"
|
|
PROJECT="qemu-virt-a53-test"
|
|
elif [ $DO_CORTEX_M3 == 1 ]; then
|
|
QEMU="qemu-system-arm -machine lm3s6965evb -cpu cortex-m3"
|
|
PROJECT="lm3s6965evb-test"
|
|
else
|
|
QEMU="qemu-system-arm -machine virt -cpu cortex-a15"
|
|
PROJECT="qemu-virt-a15-test"
|
|
fi
|
|
|
|
ARGS=" -m $MEMSIZE -smp $SMP -kernel build-${PROJECT}/magenta.elf"
|
|
|
|
AUDIO_ARGS=" -soundhw hda"
|
|
BLOCK_ARGS=" -drive if=none,file=blk.bin,id=blk,format=raw -device virtio-blk-device,drive=blk"
|
|
NET_ARGS=" -netdev user,id=vmnic,hostname=qemu -device virtio-net-device,netdev=vmnic"
|
|
NET_TAP_ARGS=" -netdev tap,id=vmnic -device virtio-net-device,netdev=vmnic"
|
|
NO_DISPLAY_ARGS=" -nographic"
|
|
DISPLAY_ARGS=" -device virtio-gpu-device -serial stdio"
|
|
|
|
echo DO_BLOCK = $DO_BLOCK
|
|
echo DO_NET = $DO_NET
|
|
|
|
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_NET_TAP == 1 ]; then
|
|
ARGS+=$NET_TAP_ARGS
|
|
SUDO="sudo "
|
|
fi
|
|
if [ $DO_DISPLAY == 1 ]; then
|
|
ARGS+=$DISPLAY_ARGS
|
|
else
|
|
ARGS+=$NO_DISPLAY_ARGS
|
|
fi
|
|
|
|
MAKE_VARS=""
|
|
|
|
if [ $DO_CMPCTMALLOC == 1 ]; then
|
|
MAKE_VARS=LK_HEAP_IMPLEMENTATION=cmpctmalloc
|
|
elif [ $DO_MINIHEAP == 1 ]; then
|
|
MAKE_VARS=LK_HEAP_IMPLEMENTATION=miniheap
|
|
fi
|
|
|
|
make $MAKE_VARS $PROJECT -j4 &&
|
|
echo $SUDO $QEMU $ARGS $@ &&
|
|
$SUDO $QEMU $ARGS $@
|