summaryrefslogtreecommitdiffstats
path: root/configs/platform-mipsel/rules/host-qemu.make
diff options
context:
space:
mode:
Diffstat (limited to 'configs/platform-mipsel/rules/host-qemu.make')
-rw-r--r--configs/platform-mipsel/rules/host-qemu.make233
1 files changed, 233 insertions, 0 deletions
diff --git a/configs/platform-mipsel/rules/host-qemu.make b/configs/platform-mipsel/rules/host-qemu.make
new file mode 100644
index 0000000..a841f4c
--- /dev/null
+++ b/configs/platform-mipsel/rules/host-qemu.make
@@ -0,0 +1,233 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2012 by Bernhard Walle <bernhard@bwalle.de>
+# (C) 2013 by Michael Olbrich <m.olbrich@pengutronix.de>
+# (C) 2013 by Jan Luebbe <j.luebbe@pengutronix.de>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+HOST_PACKAGES-$(PTXCONF_HOST_QEMU) += host-qemu
+
+#
+# Paths and names
+#
+HOST_QEMU_VERSION := 5.2.0
+HOST_QEMU_MD5 := 179f86928835da857c237b42f4b2df73
+HOST_QEMU := qemu-$(HOST_QEMU_VERSION)
+HOST_QEMU_SUFFIX := tar.xz
+HOST_QEMU_URL := https://download.qemu.org/$(HOST_QEMU).$(HOST_QEMU_SUFFIX)
+HOST_QEMU_SOURCE := $(SRCDIR)/$(HOST_QEMU).$(HOST_QEMU_SUFFIX)
+HOST_QEMU_DIR := $(HOST_BUILDDIR)/$(HOST_QEMU)
+HOST_QEMU_LICENSE := GPL-2.0-only AND GPL-2.0-or-later AND MIT AND BSD-1-Clause AND BSD-2-Clause AND BSD-3-Clause
+HOST_QEMU_BUILD_OOT := YES
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+#
+# autoconf
+#
+
+HOST_QEMU_BROKEN_ICECC := \
+ $(call ptx/sh, gcc -dumpversion | awk -F . '{ if ($$1*100 + $$2 < 409) print "y" }')
+
+ifeq ($(HOST_QEMU_BROKEN_ICECC),y)
+HOST_QEMU_MAKE_ENV := PTXDIST_ICECC=$(PTXDIST_ICERUN)
+endif
+HOST_QEMU_MAKE_OPT := V=$(filter 1,$(PTXDIST_VERBOSE))
+
+HOST_QEMU_TARGETS := $(PTXCONF_ARCH_STRING)
+ifndef PTXCONF_ARCH_X86_64
+ifdef PTXCONF_ARCH_X86
+HOST_QEMU_TARGETS := i386
+endif
+endif
+ifdef PTXCONF_ARCH_ARM64
+HOST_QEMU_TARGETS := aarch64
+endif
+ifdef PTXCONF_ARCH_MIPS
+ifdef PTXCONF_ENDIAN_LITTLE
+HOST_QEMU_TARGETS := mipsel
+endif
+endif
+HOST_QEMU_SYS_TARGETS := $(patsubst %,%-softmmu,$(HOST_QEMU_TARGETS))
+HOST_QEMU_USR_TARGETS := $(patsubst %,%-linux-user,$(HOST_QEMU_TARGETS))
+
+HOST_QEMU_CONF_TOOL := autoconf
+# Note: not realy autoconf:
+# e.g. there is --enable-debug but not --disable-debug
+HOST_QEMU_CONF_OPT := \
+ --prefix=/. \
+ --target-list=" \
+ $(call ptx/ifdef, PTXCONF_HOST_QEMU_SYS,$(HOST_QEMU_SYS_TARGETS),) \
+ $(call ptx/ifdef, PTXCONF_HOST_QEMU_USR,$(HOST_QEMU_USR_TARGETS),) \
+ " \
+ --meson=meson \
+ --ninja=ninja \
+ --disable-sanitizers \
+ --disable-tsan \
+ --disable-werror \
+ --enable-stack-protector \
+ --audio-drv-list= \
+ --block-drv-rw-whitelist= \
+ --block-drv-ro-whitelist= \
+ --enable-trace-backends=nop \
+ --disable-tcg-interpreter \
+ --enable-malloc-trim \
+ --with-coroutine= \
+ --tls-priority=NORMAL \
+ --disable-plugins \
+ --disable-containers \
+ --$(call ptx/endis, PTXCONF_HOST_QEMU_SYS)-system \
+ --disable-user \
+ --$(call ptx/endis, PTXCONF_HOST_QEMU_USR)-linux-user \
+ --disable-bsd-user \
+ --disable-docs \
+ --disable-guest-agent \
+ --disable-guest-agent-msi \
+ --enable-pie \
+ --disable-modules \
+ --disable-module-upgrades \
+ --disable-debug-tcg \
+ --disable-debug-info \
+ --disable-sparse \
+ --disable-safe-stack \
+ --disable-gnutls \
+ --disable-nettle \
+ --disable-gcrypt \
+ --disable-auth-pam \
+ --disable-sdl \
+ --disable-sdl-image \
+ --disable-gtk \
+ --disable-vte \
+ --disable-curses \
+ --enable-iconv \
+ --disable-vnc \
+ --disable-vnc-sasl \
+ --disable-vnc-jpeg \
+ --disable-vnc-png \
+ --disable-cocoa \
+ --enable-virtfs \
+ --disable-virtiofsd \
+ --disable-libudev \
+ --disable-mpath \
+ --disable-xen \
+ --disable-xen-pci-passthrough \
+ --disable-brlapi \
+ --disable-curl \
+ --enable-membarrier \
+ --enable-fdt \
+ --enable-kvm \
+ --disable-hax \
+ --disable-hvf \
+ --disable-whpx \
+ --disable-rdma \
+ --disable-pvrdma \
+ --disable-netmap \
+ --disable-linux-aio \
+ --disable-linux-io-uring \
+ --enable-cap-ng \
+ --enable-attr \
+ --enable-vhost-net \
+ --enable-vhost-vsock \
+ --enable-vhost-scsi \
+ --disable-vhost-crypto \
+ --enable-vhost-kernel \
+ --disable-vhost-user \
+ --disable-vhost-user-blk-server \
+ --disable-vhost-vdpa \
+ --disable-spice \
+ --disable-rbd \
+ --disable-libiscsi \
+ --disable-libnfs \
+ --disable-smartcard \
+ --disable-u2f \
+ --$(call ptx/endis, PTXCONF_HOST_QEMU_SYS)-libusb \
+ --disable-live-block-migration \
+ --disable-usb-redir \
+ --disable-lzo \
+ --disable-snappy \
+ --disable-bzip2 \
+ --disable-lzfse \
+ --disable-zstd \
+ --disable-seccomp \
+ --enable-coroutine-pool \
+ --disable-glusterfs \
+ --disable-tpm \
+ --disable-libssh \
+ --disable-numa \
+ --disable-libxml2 \
+ --disable-tcmalloc \
+ --disable-jemalloc \
+ --enable-replication \
+ --disable-opengl \
+ --disable-virglrenderer \
+ --disable-xfsctl \
+ --disable-qom-cast-debug \
+ --disable-tools \
+ --disable-bochs \
+ --disable-cloop \
+ --disable-dmg \
+ --disable-qcow1 \
+ --disable-vdi \
+ --disable-vvfat \
+ --disable-qed \
+ --disable-parallels \
+ --disable-sheepdog \
+ --disable-crypto-afalg \
+ --disable-capstone \
+ --disable-debug-mutex \
+ --disable-libpmem \
+ --disable-xkbcommon \
+ --disable-rng-none \
+ --disable-libdaxctl \
+ \
+ --disable-fuzzing \
+ --disable-keyring
+
+# Use '=' to delay $(shell ...) calls until this is needed
+QEMU_CROSS_QEMU = $(call ptx/get-alternative, config/qemu, qemu-cross)
+QEMU_CROSS_DL = $(shell ptxd_cross_cc_v | sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')
+QEMU_CROSS_TOOLEXECLIBDIR = $(shell dirname $$(realpath $$(ptxd_cross_cc -print-file-name=libatomic.so 2> /dev/null)))
+QEMU_CROSS_LD_LIBRARY_PATH = $(PTXDIST_SYSROOT_TOOLCHAIN)/lib:$(QEMU_CROSS_TOOLEXECLIBDIR):$(SYSROOT)/$(CROSS_LIB_DIR):$(SYSROOT)/usr/$(CROSS_LIB_DIR)
+
+QEMU_CROSS_QEMU_ENV = \
+ QEMU="$(PTXDIST_SYSROOT_HOST)/bin/qemu-$(HOST_QEMU_TARGETS)" \
+ KERNEL_VERSION="$(KERNEL_VERSION)" \
+ QEMU_LD_PREFIX="$(PTXDIST_SYSROOT_TOOLCHAIN)" \
+ QEMU_LD_LIBRARY_PATH="$(QEMU_CROSS_LD_LIBRARY_PATH)" \
+ LINKER="$(shell readlink -f "$$(ptxd_cross_cc -print-file-name=$$(ptxd_get_dl))")"
+
+$(STATEDIR)/host-qemu.install:
+ @$(call targetinfo)
+ @$(call world/install, HOST_QEMU)
+ifdef PTXCONF_HOST_QEMU_SYS
+# # necessary for qemu to find its ROM files
+ @ln -vsf share/qemu $(HOST_QEMU_PKGDIR)/pc-bios
+endif
+ @$(call touch)
+
+$(STATEDIR)/host-qemu.install.post:
+ @$(call targetinfo)
+ @$(call world/install.post, HOST_QEMU)
+ifdef PTXCONF_HOST_QEMU_USR
+ @$(QEMU_CROSS_QEMU_ENV) ptxd_replace_magic $(QEMU_CROSS_QEMU) > $(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross
+ @chmod +x $(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross
+ @install -d -m 755 $(PTXDIST_SYSROOT_CROSS)/bin/qemu/
+ @sed \
+ -e 's|RTLDLIST=.*|RTLDLIST="$(PTXDIST_SYSROOT_TOOLCHAIN)$(QEMU_CROSS_DL)"|' \
+ -e 's|eval $$add_env|eval $(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross -E "$${add_env// /,}"|' \
+ -e 's|verify_out=`|verify_out=`$(PTXDIST_SYSROOT_CROSS)/bin/qemu-cross |' \
+ -e 's|#! */.*$$|#!$(shell readlink $(PTXDIST_TOPDIR)/bin/bash)|' \
+ $(PTXDIST_SYSROOT_TOOLCHAIN)/usr/bin/ldd > $(PTXDIST_SYSROOT_CROSS)/bin/qemu/ldd
+ @chmod +x $(PTXDIST_SYSROOT_CROSS)/bin/qemu/ldd
+endif
+ @$(call touch)
+
+# vim: syntax=make