diff options
author | Peter Alfredsen <loki_val@gentoo.org> | 2009-04-01 14:16:42 +0000 |
---|---|---|
committer | Peter Alfredsen <loki_val@gentoo.org> | 2009-04-01 14:16:42 +0000 |
commit | 5ee7b2f0d3deea2271f6fe9e6812881579a3b7d3 (patch) | |
tree | dfb503b8e374630619fdbb92d01b7d684577257c /eclass/poppler.eclass | |
parent | Bump to 1.3.10, fixes #262056 (diff) | |
download | gentoo-2-5ee7b2f0d3deea2271f6fe9e6812881579a3b7d3.tar.gz gentoo-2-5ee7b2f0d3deea2271f6fe9e6812881579a3b7d3.tar.bz2 gentoo-2-5ee7b2f0d3deea2271f6fe9e6812881579a3b7d3.zip |
Add poppler.eclass.
Diffstat (limited to 'eclass/poppler.eclass')
-rw-r--r-- | eclass/poppler.eclass | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/eclass/poppler.eclass b/eclass/poppler.eclass new file mode 100644 index 000000000000..2cae8f810337 --- /dev/null +++ b/eclass/poppler.eclass @@ -0,0 +1,198 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/eclass/poppler.eclass,v 1.1 2009/04/01 14:16:42 loki_val Exp $ + +# @ECLASS: poppler.eclass +# @MAINTAINER: +# Peter Alfredsen <loki_val@gentoo.org> +# @BLURB: Reduces code duplication in the modularized poppler ebuilds. +# @DESCRIPTION: +# Provides an easy template for making modularized poppler-based ebuilds. + +inherit base multilib + +has 2 ${EAPI} || DEPEND="EAPI-TOO-OLD" + +EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install + +RDEPEND=" + !app-text/poppler + !app-text/poppler-bindings + " +DEPEND=" + dev-util/pkgconfig + " + + +# @ECLASS-VARIABLE: HOMEPAGE +# @DESCRIPTION: +# Default HOMEPAGE +HOMEPAGE="http://poppler.freedesktop.org/" + +# @ECLASS-VARIABLE: SRC_URI +# @DESCRIPTION: +# Default SRC_URI +SRC_URI="http://poppler.freedesktop.org/poppler-${PV}.tar.gz" + +# @ECLASS-VARIABLE: S +# @DESCRIPTION: +# Default working directory +S=${WORKDIR}/poppler-${PV} + +# @ECLASS-VARIABLE: POPPLER_MODULE +# @DESCRIPTION: +# The name of the poppler module. Must be set by the ebuild before inheriting +# the poppler eclass. +POPPLER_MODULE=${POPPLER_MODULE} + +# @ECLASS-VARIABLE: POPPLER_MODULE_S +# @DESCRIPTION: +# The working directory of the poppler module. +POPPLER_MODULE_S=${S}/${POPPLER_MODULE} + +# @FUNCTION: pkg_check_modules_override +# @USAGE: <GROUP> [package1] [package2] +# @DESCRIPTION: +# Will export the appropriate variables to override PKG_CHECK_MODULES autoconf +# macros, with the string " " by default. If packages are specified, they will +# be looked up with pkg-config and the appropriate LIBS and CFLAGS substituted. +# LIBS and CFLAGS can also be specified per-package with the following syntax: +# @CODE +# package=LIBS%CFLAGS +# @CODE +# = and % have no effect unless both are specified. +# Here is an example: +# @CODE +# pkg_check_modules_override GASH "gtk+-2.0=-jule%" gobject-2.0 +# @CODE +# The above example will do: +# @CODE +# export GASH_CFLAGS+=" -jule" +# export GASH_LIBS+=" " +# export GASH_CFLAGS+=" $(pkg-config --cflags gobject-2.0)" +# export GASH_LIBS+=" $(pkg-config --libs gobject-2.0)" +# @CODE +# +# NOTE: If a package is not found, the string " " will be inserted in place of +# <GROUP>_CFLAGS and <GROUP>_LIBS +pkg_check_modules_override() { + local package + local group="${1}" + local packages="${*:2}" + export ${group}_CFLAGS=" " + export ${group}_LIBS=" " + + if [[ ${#@} -lt 1 ]] + then + eerror "${FUNCNAME[0]} requires at least one parameter: GROUP" + eerror "PKG_CHECK_MODULES(GROUP, package1 package2 etc)" + die "${FUNCNAME[0]} requires at least one parameter: GROUP" + fi + + for package in $packages + do + if [[ ${package/=} != ${package} && ${package/\%} != ${package} ]] + then + package_cflag_libs=${package##*=} + export ${group}_CFLAGS+=" ${package_cflag_libs%%\%*}" + export ${group}_LIBS+=" ${package_cflag_libs##*\%}" + else + if pkg-config --exists $package + then + export ${group}_CFLAGS+=" $(pkg-config --cflags $package)" + export ${group}_LIBS+=" $(pkg-config --libs $package)" + else + export ${group}_CFLAGS+=" " + export ${group}_LIBS+=" " + fi + fi + done +} +# @FUNCTION: poppler_src_unpack +# @USAGE: +# @DESCRIPTION: +# Runs unpack ${A} +poppler_src_unpack() { + unpack ${A} +} + +# @FUNCTION: poppler_src_prepare +# @USAGE: +# @DESCRIPTION: +# Runs autopatch from base.eclass. +# Uses sed to replace libpoppler.la references with -lpoppler +poppler_src_prepare() { + base_src_util autopatch + sed -i \ + -e 's#$(top_builddir)/poppler/libpoppler.la#-lpoppler#' \ + $(find . -type f -name 'Makefile.in') || die "Failed to sed proper lib into Makefile.am" +} + +# @FUNCTION: poppler_src_configure +# @USAGE: +# @DESCRIPTION: +# Makes sure we get a uniform Makefile environment by using pkg_check_modules_override to +# fill out some blanks that configure wants filled. Probably not really needed, but +# insures against future breakage. +# Calls econf with some defaults. +poppler_src_configure() { + pkg_check_modules_override CAIRO cairo + pkg_check_modules_override POPPLER_GLIB glib-2.0 + pkg_check_modules_override POPPLER_QT4 QtCore QtGui QtXml + pkg_check_modules_override POPPLER_QT4_TEST QtTest + pkg_check_modules_override ABIWORD libxml-2.0 + pkg_check_modules_override GTK_TEST gtk+-2.0 gdk-pixbuf-2.0 libglade-2.0 gthread-2.0 + pkg_check_modules_override GDK gdk-2.0 + pkg_check_modules_override POPPLER_GLIB glib-2.0 gobject-2.0 + + econf --disable-static \ + --enable-gdk \ + --enable-poppler-qt4 \ + --enable-poppler-glib \ + --enable-poppler-qt \ + --enable-xpdf-headers \ + --enable-libjpeg \ + --enable-libopenjpeg \ + --enable-zlib \ + --enable-splash-output \ + ${POPPLER_CONF} +} + +# @FUNCTION: poppler_src_compile +# @USAGE: +# @DESCRIPTION: +# Removes top_srcdir Makefile to ensure that no accidental recursion happens. The build +# will just die if it tries to go through top_srcdir. +# Runs emake "$@" in POPPLER_MODULE_S +poppler_src_compile() { + rm -f "${S}"/Makefile* &> /dev/null + cd "${POPPLER_MODULE_S}" || die "POPPLER_MODULE_S=${POPPLER_MODULE_S} - cd failed" + einfo "Now in $POPPLER_MODULE_S" + emake "$@" || die "emake failed" +} + +# @FUNCTION: poppler_src_install +# @USAGE: +# @DESCRIPTION: +# Runs emake DESTDIR="${D}" ${@:-install} in POPPLER_MODULE_S +# Removes .la files. +poppler_src_install() { + cd "${POPPLER_MODULE_S}" + emake DESTDIR="${D}" ${@:-install} || die "make install failed" + for pfile in "${POPPLER_PKGCONFIG[@]}" + do + insinto /usr/$(get_libdir)/pkgconfig + if [[ ${pfile/=} != ${pfile} ]] + then + if use ${pfile%=*} + then + pfile=${pfile#*=} + else + pfile=false + fi + fi + [[ ${pfile} != "false" ]] && doins "${S}/${pfile}" + done + + find "${D}" -type f -name '*.la' -exec rm -rf '{}' '+' || die "la removal failed" +} |