aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xboard/qemu/post-image.sh55
1 files changed, 55 insertions, 0 deletions
diff --git a/board/qemu/post-image.sh b/board/qemu/post-image.sh
new file mode 100755
index 0000000000..9a4d216274
--- /dev/null
+++ b/board/qemu/post-image.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+QEMU_BOARD_DIR="$(dirname $0)"
+DEFCONFIG_NAME="$(basename $2)"
+README_FILES="${QEMU_BOARD_DIR}/*/readme.txt"
+START_QEMU_SCRIPT="${BINARIES_DIR}/start-qemu.sh"
+
+if [[ "${DEFCONFIG_NAME}" =~ ^"qemu_*" ]]; then
+ # Not a Qemu defconfig, can't test.
+ exit 0
+fi
+
+# Search for "# qemu_*_defconfig" tag in all readme.txt files.
+# Qemu command line on multilines using back slash are accepted.
+QEMU_CMD_LINE=$(sed -r ':a; /\\$/N; s/\\\n//; s/\t/ /; ta; /# '${DEFCONFIG_NAME}'$/!d; s/#.*//' ${README_FILES})
+
+if [ -z "${QEMU_CMD_LINE}" ]; then
+ # No Qemu cmd line found, can't test.
+ exit 0
+fi
+
+# Replace output/images path by ${IMAGE_DIR} since the script
+# will be in the same directory as the kernel and the rootfs images.
+QEMU_CMD_LINE="${QEMU_CMD_LINE//output\/images/\${IMAGE_DIR\}}"
+
+# Remove -serial stdio if present, keep it as default args
+DEFAULT_ARGS="$(sed -r -e '/-serial stdio/!d; s/.*(-serial stdio).*/\1/' <<<"${QEMU_CMD_LINE}")"
+QEMU_CMD_LINE="${QEMU_CMD_LINE//-serial stdio/}"
+
+# Disable graphical output and redirect serial I/Os to console
+case ${DEFCONFIG_NAME} in
+ (qemu_sh4eb_r2d_defconfig|qemu_sh4_r2d_defconfig)
+ # Special case for SH4
+ SERIAL_ARGS="-serial stdio -display none"
+ ;;
+ (*)
+ SERIAL_ARGS="-nographic"
+ ;;
+esac
+
+cat <<-_EOF_ > "${START_QEMU_SCRIPT}"
+ #!/bin/sh
+ IMAGE_DIR="\${0%/*}/"
+
+ if [ "\${1}" = "serial-only" ]; then
+ EXTRA_ARGS='${SERIAL_ARGS}'
+ else
+ EXTRA_ARGS='${DEFAULT_ARGS}'
+ fi
+
+ export PATH="${HOST_DIR}/bin:\${PATH}"
+ exec ${QEMU_CMD_LINE} \${EXTRA_ARGS}
+_EOF_
+
+chmod +x "${START_QEMU_SCRIPT}"