# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # @ECLASS: mozilla-config.eclass # @MAINTAINER: # Sardem FF7 # @BLURB: This eclass provides Mozilla config support inherit flag-o-matic ## ## Base common stuff ## RDEPEND=" virtual/jpeg dev-libs/expat app-arch/unzip >=x11-libs/gtk+-2.8.6 >=dev-libs/glib-2.26 >=x11-libs/pango-1.10.1 >=dev-libs/libIDL-0.8.0 >=dev-libs/libevent-1.4.7 !=sys-devel/binutils-2.16.1 >=dev-libs/nss-3.12.9 >=app-text/hunspell-1.2 >=x11-libs/cairo-1.10.2[X] x11-libs/pixman x11-libs/pango[X] media-libs/libpng[apng] alsa? ( media-libs/alsa-lib ) dbus? ( >=dev-libs/dbus-glib-0.72 ) libnotify? ( >=x11-libs/libnotify-0.4 ) startup-notification? ( >=x11-libs/startup-notification-0.8 ) system-sqlite? ( >=dev-db/sqlite-3.7.4[fts3,secure-delete,unlock-notify] ) webm? ( media-libs/libvpx ) wifi? ( net-wireless/wireless-tools ) " DEPEND="${RDEPEND} webm? ( dev-lang/yasm ) " IUSE="+alsa custom-optimization dbus +ipc libnotify mozdom raw startup-notification +system-sqlite +webm wifi" # 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 mozconfig_annotate() { declare reason=$1 x ; shift [[ $# -gt 0 ]] || die "mozconfig_annotate missing flags for ${reason}\!" for x in ${*}; do echo "ac_add_options ${x} # ${reason}" >>.mozconfig done } mozconfig_flag() { mozconfig_annotate "USE-flag: $(useq $1 && echo +$1 || echo -$1)" "$2" } mozconfig_use_enable() { mozconfig_flag "$1" "$(use_enable "$@")" } mozconfig_use_with() { mozconfig_flag "$1" "$(use_with "$@")" } ## ## mozconfig_configure ## function mozconfig_configure { #################################### # # Setup the initial .mozconfig # See https://developer.mozilla.org/en/Configuring_Build_Options # #################################### cp ${MOZ_APPLICATION}/config/mozconfig .mozconfig \ || die "cp mozconfig failed" #################################### # # CFLAGS setup and ARCH support # #################################### # Set optimization level if [[ ${ARCH} == x86 ]]; then mozconfig_annotate "less then -O2 causes a segfault on x86" --enable-optimize=-O2 elif use custom-optimization; then # Set optimization level based on CFLAGS if is-flag -O0; then mozconfig_annotate 'CFLAGS optimization' --enable-optimize=-O0 elif is-flag -O1; then mozconfig_annotate 'CFLAGS optimization' --enable-optimize=-O1 elif is-flag -Os; then mozconfig_annotate 'CFLAGS optimization' --enable-optimize=-Os else mozconfig_annotate 'Default optimization: Gentoo' --enable-optimize=-O2 fi else # Enable Mozilla's default mozconfig_annotate 'Default optimization: Mozilla' --enable-optimize 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 if [[ $(gcc-major-version) -eq 3 ]]; then # Enable us to use flash, etc plugins compiled with gcc-2.95.3 mozconfig_annotate "building with >=gcc-3" --enable-old-abi-compat-wrappers # Needed to build without warnings on gcc-3 CXXFLAGS="${CXXFLAGS} -Wno-deprecated" if [[ "${ARCH}" == x86 && ( $(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 elif [[ $(gcc-major-version) -lt 4 ]]; then append-flags -fno-stack-protector fi # Go a little faster; use less RAM append-flags "$MAKEEDIT_FLAGS" #################################### # # mozconfig setup # #################################### mozconfig_annotate 'Gentoo system' \ --disable-installer \ --disable-pedantic \ --with-system-png \ --with-system-jpeg \ --with-system-bz2 \ --with-system-zlib \ --disable-updater \ --enable-system-cairo \ --enable-system-hunspell \ --disable-strip \ --enable-default-toolkit=cairo-gtk2 \ --disable-strip-libs \ --disable-install-strip \ --with-system-nspr \ --with-nspr-prefix="${EPREFIX}"/usr \ --with-system-nss \ --with-nss-prefix="${EPREFIX}"/usr \ --with-system-libevent="${EPREFIX}"/usr \ --x-includes="${EPREFIX}"/usr/include \ --x-libraries="${EPREFIX}"/usr/$(get_libdir) \ --with-distribution-id=org.gentoo mozconfig_annotate 'Gentoo defaults' \ --enable-gio \ --enable-single-profile \ --disable-profilesharing \ --disable-profilelocking sed -i \ -e '/--enable-application=/d' \ -e '/--enable-extensions=/d'\ .mozconfig local extensions="default" use mozdom && extensions+=",inspector" mozconfig_annotate 'Application defaults' \ --enable-application=${MOZ_APPLICATION} \ --with-default-mozilla-five-home="${MOZILLA_FIVE_HOME}" \ --enable-extensions="${extensions}" mozconfig_annotate 'Basic features' \ --enable-crypto \ --enable-tracejit \ --enable-pango \ --enable-mathml \ --enable-safe-browsing \ --enable-storage # jemalloc won't build with older glibc ! has_version ">=sys-libs/glibc-2.4" && mozconfig_annotate 'old glibc' --disable-jemalloc if ! ${IS_LIBXUL}; then mozconfig_annotate 'libxul application' \ --enable-official-branding \ --with-system-libxul \ --with-libxul-sdk="${EPREFIX}"${MOZDEVELDIR} fi [[ $# -gt 0 ]] && \ mozconfig_annotate 'Ebuild specific option: '"${P}" \ ${*} # Use system libraries mozconfig_use_enable alsa ogg mozconfig_use_enable alsa wave mozconfig_use_enable dbus mozconfig_use_enable ipc # +ipc, upstream default mozconfig_use_enable libnotify mozconfig_use_enable raw mozconfig_use_enable startup-notification mozconfig_use_enable system-sqlite mozconfig_use_enable webm mozconfig_use_with webm system-libvpx mozconfig_use_enable wifi necko-wifi # NOTE: Uses internal copy of libvpx if use webm && ! use alsa; then die "USE=webm needs USE=alsa" fi # Debug if use debug ; then mozconfig_annotate 'Debug activated' \ --disable-optimize \ --enable-valgrind \ --enable-debug=-ggdb \ --enable-debug-modules=all \ --enable-debugger-info-modules else mozconfig_annotate 'Debug deactivated' \ --disable-debug \ --disable-tests fi # omni.jar breaks ff on xr # Bug 60668: Galeon doesn't build without oji enabled, so enable it # regardless of java setting.--enable-oji mozconfig_annotate 'Broken' \ --disable-crashreporter \ --enable-chrome-format=jar \ --enable-oji mozconfig_annotate 'Deprecated' \ --disable-gnomeui \ --disable-gnomevfs # Currently --enable-elf-dynstr-gc only works for x86 and ppc, # thanks to Jason Wever for the fix. # -- This breaks now on ppc, no idea why # if use x86 || use ppc && [[ ${enable_optimize} != -O0 ]]; then if use x86 && [[ ${enable_optimize} != -O0 ]]; then mozconfig_annotate "${ARCH} optimized build" --enable-elf-dynstr-gc fi # fi echo echo '==========================================================' echo "Building ${PF} with the following configuration" grep '^ac_add_options' .mozconfig | while read ac opt hash reason; do [[ -z ${hash} || ${hash} == \# ]] \ || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}" printf ' %-60s %s\n' "${opt}" "${reason:-mozilla.org default}" done echo '==========================================================' echo mozilla-scm_src_configure } function mozilla_application_install() { # Install icon and .desktop for menu entry newicon "${S}"/other-licenses/branding/${PN}/content/icon48.png ${PN}.png newmenu "${FILESDIR}"/${PN}.desktop ${PN}.desktop # Add StartupNotify=true bug 237317 if use startup-notification ; then echo "StartupNotify=true" >> "${ED}"/usr/share/applications/${PN}.desktop fi }