mirror of
https://github.com/SerenityOS/serenity
synced 2024-09-06 17:06:31 +00:00
![Daniel Bertalan](/assets/img/avatar_default.png)
This version contains my patch that adds support for the proprietary VideoCore mailbox message for reading the kernel command line, so patches aren't needed anymore.
76 lines
1.9 KiB
Bash
Executable file
76 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# This file will need to be run in bash, for now.
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
# shellcheck source=/dev/null
|
|
. "${DIR}/../Meta/shell_include.sh"
|
|
|
|
exit_if_running_as_root "Do not run BuildQemu.sh as root, parts of your Toolchain directory will become root-owned"
|
|
|
|
echo "$DIR"
|
|
|
|
PREFIX="$DIR/Local/qemu"
|
|
BUILD=$(realpath "$DIR/../Build")
|
|
SYSROOT="$BUILD/Root"
|
|
|
|
# shellcheck source=/dev/null
|
|
source "${DIR}/../Ports/qemu/version.sh"
|
|
|
|
echo PREFIX is "$PREFIX"
|
|
echo SYSROOT is "$SYSROOT"
|
|
|
|
mkdir -p "$DIR/Tarballs"
|
|
|
|
pushd "$DIR/Tarballs"
|
|
if [ ! -e "${QEMU_ARCHIVE}" ]; then
|
|
curl -C - -O "${QEMU_ARCHIVE_URL}"
|
|
else
|
|
echo "Skipped downloading ${QEMU_ARCHIVE}"
|
|
fi
|
|
|
|
if ! sha256sum --status -c <(echo "${QEMU_ARCHIVE_SHA256SUM}" "${QEMU_ARCHIVE}"); then
|
|
echo "qemu sha256 sum mismatching, please run script again."
|
|
rm -f "${QEMU_ARCHIVE}"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -d "qemu-$QEMU_VERSION" ]; then
|
|
rm -rf "qemu-$QEMU_VERSION"
|
|
fi
|
|
|
|
echo "Extracting qemu..."
|
|
tar -xf "${QEMU_ARCHIVE}"
|
|
popd
|
|
|
|
mkdir -p "$PREFIX"
|
|
mkdir -p "$DIR/Build/qemu"
|
|
|
|
NPROC=$(get_number_of_processing_units)
|
|
[ -z "$MAKEJOBS" ] && MAKEJOBS=${NPROC}
|
|
|
|
EXTRA_ARGS=""
|
|
if [[ $(uname) == "Darwin" ]]
|
|
then
|
|
UI_LIB=cocoa
|
|
|
|
# SDL causes a crash on startup: "NSWindow drag regions should only be invalidated on the Main Thread!"
|
|
EXTRA_ARGS="--disable-sdl"
|
|
else
|
|
UI_LIB=gtk
|
|
fi
|
|
|
|
echo Using $UI_LIB based UI
|
|
|
|
pushd "$DIR/Build/qemu"
|
|
"$DIR"/Tarballs/qemu-"${QEMU_VERSION}"/configure --prefix="$PREFIX" \
|
|
--target-list=aarch64-softmmu,x86_64-softmmu,riscv64-softmmu \
|
|
--enable-$UI_LIB \
|
|
--enable-slirp \
|
|
$EXTRA_ARGS || exit 1
|
|
make -j "$MAKEJOBS" || exit 1
|
|
make install || exit 1
|
|
popd
|