COMMON_CONFIGURE_FLAGS=(
    '--prefix=/usr'
    '--sysconfdir=/etc'
    '--localstatedir=/var'
    '--python=/usr/bin/python3'
    '--disable-strip'
    '--enable-lto'
    "--extra-ldflags=${LDFLAGS}"
    "--extra-cflags=${CFLAGS}"
)

# Note: --disable-rbd, we do not maintain Ceph.
# Note: --disable-glusterfs, we do not maintain GlusterFS.
# Note: --disable-selinux, we do not maintain SELinux (yet?).
# Note: --disable-libpmem, not ready to maintain that stack yet (libfabric => pmdk).
# Note: --disable-cfi, not compatible with many features.
# Note: --disable-netmap, not sure how useful it is and it seems difficult to maintain.
# Note: --disable-u2f, we do not maintain libu2f-emu.
# Note: --enable-docs controls the generation of HTML and manpages, we will drop HTML later.
SYSTEM_CONFIGURE_FLAGS=(
    '--smbd=/usr/bin/smbd'
    '--libexecdir=/usr/lib/qemu'
    '--audio-drv-list=pa,sdl,alsa,jack,pipewire'
    '--disable-user'
    '--enable-docs'
    '--enable-gtk'
    '--enable-linux-aio'
    '--enable-seccomp'
    '--enable-spice'
    '--enable-tpm'
    '--enable-modules'
    '--enable-libiscsi'
    '--enable-mpath'
    '--enable-curl'
    '--disable-gcrypt'
    '--enable-nettle'
    '--enable-malloc=jemalloc'
    '--enable-smartcard'
    '--enable-pie'
    '--enable-vhost-user'
    '--enable-libvduse'
    '--disable-cfi'
    '--enable-fuse'
    '--enable-fuse-lseek'
    '--enable-gnutls'
    '--enable-crypto-afalg'
    '--enable-blkio'
    '--enable-sndio'
    '--disable-netmap'
    '--enable-rdma'
    '--disable-rbd'
    '--disable-u2f'
    '--disable-glusterfs'
    '--enable-lzfse'
    '--disable-libpmem'
    '--enable-libdaxctl'
    '--enable-fuse-lseek'
    '--disable-selinux'
)

USER_CONFIGURE_FLAGS=(
    '--disable-system'
    '--enable-attr'
    '--enable-linux-user'
    '--enable-tcg'
    '--disable-bpf'
    '--disable-bsd-user'
    '--disable-capstone'
    '--disable-docs'
    '--disable-fdt'
    '--disable-gcrypt'
    '--disable-glusterfs'
    '--disable-gnutls'
    '--disable-gtk'
    '--disable-install-blobs'
    '--disable-kvm'
    '--disable-libiscsi'
    '--disable-libnfs'
    '--disable-libssh'
    '--disable-linux-io-uring'
    '--disable-nettle'
    '--disable-opengl'
    '--disable-qom-cast-debug'
    '--disable-sdl'
    '--disable-system'
    '--disable-tools'
    '--disable-tpm'
    '--disable-vde'
    '--disable-vhost-crypto'
    '--disable-vhost-kernel'
    '--disable-vhost-net'
    '--disable-vhost-user'
    '--disable-vnc'
    '--disable-werror'
    '--disable-xen'
    '--disable-zstd'
    '--static'
)

mkdir -pv "${SRCDIR}/src.system/build"
pushd "${SRCDIR}/src.system/build"
    abinfo "Configuring system-mode binary build..."
    ../configure \
        "${COMMON_CONFIGURE_FLAGS[@]}" \
        "${SYSTEM_CONFIGURE_FLAGS[@]}"

    abinfo "Building..."
    make

    abinfo "Installing to PKGDIR..."
    make DESTDIR="${PKGDIR}" install

    abinfo "Removing HTML docs..."
    rm -rv "$PKGDIR"/usr/share/doc/qemu

    abinfo "Moving QEMU guest agent out of package..."
    mkdir -pv "$SRCDIR"/guest-agent
    mv -v \
        "$PKGDIR"/usr/bin/qemu-ga \
        "$PKGDIR"/usr/share/man/man8/qemu-ga.8 \
        "$PKGDIR"/usr/share/man/man7/qemu-ga-ref.7 \
        "$SRCDIR"/guest-agent # destination
popd

mkdir -p "${SRCDIR}/src.user/build"
pushd "${SRCDIR}/src.user/build"
    abinfo "Configuring user-mode binary build..."
    ../configure \
        "${COMMON_CONFIGURE_FLAGS[@]}" \
        "${USER_CONFIGURE_FLAGS[@]}"

    abinfo "Building static user emulation tools"
    make

    # Binaries should be installed in split packages
    mkdir -p "$SRCDIR"/staticbin
    cp -v qemu-bundle/usr/bin/qemu-* "$SRCDIR"/staticbin/
popd
