# Template file for 'libreoffice'
pkgname=libreoffice
version=5.1.0.3
revision=2
build_style=gnu-configure
configure_args="--disable-werror"
nopie=yes
nocross=yes
#
# XXX: mit-krb5-devel nasm openjdk vlc hamcrest
#      iwyu ogl-math libgltf telepathy-glib-devel
# Missing, required libraries are downloaded and built internally
#
hostmakedepends="automake libtool pkg-config bison flex gperf icu
 perl-Archive-Zip hyphen openldap sane ucpp unzip zip wget"
makedepends="apr-devel boost-devel cups-devel libcurl-devel
 dbus-glib-devel libjpeg-turbo-devel libpng-devel glu-devel graphite-devel
 gst-plugins-base1-devel gtk+-devel gtk+3-devel harfbuzz-devel icu-devel
 libatomic_ops-devel lcms2-devel librsvg-devel libxml2-devel libxslt-devel
 MesaLib-devel neon-devel nss-devel python3.4-devel libressl-devel libgcrypt-devel
 libgpg-error-devel poppler-devel postgresql-libs-devel redland-devel
 lpsolve-devel unixodbc-devel libXt-devel
 avahi-libs-devel hunspell-devel hyphen-devel libabw-devel libcdr-devel CoinMP-devel
 libcmis-devel libcppunit-devel libe-book-devel libfbclient-devel libfreehand-devel
 libexttextcat-devel liblangtag-devel libldap-devel libmspub-devel libmwaw-devel
 glew-devel glyphy-devel libodfgen-devel liborcus10-devel libpagemaker-devel
 librevenge-devel libvisio-devel libetonyek-devel libwpd-devel libwpg-devel
 libwps-devel mdds0 mythes-devel opencollada-devel vigra-devel"
depends="hyphen openldap sane"
short_desc="Productivity suite, formerly OpenOffice.org"
maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
license="LGPL-3"
homepage="http://www.libreoffice.org/"
_baseurl="http://download.documentfoundation.org/${pkgname}/src/${version%.*}"
distfiles="
 ${_baseurl}/${pkgname}-${version}.tar.xz
 ${_baseurl}/${pkgname}-dictionaries-${version}.tar.xz
 ${_baseurl}/${pkgname}-help-${version}.tar.xz
 ${_baseurl}/${pkgname}-translations-${version}.tar.xz"
checksum="
 b41b03f008dab3439bde31c1918f0477c035eab629166a79eeebb0bb6e8757b3
 718822a5ad5400e1026b18453bc38a118851df43e26255c3769078b444ab7a82
 c2e9dff6a930637ca9b203dc31b7f87b17a03419891201a386e81bfbbdc1b447
 fd0eeee993b8532288b77a43bfda9db6cdf781df3cb43f753ed01b620e760ee3"
skip_extraction="
 ${pkgname}-dictionaries-${version}.tar.xz
 ${pkgname}-help-${version}.tar.xz
 ${pkgname}-translations-${version}.tar.xz"
conflicts="libreoffice-bin>=0"

# Install location: either /usr or e.g. /opt/libreofficeX.Y.Z
_LO_PREFIX=/opt/${pkgname}${version%.*.*}

if [ -z "$CROSS_BUILD" ]; then
	# mariadbclient can't currently be cross compiled
	makedepends+=" libmariadbclient-devel"
	configure_args+=" --with-system-mariadb"
fi

case "$XBPS_TARGET_MACHINE" in
	*-musl)	# use shipped clucene, because CLucene/analysis/cjk/CJKAnalyzer.h
		# is missing in the musl clucene-devel files
		;;
	*)	configure_args+=" --with-system-clucene"
		makedepends+=" clucene-devel"
		;;
esac

post_fetch() {
	local srcdistdir=${XBPS_SRCDISTDIR}/${pkgname}-${version}
	mkdir -p ${wrksrc}/external/tarballs
	ln -sf ${srcdistdir}/${pkgname}-dictionaries-${version}.tar.xz ${wrksrc}/external/tarballs/
	ln -sf ${srcdistdir}/${pkgname}-help-${version}.tar.xz ${wrksrc}/external/tarballs/
	ln -sf ${srcdistdir}/${pkgname}-translations-${version}.tar.xz ${wrksrc}/external/tarballs/
}

