# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6
inherit fixheadtails
DESCRIPTION="Highly-portable Smalltalk-80 implementation"
HOMEPAGE="http://www.squeak.org/"
SRC_URI="http://squeakvm.org/unix/release/Squeak-${PV}-src.tar.gz"
LICENSE="Apple"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="+X +mmx +threads +iconv +opengl image64 alsa oss pulseaudio nas +v4l fbcon dbus +scratch examples"

RDEPEND="X? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXt )
	media-libs/freetype
	>=x11-libs/cairo-1.8.6
	>=x11-libs/pango-1.20.5
	>=dev-libs/glib-2.20.1:2
	dev-libs/libffi
	sys-apps/util-linux
	iconv? ( virtual/libiconv )
	opengl? ( virtual/opengl )
	v4l? ( >=media-libs/libv4l-0.5.8 )
	alsa? ( media-libs/alsa-lib )
	oss? ( || ( media-libs/alsa-oss  media-sound/oss ) )
	pulseaudio? ( media-sound/pulseaudio )
	nas? ( media-libs/nas )
	dbus? ( sys-apps/dbus )"
DEPEND="dev-util/cmake
${RDEPEND}"

S="${WORKDIR}/Squeak-${PV}-src"

src_prepare() {
	ht_fix_all
	eapply_user
	if ! use examples; then
	    rm -rf unix/vm-display-custom
		rm -rf unix/vm-sound-custom
	fi
}

src_configure() {
	local myconf=""
	if use X; then
		myconf="${myconf} --with-x"
	else
	    myconf="${myconf} --without-x"
	fi
	if use threads; then
		myconf="${myconf} --enable-mpg-pthread"
	else
	    myconf="${myconf} --disable-mpg-pthread"
	fi
	if use iconv; then
		myconf="${myconf} --enable-iconv"
	else
	    myconf="${myconf} --disable-iconv"
	fi

	if use opengl; then
		myconf="${myconf} --with-gl"
	else
	    myconf="${myconf} --without-gl"
	fi

	if use alsa; then
		myconf="${myconf} --with-alsa"
	else
	    myconf="${myconf} --without-alsa"
	fi

	if use oss; then
		myconf="${myconf} --with-oss"
	else
	    myconf="${myconf} --without-oss"
	fi

	if use pulseaudio; then
		myconf="${myconf} --with-pulse"
	else
	    myconf="${myconf} --without-pulse"
	fi

	if use nas; then
		myconf="${myconf} --with-NAS"
	else
	    myconf="${myconf} --without-NAS"
	fi

	if use v4l; then
		myconf="${myconf} --with-CameraPlugin"
	else
	    myconf="${myconf} --without-CameraPlugin"
	fi

	if use fbcon; then
		myconf="${myconf} --with-fbdev"
	else
	    myconf="${myconf} --without-fbdev"
	fi

	if use dbus; then
		myconf="${myconf} --with-DBusPlugin"
	else
	    myconf="${myconf} --without-DBusPlugin"
	fi

	if use scratch; then
		myconf="${myconf} --with-ScratchPlugin"
	else
	    myconf="${myconf} --without-ScratchPlugin"
	fi

	if use X; then
		myconf="${myconf} --with-x"
	else
	    myconf="${myconf} --without-x"
	fi

	if use X; then
		myconf="${myconf} --with-x"
	else
	    myconf="${myconf} --without-x"
	fi

	#use mmx 		&& myconf="${myconf} --enable-mpg-mmx"
	#use threads 	&& myconf="${myconf} --enable-mpg-pthread"
	#use iconv 		|| myconf="${myconf} --disable-iconv"
	#use opengl 		|| myconf="${myconf} --without-gl"
	use image64 	&& myconf="${myconf} --image64"
	#use alsa		|| myconf="${myconf} --without-alsa"
	#use oss			|| myconf="${myconf} --without-OSS"
	#use pulseaudio	|| myconf="${myconf} --without-pulse"
	#use nas			|| myconf="${myconf} --without-NAS"
	#use v4l			|| myconf="${myconf} --without-CameraPlugin"
	#use fbcon		|| myconf="${myconf} --without-fbdev"
	#use dbus		|| myconf="${myconf} --without-DBusPlugin"
	#use scratch		|| myconf="${myconf} --without-ScratchPlugin"

	cd "${S}"
	touch unix/npsqueak/CMakeLists.txt
	mkdir build
	cd build
	../unix/cmake/configure \
		--prefix=/usr \
		--infodir=/usr/share/info \
		--mandir=/usr/share/man \
		--with-ffi=x86-sysv \
		--without-npsqueak \
		--without-quartz \
		--without-Sun \
		--without-MaxOSX \
		--without-WeDoPlugin \
		--with-FT2Plugin \
		--with-SqueakFFIPrims \
		${myconf} || die "configure failed"
}

src_install() {
	dodoc README unix/ChangeLog
	cd "${S}/build"
	emake DESTDIR="${D}" ROOT="${D}" docdir="/usr/share/doc/${PF}" install || die
	exeinto /usr/lib/squeak
	exeinto /usr/lib/ckformat
}