blob: 425f11041ca618599bb97d84cee9c454e9fdb5e6 [file] [log] [blame] [edit]
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/mozcoreconf-2.eclass,v 1.15 2010/01/27 18:58:04 armin76 Exp $
#
# mozcoreconf.eclass : core options for mozilla
# inherit mozconfig-2 if you need USE flags
inherit multilib flag-o-matic
IUSE="${IUSE} custom-optimization"
RDEPEND="x11-libs/libXrender
x11-libs/libXt
x11-libs/libXmu
>=sys-libs/zlib-1.1.4"
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
mozconfig_init() {
declare enable_optimize pango_version myext x
declare MOZ=$([[ ${PN} == mozilla || ${PN} == gecko-sdk ]] && echo true || echo false)
declare FF=$([[ ${PN} == *firefox ]] && echo true || echo false)
declare TB=$([[ ${PN} == *thunderbird ]] && echo true || echo false)
declare SB=$([[ ${PN} == *sunbird ]] && echo true || echo false)
declare EM=$([[ ${PN} == enigmail ]] && echo true || echo false)
declare XUL=$([[ ${PN} == *xulrunner ]] && echo true || echo false)
declare SM=$([[ ${PN} == seamonkey ]] && echo true || echo false)
declare IC=$([[ ${PN} == *icecat ]] && echo true || echo false)
####################################
#
# Setup the initial .mozconfig
# See http://www.mozilla.org/build/configure-build.html
#
####################################
case ${PN} in
mozilla|gecko-sdk)
# The other builds have an initial --enable-extensions in their
# .mozconfig. The "default" set in configure applies to mozilla
# specifically.
: >.mozconfig || die "initial mozconfig creation failed"
mozconfig_annotate "" --enable-extensions=default ;;
*firefox)
cp browser/config/mozconfig .mozconfig \
|| die "cp browser/config/mozconfig failed" ;;
enigmail)
cp mail/config/mozconfig .mozconfig \
|| die "cp mail/config/mozconfig failed" ;;
*xulrunner)
cp xulrunner/config/mozconfig .mozconfig \
|| die "cp xulrunner/config/mozconfig failed" ;;
*sunbird)
cp calendar/sunbird/config/mozconfig .mozconfig \
|| die "cp calendar/sunbird/config/mozconfig failed" ;;
*thunderbird)
cp mail/config/mozconfig .mozconfig \
|| die "cp mail/config/mozconfig failed" ;;
seamonkey)
# The other builds have an initial --enable-extensions in their
# .mozconfig. The "default" set in configure applies to mozilla
# specifically.
: >.mozconfig || die "initial mozconfig creation failed"
mozconfig_annotate "" --enable-application=suite
mozconfig_annotate "" --enable-extensions=default ;;
*icecat)
cp browser/config/mozconfig .mozconfig \
|| die "cp browser/config/mozconfig failed" ;;
esac
####################################
#
# CFLAGS setup and ARCH support
#
####################################
# Set optimization level
if [[ ${ARCH} == hppa ]]; then
mozconfig_annotate "more than -O0 causes segfaults on hppa" --enable-optimize=-O0
elif [[ ${ARCH} == x86 ]]; then
mozconfig_annotate "less then -O2 causes a segfault on x86" --enable-optimize=-O2
elif use custom-optimization || [[ ${ARCH} == alpha ]]; then
# Set optimization level based on CFLAGS
if is-flag -O0; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-O0
elif [[ ${ARCH} == ppc ]] && has_version '>=sys-libs/glibc-2.8'; then
mozconfig_annotate "more than -O1 segfaults on ppc with glibc-2.8" --enable-optimize=-O1
elif is-flag -O1; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-O1
elif is-flag -Os; then
mozconfig_annotate "from CFLAGS" --enable-optimize=-Os
else
mozconfig_annotate "Gentoo's default optimization" --enable-optimize=-O2
fi
else
# Enable Mozilla's default
mozconfig_annotate "mozilla default" --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
# Additional ARCH support
case "${ARCH}" in
alpha)
# Historically we have needed to add -fPIC manually for 64-bit.
# Additionally, alpha should *always* build with -mieee for correct math
# operation
append-flags -fPIC -mieee
;;
amd64|ia64)
# Historically we have needed to add this manually for 64-bit
append-flags -fPIC
;;
ppc64)
append-flags -fPIC -mminimal-toc
;;
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
;;
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
mozconfig_annotate "building with >=gcc-3" --enable-old-abi-compat-wrappers
# Needed to build without warnings on gcc-3
CXXFLAGS="${CXXFLAGS} -Wno-deprecated"
fi
# Go a little faster; use less RAM
append-flags "$MAKEEDIT_FLAGS"
####################################
#
# mozconfig setup
#
####################################
mozconfig_annotate gentoo \
--disable-installer \
--disable-pedantic \
--enable-crypto \
--with-system-jpeg \
--with-system-zlib \
--disable-updater \
--enable-pango \
--enable-svg \
--enable-system-cairo \
--disable-strip \
--disable-strip-libs \
--disable-install-strip \
--with-distribution-id=org.gentoo
# This doesn't work yet
#--with-system-png \
if [[ ${PN} != seamonkey ]]; then
mozconfig_annotate gentoo \
--enable-single-profile \
--disable-profilesharing \
--disable-profilelocking
fi
# Here is a strange one...
if is-flag '-mcpu=ultrasparc*' || is-flag '-mtune=ultrasparc*'; then
mozconfig_annotate "building on ultrasparc" --enable-js-ultrasparc
fi
# jemalloc won't build with older glibc
! has_version ">=sys-libs/glibc-2.4" && mozconfig_annotate "we have old glibc" --disable-jemalloc
}
# 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
}
makemake2() {
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
}
# mozconfig_annotate: add an annotated line to .mozconfig
#
# Example:
# mozconfig_annotate "building on ultrasparc" --enable-js-ultrasparc
# => ac_add_options --enable-js-ultrasparc # building on ultrasparc
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_use_enable: add a line to .mozconfig based on a USE-flag
#
# Example:
# mozconfig_use_enable truetype freetype2
# => ac_add_options --enable-freetype2 # +truetype
mozconfig_use_enable() {
declare flag=$(use_enable "$@")
mozconfig_annotate "$(useq $1 && echo +$1 || echo -$1)" "${flag}"
}
# mozconfig_use_with: add a line to .mozconfig based on a USE-flag
#
# Example:
# mozconfig_use_with kerberos gss-api /usr/$(get_libdir)
# => ac_add_options --with-gss-api=/usr/lib # +kerberos
mozconfig_use_with() {
declare flag=$(use_with "$@")
mozconfig_annotate "$(useq $1 && echo +$1 || echo -$1)" "${flag}"
}
# mozconfig_use_extension: enable or disable an extension based on a USE-flag
#
# Example:
# mozconfig_use_extension gnome gnomevfs
# => ac_add_options --enable-extensions=gnomevfs
mozconfig_use_extension() {
declare minus=$(useq $1 || echo -)
mozconfig_annotate "${minus:-+}$1" --enable-extensions=${minus}${2}
}
# mozconfig_final: display a table describing all configuration options paired
# with reasons, then clean up extensions list
mozconfig_final() {
declare ac opt hash reason
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 " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}"
done
echo "=========================================================="
echo
# Resolve multiple --enable-extensions down to one
declare exts=$(sed -n 's/^ac_add_options --enable-extensions=\([^ ]*\).*/\1/p' \
.mozconfig | xargs)
sed -i '/^ac_add_options --enable-extensions/d' .mozconfig
echo "ac_add_options --enable-extensions=${exts// /,}" >> .mozconfig
}