pre_configure() {
	sed -e "/gzip -f/d" \
		-e "s|.1.gz|.1|g" \
		-i bin/distro-install-desktop-integration
	sed -e "/distro-install-file-lists/d" -i Makefile.in
	chmod +x bin/unpack-sources
}

do_configure() {
	local incdir="${XBPS_CROSS_BASE}/usr/include"

	# Separate autogen.sh and configure because we need
	# to patch configure for musl support
	NOCONFIGURE=1 ./autogen.sh

	# Add linux-musl* as host OS to lines containing linux-gnu*
	sed -i configure -e 's;linux-gnu\*;linux-gnu*|linux-musl*;g'

	configure_args+=" --prefix=${_LO_PREFIX}"
	configure_args+=" --exec-prefix=${_LO_PREFIX}"
	configure_args+=" --with-vendor='VoidLinux'"
	configure_args+=" --with-help"
	configure_args+=" --with-alloc=system"
	configure_args+=" --without-java"
	configure_args+=" --without-system-dicts"
	configure_args+=" --disable-odk"
	configure_args+=" --enable-python=system"
	configure_args+=" --enable-gtk3"
	configure_args+=" --disable-dependency-tracking"
	configure_args+=" --enable-release-build=yes"
	configure_args+=" --disable-dconf"
	configure_args+=" --with-tls=nss"
	configure_args+=" --with-system-cairo"
	configure_args+=" --with-myspell-dicts"
	configure_args+=" --with-system-zlib"
	configure_args+=" --with-system-jpeg"
	configure_args+=" --with-system-expat"
	configure_args+=" --with-system-icu"
	configure_args+=" --with-system-icu-for-build=yes"
	configure_args+=" --with-system-ucpp"
	configure_args+=" --with-system-opencollada"
	configure_args+=" --with-system-poppler"
	configure_args+=" --with-system-curl"
	configure_args+=" --with-system-boost"
	configure_args+=" --with-system-mdds"
	configure_args+=" --with-system-glew"
	configure_args+=" --with-system-glyphy"
	configure_args+=" --with-system-nss"
	configure_args+=" --with-system-graphite"
	configure_args+=" --with-system-orcus"
	configure_args+=" --with-system-harfbuzz"
	configure_args+=" --with-system-apr"
	configure_args+=" --with-system-neon"
	configure_args+=" --with-system-openssl"
	configure_args+=" --with-system-redland"
	configure_args+=" --with-system-libexttextcat"
	configure_args+=" --with-system-libpng"
	configure_args+=" --with-system-lpsolve"
	configure_args+=" --with-system-coinmp"
	configure_args+=" --with-system-liblangtag"
	configure_args+=" --with-system-lcms2"
	configure_args+=" --with-system-cppunit"
	configure_args+=" --with-system-hunspell"
	configure_args+=" --with-system-libabw"
	configure_args+=" --with-system-libatomic_ops"
	configure_args+=" --with-system-libcdr"
	configure_args+=" --with-system-libcmis"
	configure_args+=" --with-system-libebook"
	configure_args+=" --with-system-libetonyek"
	configure_args+=" --with-system-libfreehand"
	configure_args+=" --with-system-libmspub"
	configure_args+=" --with-system-libmwaw"
	configure_args+=" --with-system-libodfgen"
	configure_args+=" --with-system-libpagemaker"
	configure_args+=" --with-system-librevenge"
	configure_args+=" --with-system-libvisio"
	configure_args+=" --with-system-libwpd"
	configure_args+=" --with-system-libwpg"
	configure_args+=" --with-system-libwps"
	configure_args+=" --with-system-libxml"
	configure_args+=" --with-system-mythes"
	configure_args+=" --with-system-altlinuxhyph"
	configure_args+=" --with-system-odbc"
	configure_args+=" --with-system-openldap"
	configure_args+=" --with-system-openssl"
	configure_args+=" --with-system-postgresql"
	configure_args+=" --with-system-firebird"
	configure_args+=" --with-system-vigra"
	configure_args+=" --with-external-hyph-dir=${XBPS_CROSS_BASE}/usr/share/hyphen"
	configure_args+=" --with-parallelism=${XBPS_MAKEJOBS}"

	# In theory we could use --with-lang=ALL but then
	# building the package then takes ages.
	OPENCOLLADA_CFLAGS="-I${incdir}/opencollada/COLLADABaseUtils -I${incdir}/opencollada/COLLADAFramework -I${incdir}/opencollada/COLLADASaxFrameworkLoader -I${incdir}/opencollada/COLLADAStreamWriter -I${incdir}/opencollada/GeneratedSaxParser" \
	OPENCOLLADA_LIBS="-L${XBPS_CROSS_BASE}/usr/lib -lGeneratedSaxParser -lMathMLSolver -lOpenCOLLADABaseUtils -lOpenCOLLADAFramework -lOpenCOLLADASaxFrameworkLoader -lOpenCOLLADAStreamWriter -lUTF -lbuffer -lftoa" \
	./configure ${configure_args} --with-lang='en-US de es fr it pl pt'
}

