| # 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.6 2010/01/03 19:10:49 scarabeus 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 libtool |
| |
| 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 |
| userland_GNU? ( >=sys-apps/findutils-4.4.0 ) |
| " |
| |
| |
| # @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_prepare |
| 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" |
| elibtoolize |
| } |
| |
| # @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 POPPLER_GLIB glib-2.0 gobject-2.0 |
| |
| econf --disable-static \ |
| --enable-poppler-qt4 \ |
| --enable-poppler-glib \ |
| --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" |
| } |