summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Alfredsen <loki_val@gentoo.org>2009-04-01 14:16:42 +0000
committerPeter Alfredsen <loki_val@gentoo.org>2009-04-01 14:16:42 +0000
commit5ee7b2f0d3deea2271f6fe9e6812881579a3b7d3 (patch)
treedfb503b8e374630619fdbb92d01b7d684577257c /eclass/poppler.eclass
parentBump to 1.3.10, fixes #262056 (diff)
downloadgentoo-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.eclass198
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"
+}