do_build() {
	make build
}

do_install() {
	local f
	local INSTDIR=${DESTDIR}${_LO_PREFIX}

	make DESTDIR="${DESTDIR}" PREFIXDIR="${_LO_PREFIX}" distro-pack-install

	if [ "${_LO_PREFIX}" != "/usr" ]; then
		# HACK: for unknow reasons the i686 build ignores --prefix and installs in /usr
		if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then
			# Copy from wrong install path
			mkdir -p ${INSTDIR}/bin
			if [ -d ${DESTDIR}/usr/bin ]; then
				cp -pR ${DESTDIR}/usr/bin/* ${INSTDIR}/bin/
				rm -rf ${DESTDIR}/usr/bin
			fi
			mkdir -p ${INSTDIR}/lib
			if [ -d ${DESTDIR}/usr/lib ]; then
				cp -pR ${DESTDIR}/usr/lib/* ${INSTDIR}/lib/
				rm -rf ${DESTDIR}/usr/lib
			fi
			if [ -d ${DESTDIR}/usr/lib32 ]; then
				cp -pR ${DESTDIR}/usr/lib32/* ${INSTDIR}/lib/
				rm -rf ${DESTDIR}/usr/lib32
			fi
			mkdir -p ${INSTDIR}/share
			if [ -d ${DESTDIR}/usr/lib32 ]; then
				cp -pR ${DESTDIR}/usr/share/* ${INSTDIR}/share/
				rm -rf ${DESTDIR}/usr/share
			fi
		fi

		# This symlink is necessary for the desktop menu entries
		vmkdir usr/bin
		ln -sf ${_LO_PREFIX}/lib/libreoffice/program/soffice \
			${DESTDIR}/usr/bin/libreoffice

		if [ -d ${INSTDIR}/share/icons/hicolor/32x32/apps ]; then
			# Icons
			vmkdir usr/share/pixmaps
			for f in $(find ${INSTDIR}/share/icons/hicolor/32x32/apps -type f); do
				f=${f#${DESTDIR}}
 				ln -sf $f ${DESTDIR}/usr/share/pixmaps/
			done
		fi

		if [ -d ${INSTDIR}/lib/libreoffice/share/xdg ]; then
			# Desktop menu entries
			vmkdir usr/share/applications
			for f in $(find ${INSTDIR}/lib/libreoffice/share/xdg -type f); do
				f=${f#${DESTDIR}}
				ln -sf $f ${DESTDIR}/usr/share/applications/libreoffice-$(basename $f)
			done
		fi

		if [ -d ${INSTDIR}/share/man/man1 ]; then
			# Manual pages
			vmkdir usr/share/man/man1
			for f in $(find ${INSTDIR}/share/man/man1 -type f); do
				f=${f#${DESTDIR}}
 				ln -sf $f ${DESTDIR}/usr/share/man/man1/
			done
		fi
	fi

	mkdir -p ${INSTDIR}/share/appdata
	cp -p sysui/desktop/appstream-appdata/*.xml ${INSTDIR}/share/appdata/

	# Move bash completion to the right place
	vmkdir usr/share/bash-completion/completions
	mv ${DESTDIR}/etc/bash_completion.d/libreoffice.sh \
		${DESTDIR}/usr/share/bash-completion/completions/libreoffice

	# Remove unwanted libreoffice packaging files from the root directory
	rm -f ${DESTDIR}/gid_Module*
}
