# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/mozilla.eclass,v 1.33 2007/03/26 20:19:22 genstef Exp $ # # You probably don't want to change this eclass. Newer ebuilds use # mozconfig.eclass instead. IUSE="java gnome gtk2 ldap debug xinerama xprint" # Internal USE flags that I do not really want to advertise ... IUSE="${IUSE} moznoxft" [[ ${PN} == mozilla || ${PN} == mozilla-firefox ]] && \ IUSE="${IUSE} mozdevelop mozxmlterm" [[ ${PN} == mozilla ]] && \ IUSE="${IUSE} mozsvg" RDEPEND=" !moznoxft? ( virtual/xft ) >=media-libs/fontconfig-2.1 >=sys-libs/zlib-1.1.4 >=media-libs/jpeg-6b >=media-libs/libmng-1.0.0 >=media-libs/libpng-1.2.1 dev-libs/expat app-arch/zip app-arch/unzip gtk2? ( >=x11-libs/gtk+-2.2.0 >=dev-libs/glib-2.2.0 >=x11-libs/pango-1.2.1 >=dev-libs/libIDL-0.8.0 gnome? ( >=gnome-base/gnome-vfs-2.3.5 ) ) !gtk2? ( =x11-libs/gtk+-1.2* =dev-libs/glib-1.2* =gnome-base/orbit-0* ) >=www-client/mozilla-launcher-1.22" DEPEND="${RDEPEND} dev-util/pkgconfig" # Set by configure (plus USE_AUTOCONF=1), but useful for NSPR export MOZILLA_CLIENT=1 export BUILD_OPT=1 export NO_STATIC_LIB=1 export USE_PTHREADS=1 mozilla_conf() { declare enable_optimize pango_version myext x declare MOZ=$([[ ${PN} == mozilla ]] && echo true || echo false) declare FF=$([[ ${PN} == *firefox ]] && echo true || echo false) declare TB=$([[ ${PN} == *thunderbird ]] && echo true || echo false) #################################### # # CFLAGS setup and ARCH support # #################################### # Set optimization level based on CFLAGS if is-flag -O0; then mozilla_annotate "from CFLAGS" --enable-optimize=-O0 elif [[ ${ARCH} == hppa ]]; then mozconfig_annotate "more than -O0 causes segfaults on hppa" --enable-optimize=-O0 elif [[ ${ARCH} == alpha || ${ARCH} == amd64 || ${ARCH} == ia64 || ${ARCH} == ppc64 ]]; then mozilla_annotate "more than -O1 causes segfaults on 64-bit (bug 33767)" \ --enable-optimize=-O1 elif is-flag -O1; then mozilla_annotate "from CFLAGS" --enable-optimize=-O1 else mozilla_annotate "mozilla fallback" --enable-optimize=-O2 fi # Now strip optimization from CFLAGS so it doesn't end up in the # compile string filter-flags '-O*' # Strip over-aggressive CFLAGS - Mozilla supplies its own # fine-tuned CFLAGS and shouldn't be interfered with.. Do this # AFTER setting optimization above since strip-flags only allows # -O -O1 and -O2 strip-flags # Additional ARCH support case "${ARCH}" in alpha|amd64|ia64) # Historically we have needed to add this manually for 64-bit append-flags -fPIC ;; ppc64) append-flags -mminimal-toc append-flags -fPIC ;; ppc) # Fix to avoid gcc-3.3.x micompilation issues. if [[ $(gcc-major-version).$(gcc-minor-version) == 3.3 ]]; then append-flags -fno-strict-aliasing fi ;; sparc) # Sparc support ... replace-sparc64-flags ;; x86) if [[ $(gcc-major-version) -eq 3 ]]; then # gcc-3 prior to 3.2.3 doesn't work well for pentium4 # see bug 25332 if [[ $(gcc-minor-version) -lt 2 || ( $(gcc-minor-version) -eq 2 && $(gcc-micro-version) -lt 3 ) ]] then replace-flags -march=pentium4 -march=pentium3 filter-flags -msse2 fi fi ;; esac if [[ $(gcc-major-version) -eq 3 ]]; then # Enable us to use flash, etc plugins compiled with gcc-2.95.3 mozilla_annotate "building with >=gcc-3" --enable-old-abi-compat-wrappers # Needed to build without warnings on gcc-3 CXXFLAGS="${CXXFLAGS} -Wno-deprecated" fi #################################### # # myconf setup # #################################### # myconf should be declared local by the caller (src_compile). myconf="${myconf} \ --disable-activex \ --disable-activex-scripting \ --disable-installer \ --disable-pedantic \ --enable-crypto \ --enable-xterm-updates \ --with-pthreads \ --with-system-jpeg \ --with-system-png \ --with-system-zlib \ --with-x \ --without-system-nspr \ --enable-default-toolkit=gtk2 \ $(mozilla_use_enable ipv6) \ $(mozilla_use_enable xinerama) \ $(mozilla_use_enable xprint) \ $(mozilla_use_enable truetype freetype2) \ $(mozilla_use_enable truetype freetypetest)" # NOTE: QT and XLIB toolkit seems very unstable, leave disabled until # tested ok -- azarah if use gtk2; then mozilla_annotate +gtk2 --enable-default-toolkit=gtk2 myconf="${myconf} $(mozilla_use_enable gnome gnomevfs)" else mozilla_annotate -gtk2 --enable-default-toolkit=gtk mozilla_annotate -gtk2 --disable-gnomevfs fi if use debug; then mozilla_annotate +debug \ --enable-debug \ --enable-tests \ --disable-reorder \ --disable-strip \ --disable-strip-libs \ --enable-debugger-info-modules=ALL_MODULES else mozilla_annotate -debug \ --disable-debug \ --disable-tests \ --enable-reorder \ --enable-strip \ --enable-strip-libs # Currently --enable-elf-dynstr-gc only works for x86 and ppc, # thanks to Jason Wever for the fix. if use x86 || use ppc && [[ ${enable_optimize} != -O0 ]]; then mozilla_annotate "${ARCH} optimized build" --enable-elf-dynstr-gc fi fi # Here is a strange one... if is-flag '-mcpu=ultrasparc*'; then mozilla_annotate "building on ultrasparc" --enable-js-ultrasparc fi # Check if we should enable Xft support... if use moznoxft; then mozilla_annotate "disabling xft2 by request (+moznoxft)" --disable-xft elif use gtk2; then # We need Xft2.0 locally installed if [[ -x /usr/bin/pkg-config ]] && pkg-config xft; then # We also need pango-1.1, else Mozilla links to both # Xft1.1 *and* Xft2.0, and segfault... pango_version=$(pkg-config --modversion pango | cut -d. -f1,2) if [[ ${pango_version//.} -gt 10 ]]; then mozilla_annotate "gtk2 with xft2 (+gtk2 -moznoxft)" --enable-xft else mozilla_annotate "gtk2 without xft2 (bad pango version <1.1)" --disable-xft fi else mozilla_annotate "gtk2 without xft2 (no pkg-config xft)" --disable-xft fi else mozilla_annotate "gtk1 with xft2 (-gtk2 -moznoxft)" --enable-xft fi # Support some development/debugging stuff for web developers if ( ${MOZ} || ${FF} ) && use mozdevelop; then mozilla_annotate "+mozdevelop on ${PN}" \ --enable-jsd \ --enable-xpctools else mozilla_annotate "n/a on ${PN}" \ --disable-jsd \ --disable-xpctools fi # Some browser-only flags if ${MOZ} || ${FF}; then # Bug 60668: Galeon doesn't build without oji enabled, so enable it # regardless of java setting. myconf="${myconf} --enable-oji \ --enable-mathml" else mozilla_annotate "n/a on ${PN}" --disable-oji fi # Some mailer-only flags if ${TB}; then # Set up extensions if [[ ${PV} < 0.8 ]]; then myext="pref,spellcheck,universalchardet,wallet" else myext="wallet,spellcheck,xmlextras,webservices" fi myconf="${myconf} --enable-single-profile \ --enable-necko-protocols=http,file,jar,viewsource,res,data \ --enable-image-decoders=default,-xbm \ $(mozilla_use_enable ldap) \ $(mozilla_use_enable ldap ldap-experimental) \ --enable-extensions=${myext}" mozilla_annotate "n/a on ${PN}" \ --disable-calendar \ --disable-svg \ --disable-necko-disk-cache \ --disable-profilesharing \ --disable-plugins fi # Some firefox-only flags if ${FF}; then # Set up extensions myext="cookie,inspector,negotiateauth,pref,transformiix,universalchardet,webservices,xmlextras,xml-rpc" [[ ${PV} < 1.0 ]] && myext="${myext},typeaheadfind" use mozdevelop && myext="${myext},venkman" use gnome && use gtk2 && myext="${myext},gnomevfs" myconf="${myconf} \ --enable-single-profile \ --enable-extensions=${myext}" mozilla_annotate "n/a on ${PN}" \ --disable-mailnews \ --disable-composer \ --disable-ldap \ --disable-profilesharing fi # Some moz-only flags if ${MOZ}; then # Set up extensions myext="default" use mozdevelop && myext="${myext},venkman" use gnome && myext="${myext},gnomevfs" use moznoirc && myext="${myext},-irc" use mozxmlterm && myext="${myext},xmlterm" myconf="${myconf} \ $(mozilla_use_enable mozcalendar calendar) \ $(mozilla_use_enable ldap) \ $(mozilla_use_enable ldap ldap-experimental) \ --enable-extensions=${myext}" if use moznomail && ! use mozcalendar; then mozilla_annotate "+moznomail -mozcalendar" --disable-mailnews fi if use moznocompose && use moznomail; then mozilla_annotate "+moznocompose +moznomail" --disable-composer fi # Re-enabled per bug 24522 (28 Apr 2004 agriffis) if use mozsvg; then export MOZ_INTERNAL_LIBART_LGPL=1 mozilla_annotate "+mozsvg on ${PN}" \ --enable-svg --enable-svg-renderer-libart else mozilla_annotate "-mozsvg" \ --disable-svg fi fi # Report! echo echo "==========================================================" echo "Building ${PF} with the following configuration" for x in $(echo ${myconf} | sed 's/ /\n/g' | sort); do mozilla_explain "${x}" done echo "==========================================================" echo } # Simulate the silly csh makemake script makemake() { typeset m topdir for m in $(find . -name Makefile.in); do topdir=$(echo "$m" | sed -r 's:[^/]+:..:g') sed -e "s:@srcdir@:.:g" -e "s:@top_srcdir@:${topdir}:g" \ < ${m} > ${m%.in} || die "sed ${m} failed" done } # # The following functions are internal to mozilla.eclass # mozilla_use_enable() { declare flag=$(use_enable "$@") mozilla_annotate "$(useq ${1} && echo +${1} || echo -${1})" "${flag}" echo "${flag}" } mozilla_annotate() { declare reason=${1} x ; shift [[ $# -gt 0 ]] || die "mozilla_annotate missing flags for ${reason}!" mkdir -p ${T}/annotations for x in ${*}; do myconf="${myconf} ${x}" echo "${reason}" > "${T}/annotations/${x%%=*}" done } mozilla_explain() { printf " %-30s %s\n" "${1}" "$(cat "${T}/annotations/${1%%=*}" 2>/dev/null)" }