summaryrefslogtreecommitdiffstats
path: root/www
diff options
context:
space:
mode:
authormarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2005-03-05 09:49:03 +0800
committermarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2005-03-05 09:49:03 +0800
commit8873c153d07a5669df16174aa06e9d969dfd5722 (patch)
treecf70af68f63fda720f8e0120672329f90d0ba313 /www
parent72cb2251c71ff3fe3c4cee60afd708a1d7399d2c (diff)
downloadmarcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.tar
marcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.tar.gz
marcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.tar.bz2
marcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.tar.lz
marcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.tar.xz
marcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.tar.zst
marcuscom-ports-8873c153d07a5669df16174aa06e9d969dfd5722.zip
Update freetype2 to 2.1.9, and fix Mozilla and Firefox so that they compile
against it. Since there is no ABI change in 2.1.9, we do not need to bump the PORTREVISIONs for mozilla and firefox. PR: 78385 Submitted by: lesi git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@3806 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'www')
-rw-r--r--www/firefox-devel/Makefile276
-rw-r--r--www/firefox-devel/distinfo2
-rw-r--r--www/firefox-devel/files/extra-patch-config_make-jars.pl10
-rw-r--r--www/firefox-devel/files/firefox.desktop.in191
-rw-r--r--www/firefox-devel/files/firefox.rb95
-rwxr-xr-xwww/firefox-devel/files/mkdistfile171
-rw-r--r--www/firefox-devel/files/moz_pis_S50cleanhome31
-rw-r--r--www/firefox-devel/files/mozconfig.in83
-rw-r--r--www/firefox-devel/files/patch-Double.cpp61
-rw-r--r--www/firefox-devel/files/patch-browser_app_mozilla.in465
-rw-r--r--www/firefox-devel/files/patch-bugzilla149334342
-rw-r--r--www/firefox-devel/files/patch-build_unix_mozilla-xpcom.pc.in8
-rw-r--r--www/firefox-devel/files/patch-build_unix_run-mozilla.sh23
-rw-r--r--www/firefox-devel/files/patch-config-mkdepend-imakemdep.h12
-rw-r--r--www/firefox-devel/files/patch-config-rules.mk16
-rw-r--r--www/firefox-devel/files/patch-config::mkdepend::Makefile.in10
-rw-r--r--www/firefox-devel/files/patch-configure38
-rw-r--r--www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp48
-rw-r--r--www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h14
-rw-r--r--www/firefox-devel/files/patch-nspr-unix.c23
-rw-r--r--www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg163
-rw-r--r--www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.h15
-rw-r--r--www/firefox-devel/files/patch-nsprpub-pr-include-md-_pth.h11
-rw-r--r--www/firefox-devel/files/patch-nsprpub-pr-src-io-prprf.c14
-rw-r--r--www/firefox-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c31
-rw-r--r--www/firefox-devel/files/patch-security-coreconf-FreeBSD.mk28
-rw-r--r--www/firefox-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp29
-rw-r--r--www/firefox-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc11
-rw-r--r--www/firefox-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in56
-rw-r--r--www/firefox-devel/files/patch-xptcall-alpha461
-rw-r--r--www/firefox-devel/files/patch-xptcall-ia6440
-rw-r--r--www/firefox-devel/files/patch-xptcall-sparc64329
-rw-r--r--www/firefox-devel/pkg-deinstall.in25
-rw-r--r--www/firefox-devel/pkg-descr12
-rw-r--r--www/firefox-devel/pkg-install.in36
-rw-r--r--www/firefox-devel/pkg-message41
-rw-r--r--www/firefox/Makefile276
-rw-r--r--www/firefox/distinfo2
-rw-r--r--www/firefox/files/extra-patch-config_make-jars.pl10
-rw-r--r--www/firefox/files/firefox.desktop.in191
-rw-r--r--www/firefox/files/firefox.rb95
-rwxr-xr-xwww/firefox/files/mkdistfile171
-rw-r--r--www/firefox/files/moz_pis_S50cleanhome31
-rw-r--r--www/firefox/files/mozconfig.in83
-rw-r--r--www/firefox/files/patch-Double.cpp61
-rw-r--r--www/firefox/files/patch-browser_app_mozilla.in465
-rw-r--r--www/firefox/files/patch-bugzilla149334342
-rw-r--r--www/firefox/files/patch-build_unix_mozilla-xpcom.pc.in8
-rw-r--r--www/firefox/files/patch-build_unix_run-mozilla.sh23
-rw-r--r--www/firefox/files/patch-config-mkdepend-imakemdep.h12
-rw-r--r--www/firefox/files/patch-config-rules.mk16
-rw-r--r--www/firefox/files/patch-config::mkdepend::Makefile.in10
-rw-r--r--www/firefox/files/patch-configure38
-rw-r--r--www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp48
-rw-r--r--www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h14
-rw-r--r--www/firefox/files/patch-nspr-unix.c23
-rw-r--r--www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg163
-rw-r--r--www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h15
-rw-r--r--www/firefox/files/patch-nsprpub-pr-include-md-_pth.h11
-rw-r--r--www/firefox/files/patch-nsprpub-pr-src-io-prprf.c14
-rw-r--r--www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c31
-rw-r--r--www/firefox/files/patch-security-coreconf-FreeBSD.mk28
-rw-r--r--www/firefox/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp29
-rw-r--r--www/firefox/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc11
-rw-r--r--www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in56
-rw-r--r--www/firefox/files/patch-xptcall-alpha461
-rw-r--r--www/firefox/files/patch-xptcall-ia6440
-rw-r--r--www/firefox/files/patch-xptcall-sparc64329
-rw-r--r--www/firefox/pkg-deinstall.in25
-rw-r--r--www/firefox/pkg-descr12
-rw-r--r--www/firefox/pkg-install.in36
-rw-r--r--www/firefox/pkg-message41
-rw-r--r--www/firefox10/Makefile276
-rw-r--r--www/firefox10/distinfo2
-rw-r--r--www/firefox10/files/extra-patch-config_make-jars.pl10
-rw-r--r--www/firefox10/files/firefox.desktop.in191
-rw-r--r--www/firefox10/files/firefox.rb95
-rwxr-xr-xwww/firefox10/files/mkdistfile171
-rw-r--r--www/firefox10/files/moz_pis_S50cleanhome31
-rw-r--r--www/firefox10/files/mozconfig.in83
-rw-r--r--www/firefox10/files/patch-Double.cpp61
-rw-r--r--www/firefox10/files/patch-browser_app_mozilla.in465
-rw-r--r--www/firefox10/files/patch-bugzilla149334342
-rw-r--r--www/firefox10/files/patch-build_unix_mozilla-xpcom.pc.in8
-rw-r--r--www/firefox10/files/patch-build_unix_run-mozilla.sh23
-rw-r--r--www/firefox10/files/patch-config-mkdepend-imakemdep.h12
-rw-r--r--www/firefox10/files/patch-config-rules.mk16
-rw-r--r--www/firefox10/files/patch-config::mkdepend::Makefile.in10
-rw-r--r--www/firefox10/files/patch-configure38
-rw-r--r--www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp48
-rw-r--r--www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h14
-rw-r--r--www/firefox10/files/patch-nspr-unix.c23
-rw-r--r--www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.cfg163
-rw-r--r--www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.h15
-rw-r--r--www/firefox10/files/patch-nsprpub-pr-include-md-_pth.h11
-rw-r--r--www/firefox10/files/patch-nsprpub-pr-src-io-prprf.c14
-rw-r--r--www/firefox10/files/patch-nsprpub-pr-src-pthreads-ptio.c31
-rw-r--r--www/firefox10/files/patch-security-coreconf-FreeBSD.mk28
-rw-r--r--www/firefox10/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp29
-rw-r--r--www/firefox10/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc11
-rw-r--r--www/firefox10/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in56
-rw-r--r--www/firefox10/files/patch-xptcall-alpha461
-rw-r--r--www/firefox10/files/patch-xptcall-ia6440
-rw-r--r--www/firefox10/files/patch-xptcall-sparc64329
-rw-r--r--www/firefox10/pkg-deinstall.in25
-rw-r--r--www/firefox10/pkg-descr12
-rw-r--r--www/firefox10/pkg-install.in36
-rw-r--r--www/firefox10/pkg-message41
-rw-r--r--www/firefox3-devel/Makefile276
-rw-r--r--www/firefox3-devel/distinfo2
-rw-r--r--www/firefox3-devel/files/extra-patch-config_make-jars.pl10
-rw-r--r--www/firefox3-devel/files/firefox.desktop.in191
-rw-r--r--www/firefox3-devel/files/firefox.rb95
-rwxr-xr-xwww/firefox3-devel/files/mkdistfile171
-rw-r--r--www/firefox3-devel/files/moz_pis_S50cleanhome31
-rw-r--r--www/firefox3-devel/files/mozconfig.in83
-rw-r--r--www/firefox3-devel/files/patch-Double.cpp61
-rw-r--r--www/firefox3-devel/files/patch-browser_app_mozilla.in465
-rw-r--r--www/firefox3-devel/files/patch-bugzilla149334342
-rw-r--r--www/firefox3-devel/files/patch-build_unix_mozilla-xpcom.pc.in8
-rw-r--r--www/firefox3-devel/files/patch-build_unix_run-mozilla.sh23
-rw-r--r--www/firefox3-devel/files/patch-config-mkdepend-imakemdep.h12
-rw-r--r--www/firefox3-devel/files/patch-config-rules.mk16
-rw-r--r--www/firefox3-devel/files/patch-config::mkdepend::Makefile.in10
-rw-r--r--www/firefox3-devel/files/patch-configure38
-rw-r--r--www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp48
-rw-r--r--www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h14
-rw-r--r--www/firefox3-devel/files/patch-nspr-unix.c23
-rw-r--r--www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg163
-rw-r--r--www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.h15
-rw-r--r--www/firefox3-devel/files/patch-nsprpub-pr-include-md-_pth.h11
-rw-r--r--www/firefox3-devel/files/patch-nsprpub-pr-src-io-prprf.c14
-rw-r--r--www/firefox3-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c31
-rw-r--r--www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk28
-rw-r--r--www/firefox3-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp29
-rw-r--r--www/firefox3-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc11
-rw-r--r--www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in56
-rw-r--r--www/firefox3-devel/files/patch-xptcall-alpha461
-rw-r--r--www/firefox3-devel/files/patch-xptcall-ia6440
-rw-r--r--www/firefox3-devel/files/patch-xptcall-sparc64329
-rw-r--r--www/firefox3-devel/pkg-deinstall.in25
-rw-r--r--www/firefox3-devel/pkg-descr12
-rw-r--r--www/firefox3-devel/pkg-install.in36
-rw-r--r--www/firefox3-devel/pkg-message41
-rw-r--r--www/mozilla/Makefile382
-rw-r--r--www/mozilla/distinfo2
-rw-r--r--www/mozilla/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp88
-rw-r--r--www/mozilla/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp50
-rw-r--r--www/mozilla/files/mozilla.desktop.in169
-rw-r--r--www/mozilla/files/mozilla.sh85
-rw-r--r--www/mozilla/files/patch-Double.cpp59
-rw-r--r--www/mozilla/files/patch-Makefile.in22
-rw-r--r--www/mozilla/files/patch-bugzilla149334342
-rw-r--r--www/mozilla/files/patch-build_unix_run-mozilla.sh23
-rw-r--r--www/mozilla/files/patch-config-mkdepend-imakemdep.h10
-rw-r--r--www/mozilla/files/patch-config::mkdepend::Makefile.in10
-rw-r--r--www/mozilla/files/patch-config::rules.mk14
-rw-r--r--www/mozilla/files/patch-config_autoconf.mk.in18
-rw-r--r--www/mozilla/files/patch-extensions_negotiateauth_Makefile.in20
-rw-r--r--www/mozilla/files/patch-nsprpub-pr-include-md-_pth.h11
-rw-r--r--www/mozilla/files/patch-nsprpub-pr-src-io-prprf.c14
-rw-r--r--www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.cfg124
-rw-r--r--www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.h13
-rw-r--r--www/mozilla/files/patch-nsprpub::pr::src::pthreads::ptio.c29
-rw-r--r--www/mozilla/files/patch-qt50
-rw-r--r--www/mozilla/files/patch-security::coreconf::FreeBSD.mk37
-rw-r--r--www/mozilla/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp29
-rw-r--r--www/mozilla/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc11
-rw-r--r--www/mozilla/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in56
-rw-r--r--www/mozilla/files/patch-xptcall-alpha459
-rw-r--r--www/mozilla/files/patch-xptcall-amd64386
-rw-r--r--www/mozilla/files/patch-xptcall-ia6438
-rwxr-xr-xwww/mozilla/files/patch-xptcall-sparc64327
-rw-r--r--www/mozilla/pkg-deinstall.in22
-rw-r--r--www/mozilla/pkg-descr13
-rw-r--r--www/mozilla/pkg-install.in33
-rw-r--r--www/seamonkey/Makefile382
-rw-r--r--www/seamonkey/distinfo2
-rw-r--r--www/seamonkey/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp88
-rw-r--r--www/seamonkey/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp50
-rw-r--r--www/seamonkey/files/mozilla.desktop.in169
-rw-r--r--www/seamonkey/files/mozilla.sh85
-rw-r--r--www/seamonkey/files/patch-Double.cpp59
-rw-r--r--www/seamonkey/files/patch-Makefile.in22
-rw-r--r--www/seamonkey/files/patch-bugzilla149334342
-rw-r--r--www/seamonkey/files/patch-build_unix_run-mozilla.sh23
-rw-r--r--www/seamonkey/files/patch-config-mkdepend-imakemdep.h10
-rw-r--r--www/seamonkey/files/patch-config::mkdepend::Makefile.in10
-rw-r--r--www/seamonkey/files/patch-config::rules.mk14
-rw-r--r--www/seamonkey/files/patch-config_autoconf.mk.in18
-rw-r--r--www/seamonkey/files/patch-extensions_negotiateauth_Makefile.in20
-rw-r--r--www/seamonkey/files/patch-nsprpub-pr-include-md-_pth.h11
-rw-r--r--www/seamonkey/files/patch-nsprpub-pr-src-io-prprf.c14
-rw-r--r--www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.cfg124
-rw-r--r--www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.h13
-rw-r--r--www/seamonkey/files/patch-nsprpub::pr::src::pthreads::ptio.c29
-rw-r--r--www/seamonkey/files/patch-qt50
-rw-r--r--www/seamonkey/files/patch-security::coreconf::FreeBSD.mk37
-rw-r--r--www/seamonkey/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp29
-rw-r--r--www/seamonkey/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc11
-rw-r--r--www/seamonkey/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in56
-rw-r--r--www/seamonkey/files/patch-xptcall-alpha459
-rw-r--r--www/seamonkey/files/patch-xptcall-amd64386
-rw-r--r--www/seamonkey/files/patch-xptcall-ia6438
-rwxr-xr-xwww/seamonkey/files/patch-xptcall-sparc64327
-rw-r--r--www/seamonkey/pkg-deinstall.in22
-rw-r--r--www/seamonkey/pkg-descr13
-rw-r--r--www/seamonkey/pkg-install.in33
208 files changed, 18776 insertions, 0 deletions
diff --git a/www/firefox-devel/Makefile b/www/firefox-devel/Makefile
new file mode 100644
index 000000000..4f341c8e1
--- /dev/null
+++ b/www/firefox-devel/Makefile
@@ -0,0 +1,276 @@
+# New ports collection makefile for: phoenix
+# Date created: 2002/10/21
+# Whom: Alan Eldridge <alane@FreeBSD.org>
+#
+# $FreeBSD: ports/www/firefox/Makefile,v 1.116 2005/03/02 06:50:12 marcus Exp $
+#
+
+PORTNAME= firefox
+PORTVERSION= 1.0.1
+PORTREVISION= 2
+PORTEPOCH= 1
+CATEGORIES= www
+MASTER_SITES= ${MASTER_SITE_MOZILLA}
+MASTER_SITE_SUBDIR= ${PORTNAME}/releases/1.0.1/source
+DISTNAME= ${PORTNAME}-1.0.1-source
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Web browser based on the browser portion of Mozilla
+
+LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
+ png.5:${PORTSDIR}/graphics/png \
+ mng.1:${PORTSDIR}/graphics/libmng
+BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip
+
+ALL_TARGET= default
+CONFIGURE_ENV= LOCALBASE=${LOCALBASE}
+FAKEDIR= ${WRKDIR}/fake
+USE_REINPLACE= yes
+HAS_CONFIGURE= yes
+ESD_LIB= libesd.so.2
+PLIST= ${WRKDIR}/plist
+PLUGINSDIR= ${PREFIX}/lib/browser_plugins
+USE_BZIP2= yes
+USE_GMAKE= yes
+USE_GNOME= gtk20 libidl gnomehier desktopfileutils
+USE_ICONV= yes
+USE_PERL5_BUILD=yes
+USE_X_PREFIX= yes
+WRKSRC= ${WRKDIR}/mozilla
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
+ --exclude */macbuild/*\
+ --exclude */package/* \
+ --exclude .cvsignore \
+ --exclude makefile.win \
+ --exclude MANIFEST
+
+FIREFOX= ${PORTNAME}
+FF_VER= ${PORTVERSION}
+
+FIREFOX_ICON= firefox.png
+FIREFOX_ICON_SRC=${WRKSRC}/other-licenses/branding/firefox/content/alert-exclam.png
+
+PKGCONFIG_FILES=firefox-gtkmozembed firefox-js firefox-xpcom \
+ firefox-nspr firefox-nss firefox-plugin
+
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.1/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/diablo-jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so
+
+SYSTEM_PREFS= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}/defaults/pref/firefox.js
+SCRIPTS_DIR= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}
+MOZ_PIS_SCRIPTS= S50cleanhome
+MOZ_PIS_DIR= ${SCRIPTS_DIR}/init.d
+
+OPTIONS= DEBUG "Build a debugging image" off \
+ LOGGING "Enable additional log messages" off \
+ OPTIMIZED_CFLAGS "Enable some additional optimizations" off \
+ XFT "Enable support for anti-aliased fonts" on \
+ SMB "Enable smb:// URI support using gnomevfs" off \
+ NEWTAB "Open external links in a new tab" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_DEBUG)
+WITH_LOGGING= yes
+CONFIGURE_ENV+= WITH_DEBUG=yes
+.endif # defined(WITH_DEBUG)
+
+.if defined(WITH_OPTIMIZED_CFLAGS)
+CFLAGS:= -O2 -fno-strict-aliasing ${CFLAGS:N-O*}
+.else
+CFLAGS:= -O ${CFLAGS:N-O*:N-m*}
+CONFIGURE_ENV+= WITH_OPTIMIZE=-O
+.endif # defined(WITH_OPTIMIZED_CFLAGS)
+
+.if defined(WITH_LOGGING)
+CONFIGURE_ENV+= WITH_LOGGING=yes
+.endif # defined(WITH_LOGGING)
+
+.if defined(WITHOUT_XFT)
+CONFIGURE_ENV+= WITHOUT_XFT=yes
+.else
+LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
+.endif # !defined(WITHOUT_XFT)
+
+.if defined(WITH_SMB)
+USE_GNOME+= gnomevfs2
+CONFIGURE_ENV+= WITH_SMB=yes
+.endif # defined(WITH_SMB)
+
+CPPFLAGS+= -I${X11BASE}/include -I${LOCALBASE}/include
+CFLAGS+= ${PTHREAD_CFLAGS}
+LDFLAGS+= -L${X11BASE}/lib
+LIBS+= ${PTHREAD_LIBS}
+
+EXTRA_SCRIPTS= ${PORTNAME}.rb
+
+.if ${ARCH} == "alpha" && ${OSVERSION} < 500035
+IGNORE= "core dumps on alpha during post-build"
+.endif
+
+.if ${PERL_LEVEL} < 500600
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-config_make-jars.pl
+.endif
+
+pre-extract::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "Extracting source (this takes a while) ..."
+ @${ECHO_MSG}
+
+post-extract::
+ @${SED} -e 's|@CPPFLAGS@|${CPPFLAGS}|' \
+ -e 's|@CFLAGS@|${CFLAGS}|' \
+ -e 's|@LDFLAGS@|${LDFLAGS}|' \
+ -e 's|@LIBS@|${LIBS}|' \
+ -e 's|@X11BASE@|${X11BASE}|' \
+ -e 's|@LOCALBASE@|${LOCALBASE}|' \
+ -e 's|@FAKEDIR@|${FAKEDIR}|' \
+ -e 's|@PERL@|${PERL5}|' \
+ <${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
+ @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' \
+ <${FILESDIR}/firefox.desktop.in >${WRKDIR}/firefox.desktop
+
+post-patch:
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${MASTERDIR}/pkg-install.in > ${PKGINSTALL}
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g' \
+ < ${MASTERDIR}/pkg-deinstall.in > ${PKGDEINSTALL}
+.for ii in ${EXTRA_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/${ii} > ${WRKDIR}/${ii}
+.endfor
+.for ii in ${MOZ_PIS_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/moz_pis_${ii} > ${WRKDIR}/moz_pis_${ii}
+.endfor
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/run-mozilla.sh
+ @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \
+ s|-lpthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/nsprpub/configure
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/nsprpub/config/config.mk \
+ ${WRKSRC}/security/coreconf/FreeBSD.mk \
+ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \
+ ${WRKSRC}/js/src/Makefile.in
+ @${REINPLACE_CMD} -e 's|libesd\.so\.\d+|${ESD_LIB}|g' \
+ ${WRKSRC}/widget/src/gtk2/nsSound.cpp
+ @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.no|g' \
+ ${WRKSRC}/gfx/src/gtk/nsDeviceContextSpecG.cpp
+.for ii in modules/libpref/src/init extensions/sroaming/resources/content/prefs \
+ embedding/minimo
+ @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/ ; \
+ /dom.disable_window_open_feature.toolbar/s/false/true/' \
+ ${WRKSRC}/${ii}/all.js
+.endfor
+
+pre-configure:
+ @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \
+ ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
+ ${FALSE}; \
+ fi
+
+pre-install:
+ @${RM} -rf ${FAKEDIR} ${PLIST}
+ @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
+ Makefile ${MAKE_ARGS} install
+ @${MKDIR} ${SCRIPTS_DIR}
+ @${MKDIR} ${MOZ_PIS_DIR}
+ ${ECHO_CMD} 'share/gnome/pixmaps/${FIREFOX_ICON}' >> ${PLIST}
+ ${ECHO_CMD} 'share/gnome/applications/firefox.desktop' >> ${PLIST}
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g; \
+ s|${FIREFOX}-${FF_VER}|${FIREFOX}|' \
+ ${FAKEDIR}/bin/firefox \
+ ${FAKEDIR}/bin/firefox-config
+ for i in ${EXTRA_SCRIPTS}; do \
+ ${ECHO_CMD} bin/$${i} >> ${PLIST}; \
+ done
+ ${ECHO_CMD} bin/firefox >> ${PLIST}
+ ${ECHO_CMD} bin/firefox-config >> ${PLIST}
+.for ii in ${MOZ_PIS_SCRIPTS}
+ ${INSTALL_SCRIPT} ${WRKDIR}/moz_pis_${ii} ${MOZ_PIS_DIR}/${ii}
+.endfor
+.if !defined(WITHOUT_NEWTAB)
+ ${ECHO_CMD} >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "// Open external links in new tab" >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "pref(\"browser.link.open_external\", 3);" \
+ >> ${SYSTEM_PREFS}
+.endif # !defined(WITHOUT_NEWTAB)
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|lib/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm lib/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm lib/firefox >> ${PLIST}
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|${FIREFOX}-${FF_VER}|${FIREFOX}|g; \
+ s|${FAKEDIR}|${PREFIX}|' \
+ ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc ; \
+ ${ECHO_CMD} libdata/pkgconfig/$${pcfile}.pc >> ${PLIST} ; \
+ done
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|include/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm include/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm include/${FIREFOX} >> ${PLIST}
+ ${ECHO_CMD} lib/browser_plugins/.${PORTNAME}.keep >> ${PLIST}
+ ${ECHO_CMD} "@unexec ${RMDIR} %D/lib/browser_plugins 2>/dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@exec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@unexec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+
+do-install:
+ ${MKDIR} ${PREFIX}/lib/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/lib/${FIREFOX}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox ${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox-config ${PREFIX}/bin
+ if [ ! -d ${PREFIX}/lib/browser_plugins ]; then \
+ ${MKDIR} ${PREFIX}/lib/browser_plugins ; \
+ fi
+ ${TOUCH} -f ${PREFIX}/lib/browser_plugins/.${PORTNAME}.keep
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${LN} -sf $${jpi} \
+ ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${INSTALL_DATA} ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc \
+ ${PREFIX}/libdata/pkgconfig/$${pcfile}.pc ; \
+ done
+ -${RM} -fr ${PREFIX}/include/${FIREFOX}
+ ${MKDIR} ${PREFIX}/include/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/lib/${FIREFOX}
+
+post-install:
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+.for i in ${EXTRA_SCRIPTS}
+ ${INSTALL_SCRIPT} ${FILESDIR}/${i} ${PREFIX}/bin
+.endfor
+ ${INSTALL_DATA} ${FIREFOX_ICON_SRC} ${PREFIX}/share/gnome/pixmaps/${FIREFOX_ICON}
+ ${INSTALL_DATA} ${WRKDIR}/firefox.desktop ${PREFIX}/share/gnome/applications
+ ${INSTALL_DATA} ${WRKSRC}/other-licenses/branding/firefox/default.xpm \
+ ${PREFIX}/lib/${FIREFOX}/chrome/icons/default/default.xpm
+ @-update-desktop-database
+
+.include <bsd.port.post.mk>
diff --git a/www/firefox-devel/distinfo b/www/firefox-devel/distinfo
new file mode 100644
index 000000000..2ce601d09
--- /dev/null
+++ b/www/firefox-devel/distinfo
@@ -0,0 +1,2 @@
+MD5 (firefox-1.0.1-source.tar.bz2) = ebaea974fea9460ab7050fff76b41cb1
+SIZE (firefox-1.0.1-source.tar.bz2) = 32671529
diff --git a/www/firefox-devel/files/extra-patch-config_make-jars.pl b/www/firefox-devel/files/extra-patch-config_make-jars.pl
new file mode 100644
index 000000000..a558607ca
--- /dev/null
+++ b/www/firefox-devel/files/extra-patch-config_make-jars.pl
@@ -0,0 +1,10 @@
+--- config/make-jars.pl.orig Wed Oct 13 16:17:11 2004
++++ config/make-jars.pl Wed Oct 13 16:17:07 2004
+@@ -40,6 +40,7 @@
+ last if ($arg eq "--");
+ }
+ my $defines = join(' ', @ARGV[ $ddindex .. $#ARGV ]);
++splice @ARGV, $ddindex, $#ARGV;
+
+ getopts("d:s:t:f:avlD:o:p:xz:");
+
diff --git a/www/firefox-devel/files/firefox.desktop.in b/www/firefox-devel/files/firefox.desktop.in
new file mode 100644
index 000000000..c1b7a2e59
--- /dev/null
+++ b/www/firefox-devel/files/firefox.desktop.in
@@ -0,0 +1,191 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Firefox Web Browser
+Name[am]=
+Name[ar]=
+Name[az]=Firefox Veb Səyyahı
+Name[be]=
+Name[bg]=Интернет браузър Firefox
+Name[bn]=
+Name[bs]=Firefox web preglednik
+Name[ca]=Navegador web Firefox
+Name[cs]=Prohlížeč WWW Firefox
+Name[cy]=Y Porwr Gwe Firefox
+Name[da]=Firefox - internetsurfning
+Name[de]=Firefox Webbrowser
+Name[el]=Περιηγητής Διαδικτύου Firefox
+Name[en_CA]=Firefox Web Browser
+Name[en_GB]=Firefox Web Browser
+Name[es]=Navegador Web Firefox
+Name[et]=Firefox veebibrauser
+Name[eu]=Firefox web arakatzailea
+Name[fi]=Firefox, WWW-selain
+Name[fr]=Navigateur Web Firefox
+Name[ga]=Brabhsálaí Lín Firefox
+Name[gu]=એપીફની વૅબ બ્રાઉઝર
+Name[he]=דפדפן Firefox
+Name[hi]=
+Name[hr]=Firefox Web preglednik
+Name[hu]=Firefox webböngésző
+Name[id]=Web Browser Firefox
+Name[it]=Browser web Firefox
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[li]=Firefox Web Browser
+Name[lt]=Firefox web naršyklė
+Name[mk]=Firefox веб прелистувач
+Name[ml]=എപ്പിഫാനി വെബ്ബ് ബ്രൌസ‌ര്
+Name[mn]=Firefox веб хөтөч
+Name[ms]=Pelungsur Web Firefox
+Name[nb]=Firefox nettleser
+Name[nl]=Firefox Webbrowser
+Name[nn]=Firefox nettlesar
+Name[no]=Firefox nettleser
+Name[pa]=ਏਪੀਫਾਨੀ ਵੈੱਬ ਬਰਾਊਜ਼ਰ
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Navegador Web Firefox
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Navigatorul Firefox
+Name[ru]=Веб-браузер Firefox
+Name[sk]=
+Name[sl]=Spletni brskalnik Firefox
+Name[sq]=Firefox - Shfletuesi Web
+Name[sr]=
+Name[sr@Latn]=Veb čitač Spoznaja
+Name[sv]=Webbläsaren Firefox
+Name[ta]=எபிபனி வலை உலாவி
+Name[tk]=Firefox Web Ahtarçisi
+Name[tr]=Firefox Web Tarayıcı
+Name[uk]=Переглядач web Firefox
+Name[vi]=Trình Duyệt Web Firefox
+Name[wa]=Betchteu waibe epiphany
+Name[zh_CN]=Firefox Web 浏览器
+Name[zh_TW]=Firefox 網頁瀏覽器
+GenericName=Web Browser
+GenericName[ar]=متصفّح الانترنت
+GenericName[az]=Veb Səyyahı
+GenericName[be]=Вандроўнік па павуціньню
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[bs]=Web preglednik
+GenericName[ca]=Navegador web
+GenericName[cs]=Prohlížeč WWW
+GenericName[cy]=Porwr Gwe
+GenericName[da]=Internetsurfning
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής Ιστοσελίδων
+GenericName[en_CA]=Web Browser
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web Firefox
+GenericName[ga]=Brabhsálaí Lín
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Browser Web
+GenericName[it]=Browser web
+GenericName[ja]=GNOME ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[li]=Wèb Browser
+GenericName[lt]=Web naršyklė
+GenericName[mk]=Веб прелистувач
+GenericName[mn]=Веб хөтөч
+GenericName[ms]=Pelungsur Web
+GenericName[nb]=Nettleser
+GenericName[nl]=Web-browser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pa]=ਵੈਬ ਬਰਾਊਜ਼
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sq]=Shfletuesi Web
+GenericName[sr]=Веб читач
+GenericName[sr@Latn]=Veb čitač
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tk]=Web Ahtarçysy
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Переглядач web-сторінок
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[zh_CN]=Web 浏览器
+GenericName[zh_TW]=網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Surf på internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте на веб
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Веб-браузер
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ Firefox
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=firefox %U
+Icon=@FIREFOX_ICON@
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;
diff --git a/www/firefox-devel/files/firefox.rb b/www/firefox-devel/files/firefox.rb
new file mode 100644
index 000000000..7aa32cbe5
--- /dev/null
+++ b/www/firefox-devel/files/firefox.rb
@@ -0,0 +1,95 @@
+#!/usr/bin/env ruby
+=begin -*-mode: ruby-*-
+
+ MoZiLLa.in
+
+ Copyright (c) 2002, Alan Eldridge
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the copyright owner nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ $Id: firefox.rb,v 1.1 2005-03-05 01:49:02 marcus Exp $
+
+ 2002-12-16 Alan Eldridge <alane@geeksrus.net>
+
+=end
+
+X11BIN = "/usr/X11R6/bin"
+NAME = File::basename($0, ".rb")
+APP_PATH = File::join(X11BIN, NAME)
+
+if !File::executable?(APP_PATH)
+ raise "File '#{APP_PATH}' not found. Giving up."
+elsif ($display = ENV["DISPLAY"]) == nil
+ raise "Environment variable DISPLAY not found. Giving up."
+end
+
+if ARGV.size > 0
+ if ARGV[0] == "--debug"
+ ARGV.shift
+ else
+ $stdin.reopen(File::open("/dev/null", "r"))
+ $stdout.reopen(File::open("/dev/null", "w"))
+ $stderr.reopen(File::open("/dev/null", "w"))
+ end
+end
+
+if ARGV.size < 1
+ $url = nil
+else
+ $url = ARGV.pop
+ $url.sub!(/^ghelp:/, "file:")
+end
+
+IO::popen("xwininfo -display #{$display} -root -tree") {
+ |io|
+ if NAME != "firefox"
+ $windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
+ else
+ $windows = io.grep(%r<Firefox-bin.*>)
+ end
+}
+
+if $windows.size > 0
+ $id = $windows.map {
+ |s| s.strip.split.first
+ }.sort.first
+ $args = [ "-id", $id, "-raise", "-remote" ]
+ $args.push($url ? "\"openURL(#{$url},new-window)\"" :
+ "\"xfeDoCommand(openBrowser)\"")
+else
+ $args = ARGV
+ $args.push("\"#{$url}\"") if $url
+end
+
+fork {
+ exec(([APP_PATH] + $args).join(" "))
+}
+exit!
+
+#EOF
diff --git a/www/firefox-devel/files/mkdistfile b/www/firefox-devel/files/mkdistfile
new file mode 100755
index 000000000..50a2fee40
--- /dev/null
+++ b/www/firefox-devel/files/mkdistfile
@@ -0,0 +1,171 @@
+#!/bin/sh
+# -*-shell-script-*-
+#
+# mkdistfile -- maintainer's utility to make a firefox distfile
+#
+# Copyright (c) 2002, Alan Eldridge
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of the copyright owner nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD: ports/www/firefox/files/mkdistfile,v 1.6 2004/02/11 07:16:17 marcus Exp $
+#
+# 2002/10/21 alane@geeksrus.net
+#
+
+ORIGDIR=$(/bin/pwd); export ORIGDIR
+APPNAME=${0##*/};APPNAME=${APPNAME#-}; export APPNAME
+test -z "$TMPDIR" && TMPDIR=/tmp; export TMPDIR
+test -z "$HOSTNAME" && HOSTNAME=$(hostname); export HOSTNAME
+warn() { echo "[$APPNAME:$$]" "****" "$@";}
+status() { echo "[$APPNAME:$$]" "===>" "$@";}
+error() { echo "[$APPNAME:$$]" "ERROR:" "$@";}
+die() { echo "[$APPNAME:$$]" "FATAL:" "$@"; exit 1;}
+unset echo_n; test "X`echo -n`" = "X-n" \
+ && echo_n() { echo "$@\c"; } || echo_n() { echo -n "$@"; }
+status_n() { echo_n "[$APPNAME:$$]" "===>" "$@";}
+log() { local cmd=$1;shift;echo_n $(date "+%Y%m%d.%T") "";$cmd "$@";}
+qexpr() { expr "$@" >/dev/null 2>&1;}
+qw() { echo \""$@"\"; }
+listfiles() { ls -1 ${1:+"$@"} 2>/dev/null; }
+whichre() { local n=$#; local s="$1"; shift; while test $# -ge 1; do
+ qexpr "$s" : "$1"&& echo $(($n - $#)) && return 0; shift; done;
+ echo 0; return 1;}
+matchre() { test $(whichre "$@") -gt 0; }
+streq() { local s="$1"; shift; while test $# -ge 1; do
+ test "X$s" = "X$1" && return 0; shift; done; return 1;}
+strupper() {
+ echo "$@"|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+strlower() {
+ echo "$@"|tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
+}
+chdir() { cd "$1" || die cd $(qw $1) failed; }
+absdir() { chdir "$1" && pwd; }
+abspath() { local p=''; case "$1" in /*);; *)p="$(pwd)/";; esac; echo "$p$1"; }
+tmpfile() { mktemp -t .$APPNAME ${1:+"$@"}; }
+############################################################
+# show usage and exit
+############################################################
+usage() {
+ cat <<EOF
+Usage: $APPNAME [options] [--] rev[.yyyymmdd]
+Options:
+ -h,--help Show this help.
+ -V,--version Show version number.
+ -v,--verbose Produce more verbose output.
+ -x,--debug Turn on shell command tracing.
+ -- Stop option processing.
+EOF
+ exit $1
+}
+############################################################
+# show version and exit
+############################################################
+VERSION='$Revision: 1.1 $'
+VERSION=${VERSION#* }; VERSION=${VERSION% *}
+version() { echo "$APPNAME $VERSION" \
+ "Copyright (c) 2002 Alan Eldridge"; exit $1;}
+############################################################
+# set default vars here
+############################################################
+DEBUG=0
+VERBOSE=0; VFLG=''
+DATETIME=$(date +%Y%m%d.%H%M)
+DATE=${DATETIME%.*}
+TIME=${DATETIME#*.}
+############################################################
+# do command line options
+############################################################
+while test $# -gt 0; do
+ n=1; case "$1" in
+ -h|--help) usage 0;;
+ -V|--version) version 0;;
+ -v|--verbose) VERBOSE=1;VFLG='-v';;
+ -x|--debug) set -x;DEBUG=1;;
+ --) shift; break;; -*) usage 1;; *) break;;
+ esac; shift $n
+done
+
+############################################################
+# main(): script execution begins here
+############################################################
+
+test $# -eq 1 || usage 1
+
+REV=$1
+test ${REV##*.} = today && REV=${REV%.*}.$DATE
+
+status "pruning tree..."
+exfile=$(tmpfile)
+cat >>$exfile <<'EOF'
+^.*/CVS($|/)
+^.*/macbuild($|/)
+^.*/package($|/)
+^.*/.cvsignore($|/)
+^.*/windows($|/)
+^.*/activex($|/)
+^.*/os2($|/)
+^.*/solaris($|/)
+^.*/gc($|/)
+^mozilla/apache($|/)
+^mozilla/calendar($|/)
+^mozilla/cck($|/)
+^mozilla/chimera($|/)
+^mozilla/ef($|/)
+^mozilla/embed.mak($|/)
+^mozilla/embed.mk($|/)
+^mozilla/gconfig($|/)
+^mozilla/gfx2($|/)
+^mozilla/grendel($|/)
+^mozilla/java($|/)
+^mozilla/js2($|/)
+^mozilla/mail($|/)
+^mozilla/mailnews($|/)
+^mozilla/mozilla($|/)
+^mozilla/mozilla.kdevprj($|/)
+^mozilla/mozilla.lsm($|/)
+^mozilla/msgsdk($|/)
+^mozilla/mstone($|/)
+^mozilla/nglayout.mac($|/)
+^mozilla/nunet($|/)
+^mozilla/other-licenses($|/)
+^mozilla/privacy($|/)
+^mozilla/silentdl($|/)
+^mozilla/timer($|/)
+^mozilla/trex.mak($|/)
+^mozilla/trex.mk($|/)
+^mozilla/webtools($|/)
+EOF
+test -d mozilla || die "No mozilla dir here."
+find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
+rm -f $exfile
+status "making firefox-$REV.tar.bz2 ..."
+tar -cjpf firefox-$REV.tar.bz2 mozilla
+status "done."
+#EOF
diff --git a/www/firefox-devel/files/moz_pis_S50cleanhome b/www/firefox-devel/files/moz_pis_S50cleanhome
new file mode 100644
index 000000000..3de5565e3
--- /dev/null
+++ b/www/firefox-devel/files/moz_pis_S50cleanhome
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+
+# S50cleanhome
+# a script to clean up users' Mozilla home directories to make upgrading
+# less painful.
+
+# We run in our own subshell
+
+# First, verify protocol
+[ "$1" != "start" ] && exit 1
+[ -z "${MOZ_PIS_API}" -o ${MOZ_PIS_API} -ne 2 ] && exit 1
+[ -z "${MOZ_PIS_MOZBINDIR}" -o ! -d "${MOZ_PIS_MOZBINDIR}" ] && exit 1
+[ -z "${HOME}" -o ! -d "${HOME}" ] && exit 1
+[ -z "${MOZ_PIS_USER_DIR}" -o ! -d "${HOME}/${MOZ_PIS_USER_DIR}" ] && exit 1
+
+# Try to cleanup ${HOME}/${MOZ_PIS_USER_DIR}
+
+if [ -f "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" ]; then
+ sed -e '/Path=/! d' -e "s,Path=,${HOME}/${MOZ_PIS_USER_DIR}/," \
+ "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" \
+ | while read dir
+ do
+ [ ! -d "${dir}" ] && continue
+ # Debian does this for new builds
+ # rm -f "${dir}/XUL.mfasl"
+ # force a rebuild of compreg.dat and xpti.dat for new installations
+ [ "${dir}/compreg.dat" -ot "${MOZ_PIS_MOZBINDIR}/components.ini" ] &&
+ rm -f "${dir}/compatibility.ini" "${dir}/XUL.mfasl"
+ done
+fi
diff --git a/www/firefox-devel/files/mozconfig.in b/www/firefox-devel/files/mozconfig.in
new file mode 100644
index 000000000..4b0ccab41
--- /dev/null
+++ b/www/firefox-devel/files/mozconfig.in
@@ -0,0 +1,83 @@
+# .mozconfig.in -*-shell-script-*-
+# $FreeBSD: ports/www/firefox/files/mozconfig.in,v 1.29 2004/12/28 00:51:58 ahze Exp $
+######################################################################
+# standard opts from README
+export MOZ_PHOENIX=1
+mk_add_options MOZ_PHOENIX=1
+ac_add_options --enable-crypto
+ac_add_options --disable-tests
+ac_add_options --disable-mailnews
+ac_add_options --disable-composer
+ac_add_options --enable-default-toolkit=gtk2
+# See the following URL for approval email for using official branding
+# http://people.freebsd.org/~ahze/firefox_thunderbird-approved.txt
+ac_add_options --enable-official-branding
+######################################################################
+# FBSD specific
+export CPPFLAGS="@CPPFLAGS@"
+export CFLAGS="@CFLAGS@"
+export LIBS="@LIBS@"
+export LDFLAGS="@LDFLAGS@"
+export CONFIG_SH=/bin/sh
+export XP_UNIX=1
+mk_add_options XP_UNIX=1
+export PERL="@PERL@"
+mk_add_options PERL=$PERL
+# Configure options for installation
+ac_add_options --prefix=@FAKEDIR@
+ac_add_options --x-includes=@X11BASE@/include
+ac_add_options --x-libraries=@X11BASE@/lib
+######################################################################
+# Use ports for these libraries
+ac_add_options --with-system-jpeg=@LOCALBASE@
+ac_add_options --with-system-zlib
+ac_add_options --with-system-png=@LOCALBASE@
+ac_add_options --with-system-mng=@LOCALBASE@
+ac_add_options --without-system-nspr
+ac_add_options --with-gssapi=/usr
+######################################################################
+# set compile/link features
+ac_add_options --with-pthreads
+######################################################################
+# disable unneeded/unavailable
+ac_add_options --disable-auto-deps
+ac_add_options --disable-bidi
+ac_add_options --disable-dtd-debug
+ac_add_options --disable-jsd
+ac_add_options --disable-ldap
+ac_add_options --disable-pedantic
+ac_add_options --disable-profilesharing
+ac_add_options --disable-installer
+ac_add_options --enable-single-profile
+ac_add_options --disable-profilesharing
+ac_add_options --enable-image-decoders=png,gif,jpeg,bmp
+ac_add_options --enable-extensions="cookie,xml-rpc,xmlextras,pref,transformiix,universalchardet,webservices,inspector,p3p,gnomevfs"
+######################################################################
+# conditional from port Makefile
+#if test -n "$WITH_REORDER"; then
+# ac_add_options --enable-reorder
+#else
+# ac_add_options --disable-reorder
+#fi # test -n "$WITH_REORDER"
+if test -n "$WITH_DEBUG"; then
+ ac_add_options --enable-debug
+ ac_add_options --disable-strip
+else
+ ac_add_options --disable-debug
+ ac_add_options --enable-optimize=${WITH_OPTIMIZE}
+ ac_add_options --enable-strip
+fi # test -n "$WITH_DEBUG"
+if test -n "$WITH_LOGGING"; then
+ ac_add_options --enable-logging
+else
+ ac_add_options --disable-logging
+fi # test -n "$WITH_LOGGING"
+if test -z "$WITHOUT_XFT"; then
+ ac_add_options --enable-xft
+else
+ ac_add_options --disable-xft
+fi # test -z "$WITHOUT_XFT"
+if test -z "$WITH_SMB"; then
+ ac_add_options --disable-gnomevfs
+fi # test -z "$WITH_SMB"
+######################################################################
diff --git a/www/firefox-devel/files/patch-Double.cpp b/www/firefox-devel/files/patch-Double.cpp
new file mode 100644
index 000000000..a9b570c5d
--- /dev/null
+++ b/www/firefox-devel/files/patch-Double.cpp
@@ -0,0 +1,61 @@
+$FreeBSD: ports/www/firefox/files/patch-Double.cpp,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
+@@ -51,10 +51,10 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
+-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+-#else
++#if defined(__i386__)
+ fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
++#else
++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #endif
+ fp_except_t oldmask = fpsetmask(~allmask);
+ #endif
+@@ -75,22 +75,31 @@
+ #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
+ #define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+
++union ui32dun {
++ PRUint32 i[2];
++ double d;
++};
++
+ //-- Initialize Double related constants
+ #ifdef IS_BIG_ENDIAN
+-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+- 0xffffffff};
+-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
+-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
++const union ui32dun nanMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}};
++const union ui32dun infMask =
++ {{TX_DOUBLE_HI32_EXPMASK, 0}};
++const union ui32dun negInfMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}};
+ #else
+-const PRUint32 nanMask[2] = {0xffffffff,
+- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
+-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
+-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
++const union ui32dun nanMask =
++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}};
++const union ui32dun infMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK}};
++const union ui32dun negInfMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}};
+ #endif
+
+-const double Double::NaN = *((double*)nanMask);
+-const double Double::POSITIVE_INFINITY = *((double*)infMask);
+-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
++const double Double::NaN = nanMask.d;
++const double Double::POSITIVE_INFINITY = infMask.d;
++const double Double::NEGATIVE_INFINITY = negInfMask.d;
+
+ /*
+ * Determines whether the given double represents positive or negative
diff --git a/www/firefox-devel/files/patch-browser_app_mozilla.in b/www/firefox-devel/files/patch-browser_app_mozilla.in
new file mode 100644
index 000000000..492dacc52
--- /dev/null
+++ b/www/firefox-devel/files/patch-browser_app_mozilla.in
@@ -0,0 +1,465 @@
+--- browser/app/mozilla.in.orig Tue Oct 26 11:26:11 2004
++++ browser/app/mozilla.in Mon Feb 28 23:32:14 2005
+@@ -29,51 +29,83 @@
+ ## the mozilla-bin binary to work.
+ ##
+
++#
++# MOZ_PIS, "Mozilla Plugable Init Scripts"
++# MOZ_PIS_ is the name space used
++# These variables and there meaning are specified in
++# mozilla/xpfe/bootstrap/init.d/README
+ moz_pis_startstop_scripts()
+ {
+- MOZ_USER_DIR="%MOZ_USER_DIR%"
+- # MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts"
+- # These variables and there meaning are specified in
+- # mozilla/xpfe/bootstrap/init.d/README
+- MOZ_PIS_API=2
+- MOZ_PIS_MOZBINDIR="${dist_bin}"
+- MOZ_PIS_SESSION_PID="$$"
+- MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
+- export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
+-
+- case "${1}" in
+- "start")
+- for curr_pis in "${dist_bin}/init.d"/S* "${HOME}/${MOZ_USER_DIR}/init.d"/S* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "start" ;;
+- esac
+- fi
+- done
+- ;;
+- "stop")
+- for curr_pis in "${HOME}/${MOZ_USER_DIR}/init.d"/K* "${dist_bin}/init.d"/K* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "stop" ;;
+- esac
+- fi
+- done
+- ;;
+- *)
+- echo 1>&2 "$0: Internal error in moz_pis_startstop_scripts."
+- exit 1
+- ;;
+- esac
++ MOZ_PIS_API=2
++ MOZ_PIS_MOZBINDIR="${dist_bin}"
++ MOZ_PIS_SESSION_PID="$$"
++ MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
++ export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
++
++ case "${1}" in
++ "start")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/S* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/S*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "start"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ "stop")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/K* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/K*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "stop"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ *)
++ echo "$0: Internal error in moz_pis_startstop_scripts." 1>&2
++ exit 1
++ ;;
++ esac
+ }
+
+-#uncomment for debugging
++# uncomment for debugging
+ #set -x
+
+-moz_libdir=%MOZAPPDIR%
+-MRE_HOME=%MREDIR%
++#
++# variables
++#
++#location="new-tab"
++#MOZILLA_UILOCALE="en-US"
++#MOZILLA_UIREGION="US"
++
++#
++# working definitions
++#
++MOZ_USER_DIR="%MOZ_USER_DIR%"
++moz_libdir="%MOZAPPDIR%"
++MRE_HOME="%MREDIR%"
++
++debugging= # set the debugging level
++use_openFile="yes" # use openFile() for file/dir
++here=`pwd`
++
++if [ ! -d "${MRE_HOME}" ]; then
++ # use moz_libdir as MRE_HOME
++ MRE_HOME="${moz_libdir}"
++fi
++export MRE_HOME
+
+ # Use run-mozilla.sh in the current dir if it exists
+ # If not, then start resolving symlinks until we find run-mozilla.sh
+@@ -82,149 +114,217 @@
+ curdir=`dirname "$progname"`
+ progbase=`basename "$progname"`
+ run_moz="$curdir/run-mozilla.sh"
+-if test -x "$run_moz"; then
+- dist_bin="$curdir"
+- found=1
++if [ -x "$run_moz" ]; then
++ dist_bin="$curdir"
++ found=1
+ else
+- here=`/bin/pwd`
+- while [ -h "$progname" ]; do
+- bn=`basename "$progname"`
+- cd `dirname "$progname"`
+- progname=`/bin/ls -l "$bn" | sed -e 's/^.* -> //' `
+- if [ ! -x "$progname" ]; then
+- break
+- fi
+- curdir=`dirname "$progname"`
+- run_moz="$curdir/run-mozilla.sh"
+- if [ -x "$run_moz" ]; then
+- cd "$curdir"
+- dist_bin=`pwd`
+- run_moz="$dist_bin/run-mozilla.sh"
+- found=1
+- break
+- fi
+- done
+- cd "$here"
++ while [ -h "${progname}" ]; do
++ bn=`basename "${progname}"`
++ cd `dirname "${progname}"`
++ progname=`ls -l "${bn}" | sed -e 's/^.* -> //'`
++ if [ ! -x "$progname" ]; then
++ break
++ fi
++ curdir=`dirname "${progname}"`
++ run_moz="${curdir}/run-mozilla.sh"
++ if [ -x "${run_moz}" ]; then
++ cd "$curdir"
++ dist_bin=`pwd`
++ run_moz="${dist_bin}/run-mozilla.sh"
++ found=1
++ break
++ fi
++ done
++ cd "${here}"
+ fi
+ if [ $found = 0 ]; then
+- # Check default compile-time libdir
+- if [ -x "$moz_libdir/run-mozilla.sh" ]; then
+- dist_bin="$moz_libdir"
+- else
+- echo "Cannot find mozilla runtime directory. Exiting."
+- exit 1
+- fi
+-fi
+-
+-script_args=""
+-moreargs=""
+-debugging=0
+-MOZILLA_BIN="${progbase}-bin"
+-
+-# The following is to check for a currently running instance.
+-# This is taken almost verbatim from the Mozilla RPM package's launch script.
+-MOZ_CLIENT_PROGRAM="$dist_bin/mozilla-xremote-client"
+-check_running() {
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" 'ping()' 2>/dev/null >/dev/null
+- RETURN_VAL=$?
+- if [ $RETURN_VAL -eq 0 ]; then
+- echo 1
+- return 1
++ # Check default compile-time libdir
++ if [ -x "${moz_libdir}/run-mozilla.sh" ]; then
++ dist_bin="$moz_libdir"
++ run_moz="${dist_bin}/run-mozilla.sh"
+ else
+- echo 0
+- return 0
++ echo "$0: Cannot find mozilla runtime directory. Exiting." 1>&2
++ exit 1
+ fi
+-}
++fi
+
++MOZILLA_BIN="${progbase}-bin"
+ if [ "$OSTYPE" = "beos" ]; then
+- mimeset -F "$MOZILLA_BIN"
++ mimeset -F "$MOZILLA_BIN"
+ fi
+
+-ALREADY_RUNNING=`check_running`
++# test for binary apps in ${dist_bin}
++if [ -x "${dist_bin}/${MOZILLA_BIN}" ]; then
++ MOZILLA_BIN="${dist_bin}/${progbase}-bin"
++else
++ echo "$0: Cannot find mozilla binary executable. Exiting." 1>&2
++ exit 1
++fi
++if [ -x "${dist_bin}/mozilla-xremote-client" ]; then
++ MOZ_CLIENT_PROGRAM="${dist_bin}/mozilla-xremote-client -a ${progbase}"
++else
++ MOZ_CLIENT_PROGRAM="${MOZILLA_BIN} -remote -a ${progbase}"
++fi
+
+-################################################################ Parse Arguments
+-# If there's a command line argument but it doesn't begin with a -
+-# it's probably a url. Try to send it to a running instance.
+-_USE_EXIST=0
+-_optOne="$1"
+-case "${_optOne}" in
+- -*)
+- ;;
++# guest a default remote command
++_remote_cmd="xfeDoCommand(openBrowser)"
++
++# parse options
++script_args= # null
++moreargs= # null
++target= # null
++ALREADY_RUNNING="test"
++while [ $# -gt 0 ]
++do
++ if [ -n "${target}" ]; then
++ # well, this can't be the target if not last
++ moreargs="${moreargs} \"${target}\""
++ target= # null
++ fi
++ case "$1" in
++ # preserve [pP] for profile
++ --pure | -pure)
++ MOZILLA_BIN="${MOZILLA_BIN}.pure"
++ shift
++ ;;
++ -g | --debug)
++ script_args="${script_args} -g"
++ debugging=1
++ shift
++ ;;
++ -d | --debugger)
++ if [ -n "$2" ]; then
++ script_args="${script_args} -d $2"
++ shift 2
++ else
++ "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Ll]ocale)
++ if [ -n "$2" ]; then
++ uilocale="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Rr]egion)
++ if [ -n "$2" ]; then
++ uiregion="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -browser)
++ # browser is default for firefox
++ shift
++ ;;
++ -turbo | -nosplash | -quiet)
++ # use remote even with this
++ moreargs="${moreargs} $1"
++ shift
++ ;;
++ -*)
++ # don't use remote with options
++ ALREADY_RUNNING= # null
++ moreargs="${moreargs} $1"
++ shift
++ ;;
+ *)
+- _USE_EXIST=1
+- ;;
+-esac
+-
+-_optLast=
+-for i in "$@"; do
+- _optLast="${i}"
+-done #last arg
+-
+-if [ `expr "${_optLast}" : '.*:/.*'` -eq 0 -a \( -f "${_optLast}" -o -d "${_optLast}" \) ]; then
+- # Last argument seems to be a local file/directory
+- # Check, if it is absolutely specified (ie. /home/foo/file vs. ./file)
+- # If it is just "relatively" (./file) specified, make it absolutely
+- [ `expr "${_optLast}" : '/.*'` -eq 0 ] && _optLast="file://`pwd`/${_optLast}"
+-fi
+-################################################################ Parse Arguments
+-
+-########################################################################### Main
+-if [ $ALREADY_RUNNING -eq 1 ]; then
+- # There's an instance already running. Use it.
+- # Any command line args passed in?
+- if [ $# -gt 0 ]; then
+- # There were "some" command line args.
+- if [ ${_USE_EXIST} -eq 1 ]; then
+- # We should use an existing instance, as _USE_EXIST=$_USE_EXIST=-1
+- _remote_cmd="openURL(${_optLast})"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "${_remote_cmd}"
+- unset _remote_cmd
+- exit $?
+- fi
++ target="$1"
++ shift
++ ;;
++ esac
++done
++
++# test for a running copy of firefox
++# seems this is not needed
++#if [-n "${ALREADY_RUNNING}" ]; then
++# if [ -n "${DISPLAY}" ]; then
++# if [ -n "${debugging}" ]; then
++# echo "${run_moz} ${MOZ_CLIENT_PROGRAM} ping()"
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' && ALREADY_RUNNING="yes"
++# else
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' >/dev/null 2>&1 &&
++# ALREADY_RUNNING="yes"
++# fi
++# elif [ -n "${debugging}" ]; then
++# echo "$0: WARN, no DISPLAY environment" 1>&2
++# fi
++#fi
++
++# process target
++if [ -n "${target}" ]; then
++ moreargs="${moreargs} \"${target}\""
++ if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ `expr "${target}" : '.*:.*'` -eq 0 ]; then
++ if [ `expr "${target}" : '/.*'` -eq 0 ]; then
++ target="${here}/${target}"
++ fi
++ if [ -r "${target}" -o -d "${target}" ]; then
++ [ -n "${use_openFile}" ] || target="file://${target}"
++ else
++ echo "$0: WARN, target: ${target} not an URI/file/dir" 1>&2
++ ALREADY_RUNNING= # null
++ fi
+ else
+- # No command line args. Open new window/tab
+- #exec "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- exit $?
++ # an former URI, don't use openFile
++ use_openFile= # null
+ fi
++ fi
+ fi
+-# Default action - no running instance or _USE_EXIST (${_USE_EXIST}) ! -eq 1
+-########################################################################### Main
+
+-while [ $# -gt 0 ]
+-do
+- case "$1" in
+- -p | --pure | -pure)
+- MOZILLA_BIN="${MOZILLA_BIN}.pure"
+- shift
+- ;;
+- -g | --debug)
+- script_args="$script_args -g"
+- debugging=1
+- shift
+- ;;
+- -d | --debugger)
+- script_args="$script_args -d $2"
+- shift 2
+- ;;
+- *)
+- moreargs="$moreargs \"$1\""
+- shift 1
+- ;;
+- esac
+-done
++# try remote protocol if running
++if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ -n "${target}" ]; then
++ if [ -n "${use_openFile}" ]; then
++ _remote_cmd="openFile(${target})"
++ elif [ -n "${location}" ]; then
++ _remote_cmd="openURL(${target},${location})"
++ else
++ _remote_cmd="openURL(${target})"
++ fi
++ fi
++ # FIXME problems with freedesktop StartupNotify
++ if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd}"
++ fi
++ ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} && exit 0
++fi
++
++# fallback to direct invocation
++
++# UILocale, UIRegion
++if [ -z "${uilocale}" -a -n "${MOZILLA_UILOCALE}" ]; then
++ uilocale="${MOZILLA_UILOCALE}"
++fi
++if [ -z "${uiregion}" -a -n "${MOZILLA_UIREGION}" ]; then
++ uiregion="${MOZILLA_UIREGION}"
++fi
++if [ -n "${uiregion}" -a -z "${uilocale}" ]; then
++ uilocale="en-US"
++fi
++if [ -n "${uilocale}" ]; then
++ if [ -n "${uiregion}" ]; then
++ moreargs="-UIRegion ${uiregion} ${moreargs}"
++ fi
++ moreargs="-UILocale ${uilocale} ${moreargs}"
++fi
+
+-export MRE_HOME
+-eval "set -- $moreargs"
++# real invocation
++eval "set -- ${moreargs}"
+
+ ## Start addon scripts
+ moz_pis_startstop_scripts "start"
+
+-if [ $debugging = 1 ]
+-then
+- echo $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"
++if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZILLA_BIN} $@"
+ fi
+-"$dist_bin/run-mozilla.sh" $script_args "$dist_bin/$MOZILLA_BIN" "$@"
++${run_moz} ${script_args} ${MOZILLA_BIN} "$@"
+ exitcode=$?
+
+ ## Stop addon scripts
diff --git a/www/firefox-devel/files/patch-bugzilla149334 b/www/firefox-devel/files/patch-bugzilla149334
new file mode 100644
index 000000000..fe1be5bc8
--- /dev/null
+++ b/www/firefox-devel/files/patch-bugzilla149334
@@ -0,0 +1,342 @@
+Index: gfx/idl/nsIFreeType2.idl
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/idl/nsIFreeType2.idl,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsIFreeType2.idl
+--- gfx/idl/nsIFreeType2.idl 15 Apr 2004 23:30:02 -0000 1.10
++++ gfx/idl/nsIFreeType2.idl 26 May 2004 10:00:54 -0000
+@@ -76,10 +76,11 @@ native FT_Pointer(FT_Pointer);
+ native FT_Sfnt_Tag(FT_Sfnt_Tag);
+ native FT_Size(FT_Size);
+
+-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
++[ptr] native FTC_ImageType_p(FTC_ImageType);
+ native FTC_Face_Requester(FTC_Face_Requester);
+ native FTC_Font(FTC_Font);
+-native FTC_Image_Cache(FTC_Image_Cache);
++native FTC_FaceID(FTC_FaceID);
++native FTC_ImageCache(FTC_ImageCache);
+ native FTC_Manager(FTC_Manager);
+
+ // #ifdef MOZ_SVG
+@@ -99,7 +100,7 @@ interface nsIFreeType2 : nsISupports
+
+ readonly attribute FT_Library library;
+ readonly attribute FTC_Manager FTCacheManager;
+- readonly attribute FTC_Image_Cache ImageCache;
++ readonly attribute FTC_ImageCache ImageCache;
+
+ void doneFace(in FT_Face face);
+ void doneFreeType(in FT_Library lib);
+@@ -115,16 +116,16 @@ interface nsIFreeType2 : nsISupports
+ void outlineDecompose(in FT_Outline_p outline,
+ in const_FT_Outline_Funcs_p funcs, in voidPtr p);
+ void setCharmap(in FT_Face face, in FT_CharMap charmap);
+- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
++ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
+ in FT_UInt gindex, out FT_Glyph glyph);
+- void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
+- out FT_Face face, out FT_Size size);
++ void managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
++ out FT_Face face);
+ void managerDone(in FTC_Manager manager);
+ void managerNew(in FT_Library lib, in FT_UInt max_faces,
+ in FT_UInt max_sizes, in FT_ULong max_bytes,
+ in FTC_Face_Requester requester, in FT_Pointer req_data,
+ out FTC_Manager manager);
+- void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
++ void imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
+ /* #ifdef MOZ_SVG */
+ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
+ in FT_Vector_p delta);
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 17 Apr 2004 21:52:29 -0000 1.25
++++ gfx/src/freetype/nsFreeType.cpp 26 May 2004 10:00:54 -0000
+@@ -110,11 +110,11 @@ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
+ {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
+ {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
+- {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
+- {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
++ {"FTC_ImageCache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
++ {"FTC_Manager_LookupFace", NS_FT2_OFFSET(nsFTC_Manager_LookupFace), PR_TRUE},
+ {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
+ {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
+- {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
++ {"FTC_ImageCache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
+ // #ifdef MOZ_SVG
+ {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
+ {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
+@@ -282,7 +282,7 @@ nsFreeType2::SetCharmap(FT_Face face, FT
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
++nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
+ FT_UInt glyphID, FT_Glyph *glyph)
+ {
+ // call the FreeType2 function via the function pointer
+@@ -291,11 +291,11 @@ nsFreeType2::ImageCacheLookup(FTC_Image_
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
+- FT_Face *face, FT_Size *size)
++nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
++ FT_Face *face)
+ {
+ // call the FreeType2 function via the function pointer
+- FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
++ FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
+ return error ? NS_ERROR_FAILURE : NS_OK;
+ }
+
+@@ -320,7 +320,7 @@ nsFreeType2::ManagerNew(FT_Library libra
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
++nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
+ {
+ // call the FreeType2 function via the function pointer
+ FT_Error error = nsFTC_Image_Cache_New(manager, cache);
+@@ -389,7 +389,7 @@ nsFreeType2::SupportsExtFunc(PRBool *res
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
++nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
+ {
+ *aCache = mImageCache;
+ return NS_OK;
+Index: gfx/src/freetype/nsFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.h,v
+retrieving revision 1.17
+diff -u -3 -p -r1.17 nsFreeType.h
+--- gfx/src/freetype/nsFreeType.h 17 Apr 2004 21:52:29 -0000 1.17
++++ gfx/src/freetype/nsFreeType.h 26 May 2004 10:00:54 -0000
+@@ -120,13 +120,13 @@ typedef FT_Error (*FT_Outline_Decompose_
+ typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
+ typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
+ typedef FT_Error (*FTC_Image_Cache_Lookup_t)
+- (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
+-typedef FT_Error (*FTC_Manager_Lookup_Size_t)
+- (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
++ (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
++typedef FT_Error (*FTC_Manager_LookupFace_t)
++ (FTC_Manager, FTC_FaceID, FT_Face*);
+ typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
+ typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
+ FTC_Face_Requester, FT_Pointer, FTC_Manager*);
+-typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
++typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
+ // #ifdef MOZ_SVG
+ typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
+ typedef FT_Error (*FT_Get_Kerning_t)
+@@ -181,7 +181,7 @@ protected:
+ FT_Outline_Decompose_t nsFT_Outline_Decompose;
+ FT_Set_Charmap_t nsFT_Set_Charmap;
+ FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
+- FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
++ FTC_Manager_LookupFace_t nsFTC_Manager_LookupFace;
+ FTC_Manager_Done_t nsFTC_Manager_Done;
+ FTC_Manager_New_t nsFTC_Manager_New;
+ FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
+@@ -229,7 +229,7 @@ protected:
+ PRLibrary *mSharedLib;
+ FT_Library mFreeTypeLibrary;
+ FTC_Manager mFTCacheManager;
+- FTC_Image_Cache mImageCache;
++ FTC_ImageCache mImageCache;
+
+ static nsHashtable *sFontFamilies;
+ static nsHashtable *sRange1CharSetNames;
+Index: gfx/src/ps/nsFontMetricsPS.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v
+retrieving revision 1.43
+diff -u -3 -p -r1.43 nsFontMetricsPS.cpp
+--- gfx/src/ps/nsFontMetricsPS.cpp 17 Apr 2004 21:52:31 -0000 1.43
++++ gfx/src/ps/nsFontMetricsPS.cpp 26 May 2004 10:01:03 -0000
+@@ -1140,10 +1140,10 @@ nsFontPSFreeType::Init(nsITrueTypeFontCa
+
+ mPixelSize = NSToIntRound(app2dev * mFont->size);
+
+- mImageDesc.font.face_id = (void*)mEntry;
+- mImageDesc.font.pix_width = mPixelSize;
+- mImageDesc.font.pix_height = mPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
++ mImageDesc->width = mPixelSize;
++ mImageDesc->height = mPixelSize;
++ mImageDesc->flags = 0;
+
+ nsresult rv;
+ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
+@@ -1189,7 +1189,7 @@ nsFontPSFreeType::GetWidth(const PRUnich
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache iCache;
++ FTC_ImageCache iCache;
+ nsresult rv = mFt2->GetImageCache(&iCache);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Failed to get Image Cache");
+@@ -1227,8 +1227,8 @@ nsFontPSFreeType::getFTFace()
+
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ NS_ASSERTION(rv==0, "failed to get face/size");
+ if (rv)
+ return nsnull;
+@@ -1621,16 +1621,16 @@ void nsFT2Type8Generator::GeneratePSFont
+ mEntry->GetFamilyName(fontName);
+ mEntry->GetStyleName(styleName);
+
+- mImageDesc.font.face_id = (void*)mEntry;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
+ // TT glyph has no relation to size
+- mImageDesc.font.pix_width = 16;
+- mImageDesc.font.pix_height = 16;
+- mImageDesc.image_type = 0;
++ mImageDesc->width = 16;
++ mImageDesc->height = 16;
++ mImageDesc->flags = 0;
+ FT_Face face = nsnull;
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ if (NS_FAILED(rv))
+ return;
+
+Index: gfx/src/ps/nsFontMetricsPS.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFontMetricsPS.h
+--- gfx/src/ps/nsFontMetricsPS.h 17 Apr 2004 21:52:31 -0000 1.25
++++ gfx/src/ps/nsFontMetricsPS.h 26 May 2004 10:01:03 -0000
+@@ -319,7 +319,7 @@ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+
+
+ static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
+@@ -362,7 +362,7 @@ public:
+ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
+ nsCOMPtr<nsIFreeType2> mFt2;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ };
+ #endif
+
+Index: gfx/src/x11shared/nsFontFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.cpp,v
+retrieving revision 1.14
+diff -u -3 -p -r1.14 nsFontFreeType.cpp
+--- gfx/src/x11shared/nsFontFreeType.cpp 17 Apr 2004 21:52:34 -0000 1.14
++++ gfx/src/x11shared/nsFontFreeType.cpp 26 May 2004 10:01:03 -0000
+@@ -177,7 +177,7 @@ nsFreeTypeFont::getFTFace()
+ FTC_Manager mgr;
+ nsresult rv;
+ mFt2->GetFTCacheManager(&mgr);
+- rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
++ rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
+ if (NS_FAILED(rv))
+ return nsnull;
+@@ -191,22 +191,15 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ PRBool embedded_bimap = PR_FALSE;
+ mFaceID = aFaceID;
+ mPixelSize = aPixelSize;
+- mImageDesc.font.face_id = (void*)mFaceID;
+- mImageDesc.font.pix_width = aPixelSize;
+- mImageDesc.font.pix_height = aPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mFaceID;
++ mImageDesc->width = aPixelSize;
++ mImageDesc->height = aPixelSize;
++ mImageDesc->flags = 0;
+
+ if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+- mImageDesc.image_type |= ftc_image_mono;
+ anti_alias = PR_FALSE;
+ }
+
+- if (nsFreeType2::gFreeType2Autohinted)
+- mImageDesc.image_type |= ftc_image_flag_autohinted;
+-
+- if (nsFreeType2::gFreeType2Unhinted)
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+-
+ PRUint32 num_embedded_bitmaps, i;
+ PRInt32* embedded_bitmapheights;
+ mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
+@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ if (embedded_bitmapheights[i] == aPixelSize) {
+ embedded_bimap = PR_TRUE;
+ // unhinted must be set for embedded bitmaps to be used
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+ break;
+ }
+ }
+@@ -312,7 +304,7 @@ nsFreeTypeFont::doGetBoundingMetrics(con
+ if (!face)
+ return NS_ERROR_FAILURE;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return NS_ERROR_FAILURE;
+@@ -401,7 +393,7 @@ nsFreeTypeFont::GetWidth(const PRUnichar
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+@@ -723,7 +715,7 @@ nsFreeTypeXImage::DrawString(nsRendering
+ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
+ #endif
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+Index: gfx/src/x11shared/nsFontFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.h,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsFontFreeType.h
+--- gfx/src/x11shared/nsFontFreeType.h 17 Apr 2004 21:52:34 -0000 1.10
++++ gfx/src/x11shared/nsFontFreeType.h 26 May 2004 10:01:03 -0000
+@@ -110,7 +110,7 @@ protected:
+ XImage *GetXImage(PRUint32 width, PRUint32 height);
+ nsITrueTypeFontCatalogEntry *mFaceID;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ };
+
diff --git a/www/firefox-devel/files/patch-build_unix_mozilla-xpcom.pc.in b/www/firefox-devel/files/patch-build_unix_mozilla-xpcom.pc.in
new file mode 100644
index 000000000..4e982a544
--- /dev/null
+++ b/www/firefox-devel/files/patch-build_unix_mozilla-xpcom.pc.in
@@ -0,0 +1,8 @@
+--- build/unix/mozilla-xpcom.pc.in.orig Thu Jun 24 12:23:09 2004
++++ build/unix/mozilla-xpcom.pc.in Thu Jun 24 12:23:18 2004
+@@ -8,4 +8,4 @@
+ Version: %MOZILLA_VERSION%
+ Requires: mozilla-nspr = %MOZILLA_VERSION%
+ Libs: -L${libdir} -lxpcom
+-Cflags: -I${includedir}/xpcom -I${includedir}/string
++Cflags: -I${includedir}/xpcom -I${includedir}/string -I${includedir}
diff --git a/www/firefox-devel/files/patch-build_unix_run-mozilla.sh b/www/firefox-devel/files/patch-build_unix_run-mozilla.sh
new file mode 100644
index 000000000..ab658a150
--- /dev/null
+++ b/www/firefox-devel/files/patch-build_unix_run-mozilla.sh
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-build_unix_run-mozilla.sh,v 1.5 2004/02/11 19:30:49 marcus Exp $
+
+--- build/unix/run-mozilla.sh.orig Mon Dec 15 12:27:28 2003
++++ build/unix/run-mozilla.sh Wed Feb 11 14:24:17 2004
+@@ -355,7 +355,7 @@
+ fi
+ ##
+ ## Set LD_LIBRARY_PATH
+-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
++LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+ if [ -n "$LD_LIBRARYN32_PATH" ]
+ then
+ LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
+@@ -442,6 +442,9 @@
+ #
+ export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
+ export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
++
++MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
++export MOZ_PLUGIN_PATH
+
+ if [ $moz_debug -eq 1 ]
+ then
diff --git a/www/firefox-devel/files/patch-config-mkdepend-imakemdep.h b/www/firefox-devel/files/patch-config-mkdepend-imakemdep.h
new file mode 100644
index 000000000..424ac6784
--- /dev/null
+++ b/www/firefox-devel/files/patch-config-mkdepend-imakemdep.h
@@ -0,0 +1,12 @@
+$FreeBSD: ports/www/firefox/files/patch-config-mkdepend-imakemdep.h,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998
++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003
+@@ -278,4 +278,7 @@
+ "-D__i386__",
+ # endif
++# if defined(__amd64__) || defined(__x86_64__)
++ "-D__amd64__ -D__x86_64__",
++# endif
+ # ifdef __GNUC__
+ "-traditional",
diff --git a/www/firefox-devel/files/patch-config-rules.mk b/www/firefox-devel/files/patch-config-rules.mk
new file mode 100644
index 000000000..f8697ee4c
--- /dev/null
+++ b/www/firefox-devel/files/patch-config-rules.mk
@@ -0,0 +1,16 @@
+$FreeBSD: ports/www/firefox/files/patch-config-rules.mk,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- config/rules.mk.orig Tue Aug 26 13:28:47 2003
++++ config/rules.mk Sun Feb 1 15:11:41 2004
+@@ -444,7 +444,11 @@
+
+ ifeq ($(OS_ARCH),FreeBSD)
+ ifdef IS_COMPONENT
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
++else
+ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
++endif
+ endif
+ endif
+
diff --git a/www/firefox-devel/files/patch-config::mkdepend::Makefile.in b/www/firefox-devel/files/patch-config::mkdepend::Makefile.in
new file mode 100644
index 000000000..bace012a2
--- /dev/null
+++ b/www/firefox-devel/files/patch-config::mkdepend::Makefile.in
@@ -0,0 +1,10 @@
+--- config/mkdepend/Makefile.in.orig Sun Dec 12 07:36:57 2004
++++ config/mkdepend/Makefile.in Sun Dec 12 07:37:55 2004
+@@ -57,6 +57,7 @@
+ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\"
++HOST_CFLAGS += $(XCFLAGS)
+
+ ifdef GNU_CC
+ _GCCDIR = $(shell $(CC) -print-file-name=include)
diff --git a/www/firefox-devel/files/patch-configure b/www/firefox-devel/files/patch-configure
new file mode 100644
index 000000000..9e60372ad
--- /dev/null
+++ b/www/firefox-devel/files/patch-configure
@@ -0,0 +1,38 @@
+--- configure.orig Fri Feb 13 01:06:29 2004
++++ configure Fri Feb 13 01:07:17 2004
+@@ -9181,7 +9181,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9187 "configure"
+ #include "confdefs.h"
+@@ -9212,7 +9212,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
+@@ -9222,7 +9222,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9228 "configure"
+ #include "confdefs.h"
+@@ -9253,7 +9253,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ fi
diff --git a/www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp b/www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
new file mode 100644
index 000000000..7c07aad7f
--- /dev/null
+++ b/www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
@@ -0,0 +1,48 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.cpp.orig Wed Nov 19 01:20:47 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp Tue Feb 10 02:52:26 2004
+@@ -323,11 +323,11 @@
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly",
+ &mStartLinksOnlyPref);
+
+- PRBool isSoundEnabled = PR_TRUE;
++ mIsSoundEnabled = PR_TRUE;
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound",
+- &isSoundEnabled);
++ &mIsSoundEnabled);
+ nsXPIDLCString soundStr;
+- if (isSoundEnabled) {
++ if (mIsSoundEnabled && mIsSoundEnabled) {
+ prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL",
+ getter_Copies(soundStr));
+ }
+@@ -758,7 +758,7 @@
+ }
+ else {
+ // No find string to backspace in!
+- if (mIsBackspaceProtectOn) {
++ if (mIsBackspaceProtectOn && mIsSoundEnabled) {
+ // This flag should be on only if the last key was a backspace.
+ // It keeps us from accidentally hitting backspace too many times and
+ // going back in history when we really just wanted to clear
+@@ -1012,7 +1012,9 @@
+
+ // Error sound (don't fire when backspace is pressed, they're
+ // trying to correct the mistake!)
+- PlayNotFoundSound();
++ if (mIsSoundEnabled) {
++ PlayNotFoundSound();
++ }
+
+ // Remove bad character from buffer, so we can continue typing from
+ // last matched character
+@@ -1059,7 +1061,7 @@
+ void
+ nsTypeAheadFind::PlayNotFoundSound()
+ {
+- if (mNotFoundSoundURL.IsEmpty()) // no sound
++ if (mNotFoundSoundURL.IsEmpty() || !mIsSoundEnabled) // no sound
+ return;
+ if (!mSoundInterface) {
+ mSoundInterface = do_CreateInstance("@mozilla.org/sound;1");
diff --git a/www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h b/www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
new file mode 100644
index 000000000..86c9567a8
--- /dev/null
+++ b/www/firefox-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
@@ -0,0 +1,14 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig Fri May 23 22:00:33 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.h Mon Feb 9 22:21:43 2004
+@@ -194,6 +194,9 @@
+
+ nsCString mNotFoundSoundURL;
+
++ // Move the sound enabled boolean out for all methods to access.
++ PRBool mIsSoundEnabled;
++
+ // PRBool's are used instead of PRPackedBool's where the address of the
+ // boolean variable is getting passed into a method. For example:
+ // GetBoolPref("accessibility.typeaheadfind.linksonly", &mLinksOnlyPref);
diff --git a/www/firefox-devel/files/patch-nspr-unix.c b/www/firefox-devel/files/patch-nspr-unix.c
new file mode 100644
index 000000000..e453013b5
--- /dev/null
+++ b/www/firefox-devel/files/patch-nspr-unix.c
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-nspr-unix.c,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
++++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
+@@ -65,7 +65,8 @@
+ * PRInt32* pointer to a _PRSockLen_t* pointer.
+ */
+ #if defined(HAVE_SOCKLEN_T) \
+- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
++ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
++ || defined(FREEBSD)
+ #define _PRSockLen_t socklen_t
+ #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
+ || defined(AIX4_1) || defined(LINUX) || defined(SONY) \
+@@ -73,7 +74,7 @@
+ || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
+ || defined(NEXTSTEP) || defined(QNX)
+ #define _PRSockLen_t int
+-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
++#elif (defined(AIX) && !defined(AIX4_1)) \
+ || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
+ || defined(DGUX) || defined(VMS) || defined(NTO)
+ #define _PRSockLen_t size_t
diff --git a/www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg b/www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg
new file mode 100644
index 000000000..997531b5b
--- /dev/null
+++ b/www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg
@@ -0,0 +1,163 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.cfg.orig Wed Jan 2 18:38:25 2002
++++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 15:09:53 2004
+@@ -91,7 +91,7 @@
+ #define PR_ALIGN_OF_DOUBLE 4
+ #define PR_ALIGN_OF_POINTER 4
+
+-#elif defined(__alpha)
++#elif defined(__alpha__)
+
+ #define IS_LITTLE_ENDIAN 1
+ #undef IS_BIG_ENDIAN
+@@ -138,6 +138,149 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
++#elif defined(__sparc64__)
++#undef IS_LITTLE_ENDIAN
++#define IS_BIG_ENDIAN 1
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_DOUBLE 8
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_POINTER 8
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++
++#elif defined(__ia64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#elif defined(__amd64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
+ #else
+
+ #error "Unknown CPU architecture"
diff --git a/www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.h b/www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.h
new file mode 100644
index 000000000..e96b317c8
--- /dev/null
+++ b/www/firefox-devel/files/patch-nsprpub-pr-include-md-_freebsd.h
@@ -0,0 +1,15 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 23:36:13 2003
++++ nsprpub/pr/include/md/_freebsd.h Mon Feb 9 22:24:39 2004
+@@ -50,6 +50,10 @@
+ #define _PR_SI_ARCHITECTURE "alpha"
+ #elif defined(__sparc__)
+ #define _PR_SI_ARCHITECTURE "sparc"
++#elif defined(__ia64__)
++#define _PR_SI_ARCHITECTURE "ia64"
++#elif defined(__amd64__)
++#define _PR_SI_ARCHITECTURE "amd64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
diff --git a/www/firefox-devel/files/patch-nsprpub-pr-include-md-_pth.h b/www/firefox-devel/files/patch-nsprpub-pr-include-md-_pth.h
new file mode 100644
index 000000000..1f8159c70
--- /dev/null
+++ b/www/firefox-devel/files/patch-nsprpub-pr-include-md-_pth.h
@@ -0,0 +1,11 @@
+--- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004
++++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004
+@@ -90,7 +90,7 @@
+ #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
+ #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
+ #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
+-#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
++#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
+ #if defined(DARWIN)
+ #define _PT_PTHREAD_CONDATTR_INIT(x) 0
+ #else
diff --git a/www/firefox-devel/files/patch-nsprpub-pr-src-io-prprf.c b/www/firefox-devel/files/patch-nsprpub-pr-src-io-prprf.c
new file mode 100644
index 000000000..38bd959ae
--- /dev/null
+++ b/www/firefox-devel/files/patch-nsprpub-pr-src-io-prprf.c
@@ -0,0 +1,14 @@
+--- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004
++++ nsprpub/pr/src/io/prprf.c Tue Jun 15 13:17:30 2004
+@@ -51,7 +51,10 @@
+ ** Note: on some platforms va_list is defined as an array,
+ ** and requires array notation.
+ */
+-#if (defined(LINUX) && defined(__x86_64__))
++#if defined(__amd64__)
++#include <stdarg.h>
++#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar))
++#elif (defined(LINUX) && defined(__x86_64__))
+ #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar))
+ #elif (defined(LINUX) && defined(__powerpc__)) || \
+ (defined(LINUX) && defined(__s390__)) || \
diff --git a/www/firefox-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c b/www/firefox-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c
new file mode 100644
index 000000000..537577dec
--- /dev/null
+++ b/www/firefox-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c
@@ -0,0 +1,31 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c,v 1.4 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 21:59:47 2003
++++ nsprpub/pr/src/pthreads/ptio.c Fri Oct 17 05:25:43 2003
+@@ -189,7 +189,7 @@
+ #endif
+ #endif
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ static PRBool _pr_ipv6_v6only_on_by_default;
+ /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */
+ #ifndef IPV6_V6ONLY
+@@ -1154,7 +1154,7 @@
+ _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE);
+ PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr);
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option
+ * is turned on by default, contrary to what RFC 3493, Section
+ * 5.3 says. So we have to turn it off. Find out whether we
+@@ -3462,7 +3462,7 @@
+ if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno);
+ else
+ {
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default)
+ {
+ int on = 0;
diff --git a/www/firefox-devel/files/patch-security-coreconf-FreeBSD.mk b/www/firefox-devel/files/patch-security-coreconf-FreeBSD.mk
new file mode 100644
index 000000000..3e0e14aca
--- /dev/null
+++ b/www/firefox-devel/files/patch-security-coreconf-FreeBSD.mk
@@ -0,0 +1,28 @@
+--- security/coreconf/FreeBSD.mk.orig Wed Mar 26 20:17:25 2003
++++ security/coreconf/FreeBSD.mk Sun Nov 21 22:59:49 2004
+@@ -43,8 +43,12 @@
+ ifeq ($(OS_TEST),alpha)
+ CPU_ARCH = alpha
+ else
++ifeq ($(OS_TEST),amd64)
++CPU_ARCH = amd64
++else
+ CPU_ARCH = x86
+ endif
++endif
+
+ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
+
+@@ -71,7 +75,11 @@
+ DLL_SUFFIX = so.1.0
+ endif
+
+-MKSHLIB = $(CC) $(DSO_LDOPTS)
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@
++else
++MKSHLIB = $(CC) -Wl,-Bsymbolic $(DSO_LDOPTS) -o $@
++endif
+ ifdef MAPFILE
+ # Add LD options to restrict exported symbols to those in the map file
+ endif
diff --git a/www/firefox-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/www/firefox-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
new file mode 100644
index 000000000..7f8e55f53
--- /dev/null
+++ b/www/firefox-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
@@ -0,0 +1,29 @@
+--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004
++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004
+@@ -143,7 +143,7 @@
+ PR_END_MACRO
+
+ // Attempt to open libgconf
+- gconfLib = LoadVersionedLibrary("gconf-2", ".4");
++ gconfLib = PR_LoadLibrary("libgconf-2.so");
+ ENSURE_LIB(gconfLib);
+
+ GET_LIB_FUNCTION(gconf, gconf_client_get_default);
+@@ -151,7 +151,7 @@
+ GET_LIB_FUNCTION(gconf, gconf_client_get_bool);
+
+ // Attempt to open libgnome
+- gnomeLib = LoadVersionedLibrary("gnome-2", ".0");
++ gnomeLib = PR_LoadLibrary("libgnome-2.so");
+ ENSURE_LIB(gnomeLib);
+
+ GET_LIB_FUNCTION(gnome, gnome_url_show);
+@@ -160,7 +160,7 @@
+ GET_LIB_FUNCTION(gnome, gnome_program_get);
+
+ // Attempt to open libgnomevfs
+- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0");
++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so");
+ ENSURE_LIB(vfsLib);
+
+ GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name);
diff --git a/www/firefox-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc b/www/firefox-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
new file mode 100644
index 000000000..9a41bbfc4
--- /dev/null
+++ b/www/firefox-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004
++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Tue Jun 15 12:52:36 2004
+@@ -8,7 +8,7 @@
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
diff --git a/www/firefox-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in b/www/firefox-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
new file mode 100644
index 000000000..e9f125165
--- /dev/null
+++ b/www/firefox-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
@@ -0,0 +1,56 @@
+$FreeBSD: ports/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in,v 1.4 2004/10/24 06:34:13 peter Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 15:06:40 2004
+@@ -49,6 +49,9 @@
+ ifeq (86,$(findstring 86,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
+ endif
++ifeq (amd64,$(OS_TEST))
++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp
++endif
+ endif
+ #
+ # New code for Linux, et. al., with gcc
+@@ -60,7 +63,7 @@
+ endif
+ endif
+ # IA64 Linux
+-ifneq (,$(filter Linux,$(OS_ARCH)))
++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
+ ifneq (,$(findstring ia64,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
+ ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
+@@ -106,9 +109,15 @@
+ ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
+ endif
+ #
++# FreeBSD/Alpha
++#
++ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
++CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
++endif
++#
+ # Linux/Alpha
+ #
+-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
++ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
+ endif
+ #
+@@ -294,6 +303,15 @@
+ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
+ CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# FreeBSD/SPARC64
++#
++ifeq ($(OS_ARCH),FreeBSD)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
++endif
+ endif
+ #
+ # Solaris/SPARC
diff --git a/www/firefox-devel/files/patch-xptcall-alpha b/www/firefox-devel/files/patch-xptcall-alpha
new file mode 100644
index 000000000..f5d802f73
--- /dev/null
+++ b/www/firefox-devel/files/patch-xptcall-alpha
@@ -0,0 +1,461 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-alpha,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
+@@ -0,0 +1,184 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++__asm__("invoke_copy_to_stack") __attribute__((unused));
++
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
++ {
++ if(s->IsPtrData())
++ {
++ *d = (PRUint64)s->ptr;
++ continue;
++ }
++ switch(s->type)
++ {
++ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
++ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
++ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
++ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
++ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
++ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
++ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
++ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // convert floats to doubles if they are to be passed
++ // via registers so we can just deal with doubles later
++ union { PRUint64 u64; double d; } t;
++ t.d = (double)s->val.f;
++ *d = t.u64;
++ }
++ else
++ // otherwise copy to stack normally
++ *d = (PRUint64)s->val.u32;
++ break;
++ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
++ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
++ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
++ default:
++ // all the others are plain pointer types
++ *d = (PRUint64)s->val.p;
++ break;
++ }
++ }
++}
++
++/*
++ * XPTC_PUBLIC_API(nsresult)
++ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
++ */
++__asm__(
++ "#### XPTC_InvokeByIndex ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".globl XPTC_InvokeByIndex\n\t"
++ ".ent XPTC_InvokeByIndex\n"
++"XPTC_InvokeByIndex:\n\t"
++ ".frame $15,32,$26,0\n\t"
++ ".mask 0x4008000,-32\n\t"
++ "ldgp $29,0($27)\n"
++"$XPTC_InvokeByIndex..ng:\n\t"
++ "subq $30,32,$30\n\t"
++ "stq $26,0($30)\n\t"
++ "stq $15,8($30)\n\t"
++ "bis $30,$30,$15\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
++ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
++ * is required for storage of those passed via registers.
++ */
++
++ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
++ "cmplt $2,$18,$1\n\t"
++ "cmovne $1,$18,$2\n\t"
++ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
++ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
++ "subq $30,$1,$30\n\t"
++
++ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
++ "stq $17,16($15)\n\t" /* save "methodIndex" */
++
++ "addq $30,8,$16\n\t" /* pass stack pointer */
++ "bis $18,$18,$17\n\t" /* pass "paramCount" */
++ "bis $19,$19,$18\n\t" /* pass "params" */
++ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
++
++ /*
++ * Copy the first 6 parameters to registers and remove from stack frame.
++ * Both the integer and floating point registers are set for each parameter
++ * except the first which is the "this" pointer. (integer only)
++ * The floating point registers are all set as doubles since the
++ * invoke_copy_to_stack function should have converted the floats.
++ */
++ "ldq $16,0($30)\n\t" /* integer registers */
++ "ldq $17,8($30)\n\t"
++ "ldq $18,16($30)\n\t"
++ "ldq $19,24($30)\n\t"
++ "ldq $20,32($30)\n\t"
++ "ldq $21,40($30)\n\t"
++ "ldt $f17,8($30)\n\t" /* floating point registers */
++ "ldt $f18,16($30)\n\t"
++ "ldt $f19,24($30)\n\t"
++ "ldt $f20,32($30)\n\t"
++ "ldt $f21,40($30)\n\t"
++
++ "addq $30,48,$30\n\t" /* remove params from stack */
++
++ /*
++ * Call the virtual function with the constructed stack frame.
++ */
++ "bis $16,$16,$1\n\t" /* load "this" */
++ "ldq $2,16($15)\n\t" /* load "methodIndex" */
++ "ldq $1,0($1)\n\t" /* load vtable */
++#if 0
++ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
++#else
++ "mulq $2, 8, $2\n\t"
++ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
++#endif
++ "addq $1,$2,$1\n\t"
++ "ldq $27,0($1)\n\t" /* load address of function */
++ "jsr $26,($27),0\n\t" /* call virtual function */
++ "ldgp $29,0($26)\n\t"
++
++ "bis $15,$15,$30\n\t"
++ "ldq $26,0($30)\n\t"
++ "ldq $15,8($30)\n\t"
++ "addq $30,32,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end XPTC_InvokeByIndex"
++ );
++
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
+@@ -0,0 +1,269 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Implement shared vtbl methods. */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include <sys/types.h>
++#include <machine/cpu.h>
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++__asm__("PrepareAndDispatch") __attribute__((unused));
++
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++{
++ const PRUint8 PARAM_BUFFER_COUNT = 16;
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ // args[0] to args[NUM_ARG_REGS] hold floating point register values
++ PRUint64* ap = args + NUM_ARG_REGS;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
++ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
++ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
++ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
++ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
++ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
++ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
++ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // floats passed via registers are stored as doubles
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (PRUint64) args[i];
++ dp->val.f = (float) dp->val.d; // convert double to float
++ }
++ else
++ dp->val.u32 = (PRUint32) *ap;
++ break;
++ case nsXPTType::T_DOUBLE :
++ // doubles passed via registers are also stored
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
++ break;
++ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
++ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
++ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++/*
++ * SharedStub()
++ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
++ * passed to this function via $1 to preserve the argument registers.
++ */
++__asm__(
++ "#### SharedStub ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".ent SharedStub\n"
++"SharedStub:\n\t"
++ ".frame $30,96,$26,0\n\t"
++ ".mask 0x4000000,-96\n\t"
++ "ldgp $29,0($27)\n"
++"$SharedStub..ng:\n\t"
++ "subq $30,96,$30\n\t"
++ "stq $26,0($30)\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Store arguments passed via registers to the stack.
++ * Floating point registers are stored as doubles and converted
++ * to floats in PrepareAndDispatch if necessary.
++ */
++ "stt $f17,16($30)\n\t" /* floating point registers */
++ "stt $f18,24($30)\n\t"
++ "stt $f19,32($30)\n\t"
++ "stt $f20,40($30)\n\t"
++ "stt $f21,48($30)\n\t"
++ "stq $17,56($30)\n\t" /* integer registers */
++ "stq $18,64($30)\n\t"
++ "stq $19,72($30)\n\t"
++ "stq $20,80($30)\n\t"
++ "stq $21,88($30)\n\t"
++
++ /*
++ * Call PrepareAndDispatch function.
++ */
++ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
++ "addq $30,16,$18\n\t" /* pass "args" */
++ "bsr $26,$PrepareAndDispatch..ng\n\t"
++
++ "ldq $26,0($30)\n\t"
++ "addq $30,96,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end SharedStub"
++ );
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
++ );
++#else
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ nsresult result; \
++__asm__ __volatile__( \
++ "ldah $29,0($27)\n\t" \
++ "lda $29,0($29)\n\t" \
++ "lda $1, "#n"\n\t" \
++ "br $31, $SharedStub..ng\n\t" \
++ "mov $0, %0\n\t" \
++ : "=r" (result) \
++ ); \
++ return result; \
++}
++#endif
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
diff --git a/www/firefox-devel/files/patch-xptcall-ia64 b/www/firefox-devel/files/patch-xptcall-ia64
new file mode 100644
index 000000000..9b3969f1c
--- /dev/null
+++ b/www/firefox-devel/files/patch-xptcall-ia64
@@ -0,0 +1,40 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-ia64,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003
+@@ -8,6 +8,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'XPTC_InvokeByIndex'
++ .global XPTC_InvokeByIndex
+ .proc XPTC_InvokeByIndex
+ // manual bundling
+ .explicit
+@@ -24,7 +25,7 @@
+
+ // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ // PRUint32 paramCount, nsXPTCVariant* params);
+-XPTC_InvokeByIndex::
++XPTC_InvokeByIndex:
+ .prologue
+ .save ar.pfs, r37
+ // allocate 4 input args, 6 local args, and 8 output args
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003
+@@ -6,6 +6,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'SharedStub'
++ .global SharedStub
+ .proc SharedStub
+ // manual bundling
+ .explicit
+@@ -14,7 +15,7 @@
+ // .exclass PrepareAndDispatch, @fullyvisible
+ .type PrepareAndDispatch,@function
+
+-SharedStub::
++SharedStub:
+ // 9 arguments, first 8 are the input arguments of previous
+ // function call. The last one is methodIndex, and is passed in memory
+ .prologue
diff --git a/www/firefox-devel/files/patch-xptcall-sparc64 b/www/firefox-devel/files/patch-xptcall-sparc64
new file mode 100644
index 000000000..7463baa55
--- /dev/null
+++ b/www/firefox-devel/files/patch-xptcall-sparc64
@@ -0,0 +1,329 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-sparc64,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
+@@ -0,0 +1,123 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ */
++
++/* Implement shared vtbl methods. */
++
++#include "xptcprivate.h"
++
++#if defined(sparc) || defined(__sparc__)
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
++{
++
++#define PARAM_BUFFER_COUNT 16
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ PRUint64* ap = args;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++extern "C" int SharedStub(int, int*);
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ int dummy; /* defeat tail-call optimization */ \
++ return SharedStub(n, &dummy); \
++}
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#endif /* sparc || __sparc__ */
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
+@@ -0,0 +1,104 @@
++/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++/*
++ Platform specific code to invoke XPCOM methods on native objects
++ for sparcv9 Solaris.
++
++ See the SPARC Compliance Definition (SCD) Chapter 3
++ for more information about what is going on here, including
++ the use of BIAS (0x7ff).
++ The SCD is available from http://www.sparc.com/.
++*/
++
++ .global XPTC_InvokeByIndex
++ .type XPTC_InvokeByIndex, #function
++
++/*
++ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant* params);
++
++*/
++XPTC_InvokeByIndex:
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++ sll %i2,4,%l0 ! assume the worst case
++ ! paramCount * 2 * 8 bytes
++ cmp %l0, 0 ! are there any args? If not,
++ be .invoke ! no need to copy args to stack
++ nop
++
++ sub %sp,%l0,%sp ! create the additional stack space
++ add %sp,0x7ff+136,%o0 ! step past the register window, the
++ ! struct result pointer and the 'this' slot
++ mov %i2,%o1 ! paramCount
++ call invoke_copy_to_stack
++ mov %i3,%o2 ! params
++
++!
++! load arguments from stack into the outgoing registers
++! BIAS is 0x7ff (2047)
++!
++
++! load the %o1..5 64bit (extended word) output registers registers
++ ldx [%sp + 0x7ff + 136],%o1 ! %i1
++ ldx [%sp + 0x7ff + 144],%o2 ! %i2
++ ldx [%sp + 0x7ff + 152],%o3 ! %i3
++ ldx [%sp + 0x7ff + 160],%o4 ! %i4
++ ldx [%sp + 0x7ff + 168],%o5 ! %i5
++
++! load the even number double registers starting with %d2
++ ldd [%sp + 0x7ff + 136],%f2
++ ldd [%sp + 0x7ff + 144],%f4
++ ldd [%sp + 0x7ff + 152],%f6
++ ldd [%sp + 0x7ff + 160],%f8
++ ldd [%sp + 0x7ff + 168],%f10
++ ldd [%sp + 0x7ff + 176],%f12
++ ldd [%sp + 0x7ff + 184],%f14
++ ldd [%sp + 0x7ff + 192],%f16
++ ldd [%sp + 0x7ff + 200],%f18
++ ldd [%sp + 0x7ff + 208],%f20
++ ldd [%sp + 0x7ff + 216],%f22
++ ldd [%sp + 0x7ff + 224],%f24
++ ldd [%sp + 0x7ff + 232],%f26
++ ldd [%sp + 0x7ff + 240],%f28
++ ldd [%sp + 0x7ff + 248],%f30
++
++!
++! calculate the target address from the vtable
++!
++.invoke:
++ sll %i1,3,%l0 ! index *= 8
++! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
++ ldx [%i0],%l1 ! *that --> address of vtable
++ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> address
++
++ jmpl %l0,%o7 ! call the routine
++ mov %i0,%o0 ! move 'this' pointer to out register
++
++ mov %o0,%i0 ! propagate return value
++ ret
++ restore
++
++ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
+--- /dev/null Mon May 26 14:00:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
+@@ -0,0 +1,91 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc) && !defined(__sparc__)
++#error "This code is for Sparc only"
++#endif
++
++/* Prototype specifies unmangled function name */
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
++
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/www/firefox-devel/pkg-deinstall.in b/www/firefox-devel/pkg-deinstall.in
new file mode 100644
index 000000000..0b6b88f64
--- /dev/null
+++ b/www/firefox-devel/pkg-deinstall.in
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-deinstall.in,v 1.3 2004/10/28 21:37:53 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components.ini
+rm -f ${MOZDIR}/defaults.ini
+rm -f ${MOZDIR}/components/*.dat
+rm -rf ${MOZDIR}/extensions
+
+exit 0
diff --git a/www/firefox-devel/pkg-descr b/www/firefox-devel/pkg-descr
new file mode 100644
index 000000000..99b11c5e7
--- /dev/null
+++ b/www/firefox-devel/pkg-descr
@@ -0,0 +1,12 @@
+Firefox is an award winning, free, open-source web browser for many platforms
+and is based on the Mozilla codebase. It is small, fast and easy to use, and
+offers many advanced features:
+ o Popup Blocking
+ o Tabbed Browsing
+ o Live Bookmarks (ie. RSS)
+ o Extensions
+ o Themes
+ o FastFind
+ o Improved Security
+
+WWW: http://www.mozilla.org/products/firefox/
diff --git a/www/firefox-devel/pkg-install.in b/www/firefox-devel/pkg-install.in
new file mode 100644
index 000000000..9aa1ffb79
--- /dev/null
+++ b/www/firefox-devel/pkg-install.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-install.in,v 1.9 2004/12/04 09:47:27 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin:/usr/local/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+FIREFOX=${MOZDIR}/firefox-bin
+
+echo "===> Building Chrome's registry..."
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+rm -rf ${MOZDIR}/extensions
+
+cd ${MOZDIR} || exit 1
+./run-mozilla.sh ${REGXPCOM} || true
+./run-mozilla.sh ${REGCHROME} || true
+./run-mozilla.sh ${FIREFOX} -register > /dev/null 2>&1
+
+if [ ! -d %%PREFIX%%/lib/browser_plugins ]; then
+ mkdir -p %%PREFIX%%/lib/browser_plugins
+fi
+
+exit 0
diff --git a/www/firefox-devel/pkg-message b/www/firefox-devel/pkg-message
new file mode 100644
index 000000000..77f3adad8
--- /dev/null
+++ b/www/firefox-devel/pkg-message
@@ -0,0 +1,41 @@
+======================================================================
+README FOR GNOMEVFS SUPPORT:
+Gnomevfs support is optional (disabled by default), and can be enabled by
+building with ``-DWITH_SMB''.
+
+It is new and currently has issues to be ironed out.
+
+You must delete your components registry for gnomevfs to register:
+
+rm ~/.mozilla/firefox/default.*/compreg.dat
+
+SMB issues:
+Network group, machine, and share browsing does not work correctly.
+
+SFTP:
+Only sftp access using public key authentication works. To easily
+setup public key authentication to "remote_host":
+
+ssh-keygen -t dsa
+cat ~/.ssh/id_dsa.pub | ssh remote_host "cat >> .ssh/authorized_keys"
+
+The SSH sever on remote_host must allow pub key authentication.
+
+======================================================================
+
+Any bug reports should be addressed to the maintainers at:
+ gnome@FreeBSD.org
+You may also Cc: freebsd-ports@freebsd.org. Please do not send
+bug reports to any other addresses.
+
+Please include the following information with any bug report:
+* Output from 'uname -a'.
+* Date/time stamp from www/firefox/Makefile.
+* Where/when did the problem occur: configuring, building, or
+ running firefox
+* How can you reproduce the problem?
+
+Thank you for your help in testing and reporting bugs, and we hope you
+enjoy using Firefox.
+The Maintainers (gnome@)
+======================================================================
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
new file mode 100644
index 000000000..4f341c8e1
--- /dev/null
+++ b/www/firefox/Makefile
@@ -0,0 +1,276 @@
+# New ports collection makefile for: phoenix
+# Date created: 2002/10/21
+# Whom: Alan Eldridge <alane@FreeBSD.org>
+#
+# $FreeBSD: ports/www/firefox/Makefile,v 1.116 2005/03/02 06:50:12 marcus Exp $
+#
+
+PORTNAME= firefox
+PORTVERSION= 1.0.1
+PORTREVISION= 2
+PORTEPOCH= 1
+CATEGORIES= www
+MASTER_SITES= ${MASTER_SITE_MOZILLA}
+MASTER_SITE_SUBDIR= ${PORTNAME}/releases/1.0.1/source
+DISTNAME= ${PORTNAME}-1.0.1-source
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Web browser based on the browser portion of Mozilla
+
+LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
+ png.5:${PORTSDIR}/graphics/png \
+ mng.1:${PORTSDIR}/graphics/libmng
+BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip
+
+ALL_TARGET= default
+CONFIGURE_ENV= LOCALBASE=${LOCALBASE}
+FAKEDIR= ${WRKDIR}/fake
+USE_REINPLACE= yes
+HAS_CONFIGURE= yes
+ESD_LIB= libesd.so.2
+PLIST= ${WRKDIR}/plist
+PLUGINSDIR= ${PREFIX}/lib/browser_plugins
+USE_BZIP2= yes
+USE_GMAKE= yes
+USE_GNOME= gtk20 libidl gnomehier desktopfileutils
+USE_ICONV= yes
+USE_PERL5_BUILD=yes
+USE_X_PREFIX= yes
+WRKSRC= ${WRKDIR}/mozilla
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
+ --exclude */macbuild/*\
+ --exclude */package/* \
+ --exclude .cvsignore \
+ --exclude makefile.win \
+ --exclude MANIFEST
+
+FIREFOX= ${PORTNAME}
+FF_VER= ${PORTVERSION}
+
+FIREFOX_ICON= firefox.png
+FIREFOX_ICON_SRC=${WRKSRC}/other-licenses/branding/firefox/content/alert-exclam.png
+
+PKGCONFIG_FILES=firefox-gtkmozembed firefox-js firefox-xpcom \
+ firefox-nspr firefox-nss firefox-plugin
+
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.1/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/diablo-jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so
+
+SYSTEM_PREFS= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}/defaults/pref/firefox.js
+SCRIPTS_DIR= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}
+MOZ_PIS_SCRIPTS= S50cleanhome
+MOZ_PIS_DIR= ${SCRIPTS_DIR}/init.d
+
+OPTIONS= DEBUG "Build a debugging image" off \
+ LOGGING "Enable additional log messages" off \
+ OPTIMIZED_CFLAGS "Enable some additional optimizations" off \
+ XFT "Enable support for anti-aliased fonts" on \
+ SMB "Enable smb:// URI support using gnomevfs" off \
+ NEWTAB "Open external links in a new tab" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_DEBUG)
+WITH_LOGGING= yes
+CONFIGURE_ENV+= WITH_DEBUG=yes
+.endif # defined(WITH_DEBUG)
+
+.if defined(WITH_OPTIMIZED_CFLAGS)
+CFLAGS:= -O2 -fno-strict-aliasing ${CFLAGS:N-O*}
+.else
+CFLAGS:= -O ${CFLAGS:N-O*:N-m*}
+CONFIGURE_ENV+= WITH_OPTIMIZE=-O
+.endif # defined(WITH_OPTIMIZED_CFLAGS)
+
+.if defined(WITH_LOGGING)
+CONFIGURE_ENV+= WITH_LOGGING=yes
+.endif # defined(WITH_LOGGING)
+
+.if defined(WITHOUT_XFT)
+CONFIGURE_ENV+= WITHOUT_XFT=yes
+.else
+LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
+.endif # !defined(WITHOUT_XFT)
+
+.if defined(WITH_SMB)
+USE_GNOME+= gnomevfs2
+CONFIGURE_ENV+= WITH_SMB=yes
+.endif # defined(WITH_SMB)
+
+CPPFLAGS+= -I${X11BASE}/include -I${LOCALBASE}/include
+CFLAGS+= ${PTHREAD_CFLAGS}
+LDFLAGS+= -L${X11BASE}/lib
+LIBS+= ${PTHREAD_LIBS}
+
+EXTRA_SCRIPTS= ${PORTNAME}.rb
+
+.if ${ARCH} == "alpha" && ${OSVERSION} < 500035
+IGNORE= "core dumps on alpha during post-build"
+.endif
+
+.if ${PERL_LEVEL} < 500600
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-config_make-jars.pl
+.endif
+
+pre-extract::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "Extracting source (this takes a while) ..."
+ @${ECHO_MSG}
+
+post-extract::
+ @${SED} -e 's|@CPPFLAGS@|${CPPFLAGS}|' \
+ -e 's|@CFLAGS@|${CFLAGS}|' \
+ -e 's|@LDFLAGS@|${LDFLAGS}|' \
+ -e 's|@LIBS@|${LIBS}|' \
+ -e 's|@X11BASE@|${X11BASE}|' \
+ -e 's|@LOCALBASE@|${LOCALBASE}|' \
+ -e 's|@FAKEDIR@|${FAKEDIR}|' \
+ -e 's|@PERL@|${PERL5}|' \
+ <${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
+ @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' \
+ <${FILESDIR}/firefox.desktop.in >${WRKDIR}/firefox.desktop
+
+post-patch:
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${MASTERDIR}/pkg-install.in > ${PKGINSTALL}
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g' \
+ < ${MASTERDIR}/pkg-deinstall.in > ${PKGDEINSTALL}
+.for ii in ${EXTRA_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/${ii} > ${WRKDIR}/${ii}
+.endfor
+.for ii in ${MOZ_PIS_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/moz_pis_${ii} > ${WRKDIR}/moz_pis_${ii}
+.endfor
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/run-mozilla.sh
+ @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \
+ s|-lpthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/nsprpub/configure
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/nsprpub/config/config.mk \
+ ${WRKSRC}/security/coreconf/FreeBSD.mk \
+ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \
+ ${WRKSRC}/js/src/Makefile.in
+ @${REINPLACE_CMD} -e 's|libesd\.so\.\d+|${ESD_LIB}|g' \
+ ${WRKSRC}/widget/src/gtk2/nsSound.cpp
+ @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.no|g' \
+ ${WRKSRC}/gfx/src/gtk/nsDeviceContextSpecG.cpp
+.for ii in modules/libpref/src/init extensions/sroaming/resources/content/prefs \
+ embedding/minimo
+ @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/ ; \
+ /dom.disable_window_open_feature.toolbar/s/false/true/' \
+ ${WRKSRC}/${ii}/all.js
+.endfor
+
+pre-configure:
+ @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \
+ ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
+ ${FALSE}; \
+ fi
+
+pre-install:
+ @${RM} -rf ${FAKEDIR} ${PLIST}
+ @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
+ Makefile ${MAKE_ARGS} install
+ @${MKDIR} ${SCRIPTS_DIR}
+ @${MKDIR} ${MOZ_PIS_DIR}
+ ${ECHO_CMD} 'share/gnome/pixmaps/${FIREFOX_ICON}' >> ${PLIST}
+ ${ECHO_CMD} 'share/gnome/applications/firefox.desktop' >> ${PLIST}
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g; \
+ s|${FIREFOX}-${FF_VER}|${FIREFOX}|' \
+ ${FAKEDIR}/bin/firefox \
+ ${FAKEDIR}/bin/firefox-config
+ for i in ${EXTRA_SCRIPTS}; do \
+ ${ECHO_CMD} bin/$${i} >> ${PLIST}; \
+ done
+ ${ECHO_CMD} bin/firefox >> ${PLIST}
+ ${ECHO_CMD} bin/firefox-config >> ${PLIST}
+.for ii in ${MOZ_PIS_SCRIPTS}
+ ${INSTALL_SCRIPT} ${WRKDIR}/moz_pis_${ii} ${MOZ_PIS_DIR}/${ii}
+.endfor
+.if !defined(WITHOUT_NEWTAB)
+ ${ECHO_CMD} >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "// Open external links in new tab" >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "pref(\"browser.link.open_external\", 3);" \
+ >> ${SYSTEM_PREFS}
+.endif # !defined(WITHOUT_NEWTAB)
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|lib/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm lib/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm lib/firefox >> ${PLIST}
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|${FIREFOX}-${FF_VER}|${FIREFOX}|g; \
+ s|${FAKEDIR}|${PREFIX}|' \
+ ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc ; \
+ ${ECHO_CMD} libdata/pkgconfig/$${pcfile}.pc >> ${PLIST} ; \
+ done
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|include/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm include/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm include/${FIREFOX} >> ${PLIST}
+ ${ECHO_CMD} lib/browser_plugins/.${PORTNAME}.keep >> ${PLIST}
+ ${ECHO_CMD} "@unexec ${RMDIR} %D/lib/browser_plugins 2>/dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@exec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@unexec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+
+do-install:
+ ${MKDIR} ${PREFIX}/lib/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/lib/${FIREFOX}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox ${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox-config ${PREFIX}/bin
+ if [ ! -d ${PREFIX}/lib/browser_plugins ]; then \
+ ${MKDIR} ${PREFIX}/lib/browser_plugins ; \
+ fi
+ ${TOUCH} -f ${PREFIX}/lib/browser_plugins/.${PORTNAME}.keep
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${LN} -sf $${jpi} \
+ ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${INSTALL_DATA} ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc \
+ ${PREFIX}/libdata/pkgconfig/$${pcfile}.pc ; \
+ done
+ -${RM} -fr ${PREFIX}/include/${FIREFOX}
+ ${MKDIR} ${PREFIX}/include/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/lib/${FIREFOX}
+
+post-install:
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+.for i in ${EXTRA_SCRIPTS}
+ ${INSTALL_SCRIPT} ${FILESDIR}/${i} ${PREFIX}/bin
+.endfor
+ ${INSTALL_DATA} ${FIREFOX_ICON_SRC} ${PREFIX}/share/gnome/pixmaps/${FIREFOX_ICON}
+ ${INSTALL_DATA} ${WRKDIR}/firefox.desktop ${PREFIX}/share/gnome/applications
+ ${INSTALL_DATA} ${WRKSRC}/other-licenses/branding/firefox/default.xpm \
+ ${PREFIX}/lib/${FIREFOX}/chrome/icons/default/default.xpm
+ @-update-desktop-database
+
+.include <bsd.port.post.mk>
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
new file mode 100644
index 000000000..2ce601d09
--- /dev/null
+++ b/www/firefox/distinfo
@@ -0,0 +1,2 @@
+MD5 (firefox-1.0.1-source.tar.bz2) = ebaea974fea9460ab7050fff76b41cb1
+SIZE (firefox-1.0.1-source.tar.bz2) = 32671529
diff --git a/www/firefox/files/extra-patch-config_make-jars.pl b/www/firefox/files/extra-patch-config_make-jars.pl
new file mode 100644
index 000000000..a558607ca
--- /dev/null
+++ b/www/firefox/files/extra-patch-config_make-jars.pl
@@ -0,0 +1,10 @@
+--- config/make-jars.pl.orig Wed Oct 13 16:17:11 2004
++++ config/make-jars.pl Wed Oct 13 16:17:07 2004
+@@ -40,6 +40,7 @@
+ last if ($arg eq "--");
+ }
+ my $defines = join(' ', @ARGV[ $ddindex .. $#ARGV ]);
++splice @ARGV, $ddindex, $#ARGV;
+
+ getopts("d:s:t:f:avlD:o:p:xz:");
+
diff --git a/www/firefox/files/firefox.desktop.in b/www/firefox/files/firefox.desktop.in
new file mode 100644
index 000000000..c1b7a2e59
--- /dev/null
+++ b/www/firefox/files/firefox.desktop.in
@@ -0,0 +1,191 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Firefox Web Browser
+Name[am]=
+Name[ar]=
+Name[az]=Firefox Veb Səyyahı
+Name[be]=
+Name[bg]=Интернет браузър Firefox
+Name[bn]=
+Name[bs]=Firefox web preglednik
+Name[ca]=Navegador web Firefox
+Name[cs]=Prohlížeč WWW Firefox
+Name[cy]=Y Porwr Gwe Firefox
+Name[da]=Firefox - internetsurfning
+Name[de]=Firefox Webbrowser
+Name[el]=Περιηγητής Διαδικτύου Firefox
+Name[en_CA]=Firefox Web Browser
+Name[en_GB]=Firefox Web Browser
+Name[es]=Navegador Web Firefox
+Name[et]=Firefox veebibrauser
+Name[eu]=Firefox web arakatzailea
+Name[fi]=Firefox, WWW-selain
+Name[fr]=Navigateur Web Firefox
+Name[ga]=Brabhsálaí Lín Firefox
+Name[gu]=એપીફની વૅબ બ્રાઉઝર
+Name[he]=דפדפן Firefox
+Name[hi]=
+Name[hr]=Firefox Web preglednik
+Name[hu]=Firefox webböngésző
+Name[id]=Web Browser Firefox
+Name[it]=Browser web Firefox
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[li]=Firefox Web Browser
+Name[lt]=Firefox web naršyklė
+Name[mk]=Firefox веб прелистувач
+Name[ml]=എപ്പിഫാനി വെബ്ബ് ബ്രൌസ‌ര്
+Name[mn]=Firefox веб хөтөч
+Name[ms]=Pelungsur Web Firefox
+Name[nb]=Firefox nettleser
+Name[nl]=Firefox Webbrowser
+Name[nn]=Firefox nettlesar
+Name[no]=Firefox nettleser
+Name[pa]=ਏਪੀਫਾਨੀ ਵੈੱਬ ਬਰਾਊਜ਼ਰ
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Navegador Web Firefox
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Navigatorul Firefox
+Name[ru]=Веб-браузер Firefox
+Name[sk]=
+Name[sl]=Spletni brskalnik Firefox
+Name[sq]=Firefox - Shfletuesi Web
+Name[sr]=
+Name[sr@Latn]=Veb čitač Spoznaja
+Name[sv]=Webbläsaren Firefox
+Name[ta]=எபிபனி வலை உலாவி
+Name[tk]=Firefox Web Ahtarçisi
+Name[tr]=Firefox Web Tarayıcı
+Name[uk]=Переглядач web Firefox
+Name[vi]=Trình Duyệt Web Firefox
+Name[wa]=Betchteu waibe epiphany
+Name[zh_CN]=Firefox Web 浏览器
+Name[zh_TW]=Firefox 網頁瀏覽器
+GenericName=Web Browser
+GenericName[ar]=متصفّح الانترنت
+GenericName[az]=Veb Səyyahı
+GenericName[be]=Вандроўнік па павуціньню
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[bs]=Web preglednik
+GenericName[ca]=Navegador web
+GenericName[cs]=Prohlížeč WWW
+GenericName[cy]=Porwr Gwe
+GenericName[da]=Internetsurfning
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής Ιστοσελίδων
+GenericName[en_CA]=Web Browser
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web Firefox
+GenericName[ga]=Brabhsálaí Lín
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Browser Web
+GenericName[it]=Browser web
+GenericName[ja]=GNOME ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[li]=Wèb Browser
+GenericName[lt]=Web naršyklė
+GenericName[mk]=Веб прелистувач
+GenericName[mn]=Веб хөтөч
+GenericName[ms]=Pelungsur Web
+GenericName[nb]=Nettleser
+GenericName[nl]=Web-browser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pa]=ਵੈਬ ਬਰਾਊਜ਼
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sq]=Shfletuesi Web
+GenericName[sr]=Веб читач
+GenericName[sr@Latn]=Veb čitač
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tk]=Web Ahtarçysy
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Переглядач web-сторінок
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[zh_CN]=Web 浏览器
+GenericName[zh_TW]=網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Surf på internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте на веб
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Веб-браузер
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ Firefox
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=firefox %U
+Icon=@FIREFOX_ICON@
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;
diff --git a/www/firefox/files/firefox.rb b/www/firefox/files/firefox.rb
new file mode 100644
index 000000000..7aa32cbe5
--- /dev/null
+++ b/www/firefox/files/firefox.rb
@@ -0,0 +1,95 @@
+#!/usr/bin/env ruby
+=begin -*-mode: ruby-*-
+
+ MoZiLLa.in
+
+ Copyright (c) 2002, Alan Eldridge
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the copyright owner nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ $Id: firefox.rb,v 1.1 2005-03-05 01:49:02 marcus Exp $
+
+ 2002-12-16 Alan Eldridge <alane@geeksrus.net>
+
+=end
+
+X11BIN = "/usr/X11R6/bin"
+NAME = File::basename($0, ".rb")
+APP_PATH = File::join(X11BIN, NAME)
+
+if !File::executable?(APP_PATH)
+ raise "File '#{APP_PATH}' not found. Giving up."
+elsif ($display = ENV["DISPLAY"]) == nil
+ raise "Environment variable DISPLAY not found. Giving up."
+end
+
+if ARGV.size > 0
+ if ARGV[0] == "--debug"
+ ARGV.shift
+ else
+ $stdin.reopen(File::open("/dev/null", "r"))
+ $stdout.reopen(File::open("/dev/null", "w"))
+ $stderr.reopen(File::open("/dev/null", "w"))
+ end
+end
+
+if ARGV.size < 1
+ $url = nil
+else
+ $url = ARGV.pop
+ $url.sub!(/^ghelp:/, "file:")
+end
+
+IO::popen("xwininfo -display #{$display} -root -tree") {
+ |io|
+ if NAME != "firefox"
+ $windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
+ else
+ $windows = io.grep(%r<Firefox-bin.*>)
+ end
+}
+
+if $windows.size > 0
+ $id = $windows.map {
+ |s| s.strip.split.first
+ }.sort.first
+ $args = [ "-id", $id, "-raise", "-remote" ]
+ $args.push($url ? "\"openURL(#{$url},new-window)\"" :
+ "\"xfeDoCommand(openBrowser)\"")
+else
+ $args = ARGV
+ $args.push("\"#{$url}\"") if $url
+end
+
+fork {
+ exec(([APP_PATH] + $args).join(" "))
+}
+exit!
+
+#EOF
diff --git a/www/firefox/files/mkdistfile b/www/firefox/files/mkdistfile
new file mode 100755
index 000000000..50a2fee40
--- /dev/null
+++ b/www/firefox/files/mkdistfile
@@ -0,0 +1,171 @@
+#!/bin/sh
+# -*-shell-script-*-
+#
+# mkdistfile -- maintainer's utility to make a firefox distfile
+#
+# Copyright (c) 2002, Alan Eldridge
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of the copyright owner nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD: ports/www/firefox/files/mkdistfile,v 1.6 2004/02/11 07:16:17 marcus Exp $
+#
+# 2002/10/21 alane@geeksrus.net
+#
+
+ORIGDIR=$(/bin/pwd); export ORIGDIR
+APPNAME=${0##*/};APPNAME=${APPNAME#-}; export APPNAME
+test -z "$TMPDIR" && TMPDIR=/tmp; export TMPDIR
+test -z "$HOSTNAME" && HOSTNAME=$(hostname); export HOSTNAME
+warn() { echo "[$APPNAME:$$]" "****" "$@";}
+status() { echo "[$APPNAME:$$]" "===>" "$@";}
+error() { echo "[$APPNAME:$$]" "ERROR:" "$@";}
+die() { echo "[$APPNAME:$$]" "FATAL:" "$@"; exit 1;}
+unset echo_n; test "X`echo -n`" = "X-n" \
+ && echo_n() { echo "$@\c"; } || echo_n() { echo -n "$@"; }
+status_n() { echo_n "[$APPNAME:$$]" "===>" "$@";}
+log() { local cmd=$1;shift;echo_n $(date "+%Y%m%d.%T") "";$cmd "$@";}
+qexpr() { expr "$@" >/dev/null 2>&1;}
+qw() { echo \""$@"\"; }
+listfiles() { ls -1 ${1:+"$@"} 2>/dev/null; }
+whichre() { local n=$#; local s="$1"; shift; while test $# -ge 1; do
+ qexpr "$s" : "$1"&& echo $(($n - $#)) && return 0; shift; done;
+ echo 0; return 1;}
+matchre() { test $(whichre "$@") -gt 0; }
+streq() { local s="$1"; shift; while test $# -ge 1; do
+ test "X$s" = "X$1" && return 0; shift; done; return 1;}
+strupper() {
+ echo "$@"|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+strlower() {
+ echo "$@"|tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
+}
+chdir() { cd "$1" || die cd $(qw $1) failed; }
+absdir() { chdir "$1" && pwd; }
+abspath() { local p=''; case "$1" in /*);; *)p="$(pwd)/";; esac; echo "$p$1"; }
+tmpfile() { mktemp -t .$APPNAME ${1:+"$@"}; }
+############################################################
+# show usage and exit
+############################################################
+usage() {
+ cat <<EOF
+Usage: $APPNAME [options] [--] rev[.yyyymmdd]
+Options:
+ -h,--help Show this help.
+ -V,--version Show version number.
+ -v,--verbose Produce more verbose output.
+ -x,--debug Turn on shell command tracing.
+ -- Stop option processing.
+EOF
+ exit $1
+}
+############################################################
+# show version and exit
+############################################################
+VERSION='$Revision: 1.1 $'
+VERSION=${VERSION#* }; VERSION=${VERSION% *}
+version() { echo "$APPNAME $VERSION" \
+ "Copyright (c) 2002 Alan Eldridge"; exit $1;}
+############################################################
+# set default vars here
+############################################################
+DEBUG=0
+VERBOSE=0; VFLG=''
+DATETIME=$(date +%Y%m%d.%H%M)
+DATE=${DATETIME%.*}
+TIME=${DATETIME#*.}
+############################################################
+# do command line options
+############################################################
+while test $# -gt 0; do
+ n=1; case "$1" in
+ -h|--help) usage 0;;
+ -V|--version) version 0;;
+ -v|--verbose) VERBOSE=1;VFLG='-v';;
+ -x|--debug) set -x;DEBUG=1;;
+ --) shift; break;; -*) usage 1;; *) break;;
+ esac; shift $n
+done
+
+############################################################
+# main(): script execution begins here
+############################################################
+
+test $# -eq 1 || usage 1
+
+REV=$1
+test ${REV##*.} = today && REV=${REV%.*}.$DATE
+
+status "pruning tree..."
+exfile=$(tmpfile)
+cat >>$exfile <<'EOF'
+^.*/CVS($|/)
+^.*/macbuild($|/)
+^.*/package($|/)
+^.*/.cvsignore($|/)
+^.*/windows($|/)
+^.*/activex($|/)
+^.*/os2($|/)
+^.*/solaris($|/)
+^.*/gc($|/)
+^mozilla/apache($|/)
+^mozilla/calendar($|/)
+^mozilla/cck($|/)
+^mozilla/chimera($|/)
+^mozilla/ef($|/)
+^mozilla/embed.mak($|/)
+^mozilla/embed.mk($|/)
+^mozilla/gconfig($|/)
+^mozilla/gfx2($|/)
+^mozilla/grendel($|/)
+^mozilla/java($|/)
+^mozilla/js2($|/)
+^mozilla/mail($|/)
+^mozilla/mailnews($|/)
+^mozilla/mozilla($|/)
+^mozilla/mozilla.kdevprj($|/)
+^mozilla/mozilla.lsm($|/)
+^mozilla/msgsdk($|/)
+^mozilla/mstone($|/)
+^mozilla/nglayout.mac($|/)
+^mozilla/nunet($|/)
+^mozilla/other-licenses($|/)
+^mozilla/privacy($|/)
+^mozilla/silentdl($|/)
+^mozilla/timer($|/)
+^mozilla/trex.mak($|/)
+^mozilla/trex.mk($|/)
+^mozilla/webtools($|/)
+EOF
+test -d mozilla || die "No mozilla dir here."
+find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
+rm -f $exfile
+status "making firefox-$REV.tar.bz2 ..."
+tar -cjpf firefox-$REV.tar.bz2 mozilla
+status "done."
+#EOF
diff --git a/www/firefox/files/moz_pis_S50cleanhome b/www/firefox/files/moz_pis_S50cleanhome
new file mode 100644
index 000000000..3de5565e3
--- /dev/null
+++ b/www/firefox/files/moz_pis_S50cleanhome
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+
+# S50cleanhome
+# a script to clean up users' Mozilla home directories to make upgrading
+# less painful.
+
+# We run in our own subshell
+
+# First, verify protocol
+[ "$1" != "start" ] && exit 1
+[ -z "${MOZ_PIS_API}" -o ${MOZ_PIS_API} -ne 2 ] && exit 1
+[ -z "${MOZ_PIS_MOZBINDIR}" -o ! -d "${MOZ_PIS_MOZBINDIR}" ] && exit 1
+[ -z "${HOME}" -o ! -d "${HOME}" ] && exit 1
+[ -z "${MOZ_PIS_USER_DIR}" -o ! -d "${HOME}/${MOZ_PIS_USER_DIR}" ] && exit 1
+
+# Try to cleanup ${HOME}/${MOZ_PIS_USER_DIR}
+
+if [ -f "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" ]; then
+ sed -e '/Path=/! d' -e "s,Path=,${HOME}/${MOZ_PIS_USER_DIR}/," \
+ "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" \
+ | while read dir
+ do
+ [ ! -d "${dir}" ] && continue
+ # Debian does this for new builds
+ # rm -f "${dir}/XUL.mfasl"
+ # force a rebuild of compreg.dat and xpti.dat for new installations
+ [ "${dir}/compreg.dat" -ot "${MOZ_PIS_MOZBINDIR}/components.ini" ] &&
+ rm -f "${dir}/compatibility.ini" "${dir}/XUL.mfasl"
+ done
+fi
diff --git a/www/firefox/files/mozconfig.in b/www/firefox/files/mozconfig.in
new file mode 100644
index 000000000..4b0ccab41
--- /dev/null
+++ b/www/firefox/files/mozconfig.in
@@ -0,0 +1,83 @@
+# .mozconfig.in -*-shell-script-*-
+# $FreeBSD: ports/www/firefox/files/mozconfig.in,v 1.29 2004/12/28 00:51:58 ahze Exp $
+######################################################################
+# standard opts from README
+export MOZ_PHOENIX=1
+mk_add_options MOZ_PHOENIX=1
+ac_add_options --enable-crypto
+ac_add_options --disable-tests
+ac_add_options --disable-mailnews
+ac_add_options --disable-composer
+ac_add_options --enable-default-toolkit=gtk2
+# See the following URL for approval email for using official branding
+# http://people.freebsd.org/~ahze/firefox_thunderbird-approved.txt
+ac_add_options --enable-official-branding
+######################################################################
+# FBSD specific
+export CPPFLAGS="@CPPFLAGS@"
+export CFLAGS="@CFLAGS@"
+export LIBS="@LIBS@"
+export LDFLAGS="@LDFLAGS@"
+export CONFIG_SH=/bin/sh
+export XP_UNIX=1
+mk_add_options XP_UNIX=1
+export PERL="@PERL@"
+mk_add_options PERL=$PERL
+# Configure options for installation
+ac_add_options --prefix=@FAKEDIR@
+ac_add_options --x-includes=@X11BASE@/include
+ac_add_options --x-libraries=@X11BASE@/lib
+######################################################################
+# Use ports for these libraries
+ac_add_options --with-system-jpeg=@LOCALBASE@
+ac_add_options --with-system-zlib
+ac_add_options --with-system-png=@LOCALBASE@
+ac_add_options --with-system-mng=@LOCALBASE@
+ac_add_options --without-system-nspr
+ac_add_options --with-gssapi=/usr
+######################################################################
+# set compile/link features
+ac_add_options --with-pthreads
+######################################################################
+# disable unneeded/unavailable
+ac_add_options --disable-auto-deps
+ac_add_options --disable-bidi
+ac_add_options --disable-dtd-debug
+ac_add_options --disable-jsd
+ac_add_options --disable-ldap
+ac_add_options --disable-pedantic
+ac_add_options --disable-profilesharing
+ac_add_options --disable-installer
+ac_add_options --enable-single-profile
+ac_add_options --disable-profilesharing
+ac_add_options --enable-image-decoders=png,gif,jpeg,bmp
+ac_add_options --enable-extensions="cookie,xml-rpc,xmlextras,pref,transformiix,universalchardet,webservices,inspector,p3p,gnomevfs"
+######################################################################
+# conditional from port Makefile
+#if test -n "$WITH_REORDER"; then
+# ac_add_options --enable-reorder
+#else
+# ac_add_options --disable-reorder
+#fi # test -n "$WITH_REORDER"
+if test -n "$WITH_DEBUG"; then
+ ac_add_options --enable-debug
+ ac_add_options --disable-strip
+else
+ ac_add_options --disable-debug
+ ac_add_options --enable-optimize=${WITH_OPTIMIZE}
+ ac_add_options --enable-strip
+fi # test -n "$WITH_DEBUG"
+if test -n "$WITH_LOGGING"; then
+ ac_add_options --enable-logging
+else
+ ac_add_options --disable-logging
+fi # test -n "$WITH_LOGGING"
+if test -z "$WITHOUT_XFT"; then
+ ac_add_options --enable-xft
+else
+ ac_add_options --disable-xft
+fi # test -z "$WITHOUT_XFT"
+if test -z "$WITH_SMB"; then
+ ac_add_options --disable-gnomevfs
+fi # test -z "$WITH_SMB"
+######################################################################
diff --git a/www/firefox/files/patch-Double.cpp b/www/firefox/files/patch-Double.cpp
new file mode 100644
index 000000000..a9b570c5d
--- /dev/null
+++ b/www/firefox/files/patch-Double.cpp
@@ -0,0 +1,61 @@
+$FreeBSD: ports/www/firefox/files/patch-Double.cpp,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
+@@ -51,10 +51,10 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
+-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+-#else
++#if defined(__i386__)
+ fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
++#else
++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #endif
+ fp_except_t oldmask = fpsetmask(~allmask);
+ #endif
+@@ -75,22 +75,31 @@
+ #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
+ #define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+
++union ui32dun {
++ PRUint32 i[2];
++ double d;
++};
++
+ //-- Initialize Double related constants
+ #ifdef IS_BIG_ENDIAN
+-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+- 0xffffffff};
+-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
+-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
++const union ui32dun nanMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}};
++const union ui32dun infMask =
++ {{TX_DOUBLE_HI32_EXPMASK, 0}};
++const union ui32dun negInfMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}};
+ #else
+-const PRUint32 nanMask[2] = {0xffffffff,
+- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
+-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
+-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
++const union ui32dun nanMask =
++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}};
++const union ui32dun infMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK}};
++const union ui32dun negInfMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}};
+ #endif
+
+-const double Double::NaN = *((double*)nanMask);
+-const double Double::POSITIVE_INFINITY = *((double*)infMask);
+-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
++const double Double::NaN = nanMask.d;
++const double Double::POSITIVE_INFINITY = infMask.d;
++const double Double::NEGATIVE_INFINITY = negInfMask.d;
+
+ /*
+ * Determines whether the given double represents positive or negative
diff --git a/www/firefox/files/patch-browser_app_mozilla.in b/www/firefox/files/patch-browser_app_mozilla.in
new file mode 100644
index 000000000..492dacc52
--- /dev/null
+++ b/www/firefox/files/patch-browser_app_mozilla.in
@@ -0,0 +1,465 @@
+--- browser/app/mozilla.in.orig Tue Oct 26 11:26:11 2004
++++ browser/app/mozilla.in Mon Feb 28 23:32:14 2005
+@@ -29,51 +29,83 @@
+ ## the mozilla-bin binary to work.
+ ##
+
++#
++# MOZ_PIS, "Mozilla Plugable Init Scripts"
++# MOZ_PIS_ is the name space used
++# These variables and there meaning are specified in
++# mozilla/xpfe/bootstrap/init.d/README
+ moz_pis_startstop_scripts()
+ {
+- MOZ_USER_DIR="%MOZ_USER_DIR%"
+- # MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts"
+- # These variables and there meaning are specified in
+- # mozilla/xpfe/bootstrap/init.d/README
+- MOZ_PIS_API=2
+- MOZ_PIS_MOZBINDIR="${dist_bin}"
+- MOZ_PIS_SESSION_PID="$$"
+- MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
+- export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
+-
+- case "${1}" in
+- "start")
+- for curr_pis in "${dist_bin}/init.d"/S* "${HOME}/${MOZ_USER_DIR}/init.d"/S* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "start" ;;
+- esac
+- fi
+- done
+- ;;
+- "stop")
+- for curr_pis in "${HOME}/${MOZ_USER_DIR}/init.d"/K* "${dist_bin}/init.d"/K* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "stop" ;;
+- esac
+- fi
+- done
+- ;;
+- *)
+- echo 1>&2 "$0: Internal error in moz_pis_startstop_scripts."
+- exit 1
+- ;;
+- esac
++ MOZ_PIS_API=2
++ MOZ_PIS_MOZBINDIR="${dist_bin}"
++ MOZ_PIS_SESSION_PID="$$"
++ MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
++ export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
++
++ case "${1}" in
++ "start")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/S* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/S*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "start"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ "stop")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/K* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/K*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "stop"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ *)
++ echo "$0: Internal error in moz_pis_startstop_scripts." 1>&2
++ exit 1
++ ;;
++ esac
+ }
+
+-#uncomment for debugging
++# uncomment for debugging
+ #set -x
+
+-moz_libdir=%MOZAPPDIR%
+-MRE_HOME=%MREDIR%
++#
++# variables
++#
++#location="new-tab"
++#MOZILLA_UILOCALE="en-US"
++#MOZILLA_UIREGION="US"
++
++#
++# working definitions
++#
++MOZ_USER_DIR="%MOZ_USER_DIR%"
++moz_libdir="%MOZAPPDIR%"
++MRE_HOME="%MREDIR%"
++
++debugging= # set the debugging level
++use_openFile="yes" # use openFile() for file/dir
++here=`pwd`
++
++if [ ! -d "${MRE_HOME}" ]; then
++ # use moz_libdir as MRE_HOME
++ MRE_HOME="${moz_libdir}"
++fi
++export MRE_HOME
+
+ # Use run-mozilla.sh in the current dir if it exists
+ # If not, then start resolving symlinks until we find run-mozilla.sh
+@@ -82,149 +114,217 @@
+ curdir=`dirname "$progname"`
+ progbase=`basename "$progname"`
+ run_moz="$curdir/run-mozilla.sh"
+-if test -x "$run_moz"; then
+- dist_bin="$curdir"
+- found=1
++if [ -x "$run_moz" ]; then
++ dist_bin="$curdir"
++ found=1
+ else
+- here=`/bin/pwd`
+- while [ -h "$progname" ]; do
+- bn=`basename "$progname"`
+- cd `dirname "$progname"`
+- progname=`/bin/ls -l "$bn" | sed -e 's/^.* -> //' `
+- if [ ! -x "$progname" ]; then
+- break
+- fi
+- curdir=`dirname "$progname"`
+- run_moz="$curdir/run-mozilla.sh"
+- if [ -x "$run_moz" ]; then
+- cd "$curdir"
+- dist_bin=`pwd`
+- run_moz="$dist_bin/run-mozilla.sh"
+- found=1
+- break
+- fi
+- done
+- cd "$here"
++ while [ -h "${progname}" ]; do
++ bn=`basename "${progname}"`
++ cd `dirname "${progname}"`
++ progname=`ls -l "${bn}" | sed -e 's/^.* -> //'`
++ if [ ! -x "$progname" ]; then
++ break
++ fi
++ curdir=`dirname "${progname}"`
++ run_moz="${curdir}/run-mozilla.sh"
++ if [ -x "${run_moz}" ]; then
++ cd "$curdir"
++ dist_bin=`pwd`
++ run_moz="${dist_bin}/run-mozilla.sh"
++ found=1
++ break
++ fi
++ done
++ cd "${here}"
+ fi
+ if [ $found = 0 ]; then
+- # Check default compile-time libdir
+- if [ -x "$moz_libdir/run-mozilla.sh" ]; then
+- dist_bin="$moz_libdir"
+- else
+- echo "Cannot find mozilla runtime directory. Exiting."
+- exit 1
+- fi
+-fi
+-
+-script_args=""
+-moreargs=""
+-debugging=0
+-MOZILLA_BIN="${progbase}-bin"
+-
+-# The following is to check for a currently running instance.
+-# This is taken almost verbatim from the Mozilla RPM package's launch script.
+-MOZ_CLIENT_PROGRAM="$dist_bin/mozilla-xremote-client"
+-check_running() {
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" 'ping()' 2>/dev/null >/dev/null
+- RETURN_VAL=$?
+- if [ $RETURN_VAL -eq 0 ]; then
+- echo 1
+- return 1
++ # Check default compile-time libdir
++ if [ -x "${moz_libdir}/run-mozilla.sh" ]; then
++ dist_bin="$moz_libdir"
++ run_moz="${dist_bin}/run-mozilla.sh"
+ else
+- echo 0
+- return 0
++ echo "$0: Cannot find mozilla runtime directory. Exiting." 1>&2
++ exit 1
+ fi
+-}
++fi
+
++MOZILLA_BIN="${progbase}-bin"
+ if [ "$OSTYPE" = "beos" ]; then
+- mimeset -F "$MOZILLA_BIN"
++ mimeset -F "$MOZILLA_BIN"
+ fi
+
+-ALREADY_RUNNING=`check_running`
++# test for binary apps in ${dist_bin}
++if [ -x "${dist_bin}/${MOZILLA_BIN}" ]; then
++ MOZILLA_BIN="${dist_bin}/${progbase}-bin"
++else
++ echo "$0: Cannot find mozilla binary executable. Exiting." 1>&2
++ exit 1
++fi
++if [ -x "${dist_bin}/mozilla-xremote-client" ]; then
++ MOZ_CLIENT_PROGRAM="${dist_bin}/mozilla-xremote-client -a ${progbase}"
++else
++ MOZ_CLIENT_PROGRAM="${MOZILLA_BIN} -remote -a ${progbase}"
++fi
+
+-################################################################ Parse Arguments
+-# If there's a command line argument but it doesn't begin with a -
+-# it's probably a url. Try to send it to a running instance.
+-_USE_EXIST=0
+-_optOne="$1"
+-case "${_optOne}" in
+- -*)
+- ;;
++# guest a default remote command
++_remote_cmd="xfeDoCommand(openBrowser)"
++
++# parse options
++script_args= # null
++moreargs= # null
++target= # null
++ALREADY_RUNNING="test"
++while [ $# -gt 0 ]
++do
++ if [ -n "${target}" ]; then
++ # well, this can't be the target if not last
++ moreargs="${moreargs} \"${target}\""
++ target= # null
++ fi
++ case "$1" in
++ # preserve [pP] for profile
++ --pure | -pure)
++ MOZILLA_BIN="${MOZILLA_BIN}.pure"
++ shift
++ ;;
++ -g | --debug)
++ script_args="${script_args} -g"
++ debugging=1
++ shift
++ ;;
++ -d | --debugger)
++ if [ -n "$2" ]; then
++ script_args="${script_args} -d $2"
++ shift 2
++ else
++ "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Ll]ocale)
++ if [ -n "$2" ]; then
++ uilocale="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Rr]egion)
++ if [ -n "$2" ]; then
++ uiregion="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -browser)
++ # browser is default for firefox
++ shift
++ ;;
++ -turbo | -nosplash | -quiet)
++ # use remote even with this
++ moreargs="${moreargs} $1"
++ shift
++ ;;
++ -*)
++ # don't use remote with options
++ ALREADY_RUNNING= # null
++ moreargs="${moreargs} $1"
++ shift
++ ;;
+ *)
+- _USE_EXIST=1
+- ;;
+-esac
+-
+-_optLast=
+-for i in "$@"; do
+- _optLast="${i}"
+-done #last arg
+-
+-if [ `expr "${_optLast}" : '.*:/.*'` -eq 0 -a \( -f "${_optLast}" -o -d "${_optLast}" \) ]; then
+- # Last argument seems to be a local file/directory
+- # Check, if it is absolutely specified (ie. /home/foo/file vs. ./file)
+- # If it is just "relatively" (./file) specified, make it absolutely
+- [ `expr "${_optLast}" : '/.*'` -eq 0 ] && _optLast="file://`pwd`/${_optLast}"
+-fi
+-################################################################ Parse Arguments
+-
+-########################################################################### Main
+-if [ $ALREADY_RUNNING -eq 1 ]; then
+- # There's an instance already running. Use it.
+- # Any command line args passed in?
+- if [ $# -gt 0 ]; then
+- # There were "some" command line args.
+- if [ ${_USE_EXIST} -eq 1 ]; then
+- # We should use an existing instance, as _USE_EXIST=$_USE_EXIST=-1
+- _remote_cmd="openURL(${_optLast})"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "${_remote_cmd}"
+- unset _remote_cmd
+- exit $?
+- fi
++ target="$1"
++ shift
++ ;;
++ esac
++done
++
++# test for a running copy of firefox
++# seems this is not needed
++#if [-n "${ALREADY_RUNNING}" ]; then
++# if [ -n "${DISPLAY}" ]; then
++# if [ -n "${debugging}" ]; then
++# echo "${run_moz} ${MOZ_CLIENT_PROGRAM} ping()"
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' && ALREADY_RUNNING="yes"
++# else
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' >/dev/null 2>&1 &&
++# ALREADY_RUNNING="yes"
++# fi
++# elif [ -n "${debugging}" ]; then
++# echo "$0: WARN, no DISPLAY environment" 1>&2
++# fi
++#fi
++
++# process target
++if [ -n "${target}" ]; then
++ moreargs="${moreargs} \"${target}\""
++ if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ `expr "${target}" : '.*:.*'` -eq 0 ]; then
++ if [ `expr "${target}" : '/.*'` -eq 0 ]; then
++ target="${here}/${target}"
++ fi
++ if [ -r "${target}" -o -d "${target}" ]; then
++ [ -n "${use_openFile}" ] || target="file://${target}"
++ else
++ echo "$0: WARN, target: ${target} not an URI/file/dir" 1>&2
++ ALREADY_RUNNING= # null
++ fi
+ else
+- # No command line args. Open new window/tab
+- #exec "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- exit $?
++ # an former URI, don't use openFile
++ use_openFile= # null
+ fi
++ fi
+ fi
+-# Default action - no running instance or _USE_EXIST (${_USE_EXIST}) ! -eq 1
+-########################################################################### Main
+
+-while [ $# -gt 0 ]
+-do
+- case "$1" in
+- -p | --pure | -pure)
+- MOZILLA_BIN="${MOZILLA_BIN}.pure"
+- shift
+- ;;
+- -g | --debug)
+- script_args="$script_args -g"
+- debugging=1
+- shift
+- ;;
+- -d | --debugger)
+- script_args="$script_args -d $2"
+- shift 2
+- ;;
+- *)
+- moreargs="$moreargs \"$1\""
+- shift 1
+- ;;
+- esac
+-done
++# try remote protocol if running
++if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ -n "${target}" ]; then
++ if [ -n "${use_openFile}" ]; then
++ _remote_cmd="openFile(${target})"
++ elif [ -n "${location}" ]; then
++ _remote_cmd="openURL(${target},${location})"
++ else
++ _remote_cmd="openURL(${target})"
++ fi
++ fi
++ # FIXME problems with freedesktop StartupNotify
++ if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd}"
++ fi
++ ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} && exit 0
++fi
++
++# fallback to direct invocation
++
++# UILocale, UIRegion
++if [ -z "${uilocale}" -a -n "${MOZILLA_UILOCALE}" ]; then
++ uilocale="${MOZILLA_UILOCALE}"
++fi
++if [ -z "${uiregion}" -a -n "${MOZILLA_UIREGION}" ]; then
++ uiregion="${MOZILLA_UIREGION}"
++fi
++if [ -n "${uiregion}" -a -z "${uilocale}" ]; then
++ uilocale="en-US"
++fi
++if [ -n "${uilocale}" ]; then
++ if [ -n "${uiregion}" ]; then
++ moreargs="-UIRegion ${uiregion} ${moreargs}"
++ fi
++ moreargs="-UILocale ${uilocale} ${moreargs}"
++fi
+
+-export MRE_HOME
+-eval "set -- $moreargs"
++# real invocation
++eval "set -- ${moreargs}"
+
+ ## Start addon scripts
+ moz_pis_startstop_scripts "start"
+
+-if [ $debugging = 1 ]
+-then
+- echo $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"
++if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZILLA_BIN} $@"
+ fi
+-"$dist_bin/run-mozilla.sh" $script_args "$dist_bin/$MOZILLA_BIN" "$@"
++${run_moz} ${script_args} ${MOZILLA_BIN} "$@"
+ exitcode=$?
+
+ ## Stop addon scripts
diff --git a/www/firefox/files/patch-bugzilla149334 b/www/firefox/files/patch-bugzilla149334
new file mode 100644
index 000000000..fe1be5bc8
--- /dev/null
+++ b/www/firefox/files/patch-bugzilla149334
@@ -0,0 +1,342 @@
+Index: gfx/idl/nsIFreeType2.idl
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/idl/nsIFreeType2.idl,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsIFreeType2.idl
+--- gfx/idl/nsIFreeType2.idl 15 Apr 2004 23:30:02 -0000 1.10
++++ gfx/idl/nsIFreeType2.idl 26 May 2004 10:00:54 -0000
+@@ -76,10 +76,11 @@ native FT_Pointer(FT_Pointer);
+ native FT_Sfnt_Tag(FT_Sfnt_Tag);
+ native FT_Size(FT_Size);
+
+-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
++[ptr] native FTC_ImageType_p(FTC_ImageType);
+ native FTC_Face_Requester(FTC_Face_Requester);
+ native FTC_Font(FTC_Font);
+-native FTC_Image_Cache(FTC_Image_Cache);
++native FTC_FaceID(FTC_FaceID);
++native FTC_ImageCache(FTC_ImageCache);
+ native FTC_Manager(FTC_Manager);
+
+ // #ifdef MOZ_SVG
+@@ -99,7 +100,7 @@ interface nsIFreeType2 : nsISupports
+
+ readonly attribute FT_Library library;
+ readonly attribute FTC_Manager FTCacheManager;
+- readonly attribute FTC_Image_Cache ImageCache;
++ readonly attribute FTC_ImageCache ImageCache;
+
+ void doneFace(in FT_Face face);
+ void doneFreeType(in FT_Library lib);
+@@ -115,16 +116,16 @@ interface nsIFreeType2 : nsISupports
+ void outlineDecompose(in FT_Outline_p outline,
+ in const_FT_Outline_Funcs_p funcs, in voidPtr p);
+ void setCharmap(in FT_Face face, in FT_CharMap charmap);
+- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
++ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
+ in FT_UInt gindex, out FT_Glyph glyph);
+- void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
+- out FT_Face face, out FT_Size size);
++ void managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
++ out FT_Face face);
+ void managerDone(in FTC_Manager manager);
+ void managerNew(in FT_Library lib, in FT_UInt max_faces,
+ in FT_UInt max_sizes, in FT_ULong max_bytes,
+ in FTC_Face_Requester requester, in FT_Pointer req_data,
+ out FTC_Manager manager);
+- void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
++ void imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
+ /* #ifdef MOZ_SVG */
+ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
+ in FT_Vector_p delta);
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 17 Apr 2004 21:52:29 -0000 1.25
++++ gfx/src/freetype/nsFreeType.cpp 26 May 2004 10:00:54 -0000
+@@ -110,11 +110,11 @@ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
+ {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
+ {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
+- {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
+- {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
++ {"FTC_ImageCache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
++ {"FTC_Manager_LookupFace", NS_FT2_OFFSET(nsFTC_Manager_LookupFace), PR_TRUE},
+ {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
+ {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
+- {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
++ {"FTC_ImageCache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
+ // #ifdef MOZ_SVG
+ {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
+ {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
+@@ -282,7 +282,7 @@ nsFreeType2::SetCharmap(FT_Face face, FT
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
++nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
+ FT_UInt glyphID, FT_Glyph *glyph)
+ {
+ // call the FreeType2 function via the function pointer
+@@ -291,11 +291,11 @@ nsFreeType2::ImageCacheLookup(FTC_Image_
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
+- FT_Face *face, FT_Size *size)
++nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
++ FT_Face *face)
+ {
+ // call the FreeType2 function via the function pointer
+- FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
++ FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
+ return error ? NS_ERROR_FAILURE : NS_OK;
+ }
+
+@@ -320,7 +320,7 @@ nsFreeType2::ManagerNew(FT_Library libra
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
++nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
+ {
+ // call the FreeType2 function via the function pointer
+ FT_Error error = nsFTC_Image_Cache_New(manager, cache);
+@@ -389,7 +389,7 @@ nsFreeType2::SupportsExtFunc(PRBool *res
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
++nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
+ {
+ *aCache = mImageCache;
+ return NS_OK;
+Index: gfx/src/freetype/nsFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.h,v
+retrieving revision 1.17
+diff -u -3 -p -r1.17 nsFreeType.h
+--- gfx/src/freetype/nsFreeType.h 17 Apr 2004 21:52:29 -0000 1.17
++++ gfx/src/freetype/nsFreeType.h 26 May 2004 10:00:54 -0000
+@@ -120,13 +120,13 @@ typedef FT_Error (*FT_Outline_Decompose_
+ typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
+ typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
+ typedef FT_Error (*FTC_Image_Cache_Lookup_t)
+- (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
+-typedef FT_Error (*FTC_Manager_Lookup_Size_t)
+- (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
++ (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
++typedef FT_Error (*FTC_Manager_LookupFace_t)
++ (FTC_Manager, FTC_FaceID, FT_Face*);
+ typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
+ typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
+ FTC_Face_Requester, FT_Pointer, FTC_Manager*);
+-typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
++typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
+ // #ifdef MOZ_SVG
+ typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
+ typedef FT_Error (*FT_Get_Kerning_t)
+@@ -181,7 +181,7 @@ protected:
+ FT_Outline_Decompose_t nsFT_Outline_Decompose;
+ FT_Set_Charmap_t nsFT_Set_Charmap;
+ FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
+- FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
++ FTC_Manager_LookupFace_t nsFTC_Manager_LookupFace;
+ FTC_Manager_Done_t nsFTC_Manager_Done;
+ FTC_Manager_New_t nsFTC_Manager_New;
+ FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
+@@ -229,7 +229,7 @@ protected:
+ PRLibrary *mSharedLib;
+ FT_Library mFreeTypeLibrary;
+ FTC_Manager mFTCacheManager;
+- FTC_Image_Cache mImageCache;
++ FTC_ImageCache mImageCache;
+
+ static nsHashtable *sFontFamilies;
+ static nsHashtable *sRange1CharSetNames;
+Index: gfx/src/ps/nsFontMetricsPS.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v
+retrieving revision 1.43
+diff -u -3 -p -r1.43 nsFontMetricsPS.cpp
+--- gfx/src/ps/nsFontMetricsPS.cpp 17 Apr 2004 21:52:31 -0000 1.43
++++ gfx/src/ps/nsFontMetricsPS.cpp 26 May 2004 10:01:03 -0000
+@@ -1140,10 +1140,10 @@ nsFontPSFreeType::Init(nsITrueTypeFontCa
+
+ mPixelSize = NSToIntRound(app2dev * mFont->size);
+
+- mImageDesc.font.face_id = (void*)mEntry;
+- mImageDesc.font.pix_width = mPixelSize;
+- mImageDesc.font.pix_height = mPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
++ mImageDesc->width = mPixelSize;
++ mImageDesc->height = mPixelSize;
++ mImageDesc->flags = 0;
+
+ nsresult rv;
+ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
+@@ -1189,7 +1189,7 @@ nsFontPSFreeType::GetWidth(const PRUnich
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache iCache;
++ FTC_ImageCache iCache;
+ nsresult rv = mFt2->GetImageCache(&iCache);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Failed to get Image Cache");
+@@ -1227,8 +1227,8 @@ nsFontPSFreeType::getFTFace()
+
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ NS_ASSERTION(rv==0, "failed to get face/size");
+ if (rv)
+ return nsnull;
+@@ -1621,16 +1621,16 @@ void nsFT2Type8Generator::GeneratePSFont
+ mEntry->GetFamilyName(fontName);
+ mEntry->GetStyleName(styleName);
+
+- mImageDesc.font.face_id = (void*)mEntry;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
+ // TT glyph has no relation to size
+- mImageDesc.font.pix_width = 16;
+- mImageDesc.font.pix_height = 16;
+- mImageDesc.image_type = 0;
++ mImageDesc->width = 16;
++ mImageDesc->height = 16;
++ mImageDesc->flags = 0;
+ FT_Face face = nsnull;
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ if (NS_FAILED(rv))
+ return;
+
+Index: gfx/src/ps/nsFontMetricsPS.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFontMetricsPS.h
+--- gfx/src/ps/nsFontMetricsPS.h 17 Apr 2004 21:52:31 -0000 1.25
++++ gfx/src/ps/nsFontMetricsPS.h 26 May 2004 10:01:03 -0000
+@@ -319,7 +319,7 @@ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+
+
+ static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
+@@ -362,7 +362,7 @@ public:
+ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
+ nsCOMPtr<nsIFreeType2> mFt2;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ };
+ #endif
+
+Index: gfx/src/x11shared/nsFontFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.cpp,v
+retrieving revision 1.14
+diff -u -3 -p -r1.14 nsFontFreeType.cpp
+--- gfx/src/x11shared/nsFontFreeType.cpp 17 Apr 2004 21:52:34 -0000 1.14
++++ gfx/src/x11shared/nsFontFreeType.cpp 26 May 2004 10:01:03 -0000
+@@ -177,7 +177,7 @@ nsFreeTypeFont::getFTFace()
+ FTC_Manager mgr;
+ nsresult rv;
+ mFt2->GetFTCacheManager(&mgr);
+- rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
++ rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
+ if (NS_FAILED(rv))
+ return nsnull;
+@@ -191,22 +191,15 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ PRBool embedded_bimap = PR_FALSE;
+ mFaceID = aFaceID;
+ mPixelSize = aPixelSize;
+- mImageDesc.font.face_id = (void*)mFaceID;
+- mImageDesc.font.pix_width = aPixelSize;
+- mImageDesc.font.pix_height = aPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mFaceID;
++ mImageDesc->width = aPixelSize;
++ mImageDesc->height = aPixelSize;
++ mImageDesc->flags = 0;
+
+ if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+- mImageDesc.image_type |= ftc_image_mono;
+ anti_alias = PR_FALSE;
+ }
+
+- if (nsFreeType2::gFreeType2Autohinted)
+- mImageDesc.image_type |= ftc_image_flag_autohinted;
+-
+- if (nsFreeType2::gFreeType2Unhinted)
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+-
+ PRUint32 num_embedded_bitmaps, i;
+ PRInt32* embedded_bitmapheights;
+ mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
+@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ if (embedded_bitmapheights[i] == aPixelSize) {
+ embedded_bimap = PR_TRUE;
+ // unhinted must be set for embedded bitmaps to be used
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+ break;
+ }
+ }
+@@ -312,7 +304,7 @@ nsFreeTypeFont::doGetBoundingMetrics(con
+ if (!face)
+ return NS_ERROR_FAILURE;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return NS_ERROR_FAILURE;
+@@ -401,7 +393,7 @@ nsFreeTypeFont::GetWidth(const PRUnichar
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+@@ -723,7 +715,7 @@ nsFreeTypeXImage::DrawString(nsRendering
+ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
+ #endif
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+Index: gfx/src/x11shared/nsFontFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.h,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsFontFreeType.h
+--- gfx/src/x11shared/nsFontFreeType.h 17 Apr 2004 21:52:34 -0000 1.10
++++ gfx/src/x11shared/nsFontFreeType.h 26 May 2004 10:01:03 -0000
+@@ -110,7 +110,7 @@ protected:
+ XImage *GetXImage(PRUint32 width, PRUint32 height);
+ nsITrueTypeFontCatalogEntry *mFaceID;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ };
+
diff --git a/www/firefox/files/patch-build_unix_mozilla-xpcom.pc.in b/www/firefox/files/patch-build_unix_mozilla-xpcom.pc.in
new file mode 100644
index 000000000..4e982a544
--- /dev/null
+++ b/www/firefox/files/patch-build_unix_mozilla-xpcom.pc.in
@@ -0,0 +1,8 @@
+--- build/unix/mozilla-xpcom.pc.in.orig Thu Jun 24 12:23:09 2004
++++ build/unix/mozilla-xpcom.pc.in Thu Jun 24 12:23:18 2004
+@@ -8,4 +8,4 @@
+ Version: %MOZILLA_VERSION%
+ Requires: mozilla-nspr = %MOZILLA_VERSION%
+ Libs: -L${libdir} -lxpcom
+-Cflags: -I${includedir}/xpcom -I${includedir}/string
++Cflags: -I${includedir}/xpcom -I${includedir}/string -I${includedir}
diff --git a/www/firefox/files/patch-build_unix_run-mozilla.sh b/www/firefox/files/patch-build_unix_run-mozilla.sh
new file mode 100644
index 000000000..ab658a150
--- /dev/null
+++ b/www/firefox/files/patch-build_unix_run-mozilla.sh
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-build_unix_run-mozilla.sh,v 1.5 2004/02/11 19:30:49 marcus Exp $
+
+--- build/unix/run-mozilla.sh.orig Mon Dec 15 12:27:28 2003
++++ build/unix/run-mozilla.sh Wed Feb 11 14:24:17 2004
+@@ -355,7 +355,7 @@
+ fi
+ ##
+ ## Set LD_LIBRARY_PATH
+-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
++LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+ if [ -n "$LD_LIBRARYN32_PATH" ]
+ then
+ LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
+@@ -442,6 +442,9 @@
+ #
+ export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
+ export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
++
++MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
++export MOZ_PLUGIN_PATH
+
+ if [ $moz_debug -eq 1 ]
+ then
diff --git a/www/firefox/files/patch-config-mkdepend-imakemdep.h b/www/firefox/files/patch-config-mkdepend-imakemdep.h
new file mode 100644
index 000000000..424ac6784
--- /dev/null
+++ b/www/firefox/files/patch-config-mkdepend-imakemdep.h
@@ -0,0 +1,12 @@
+$FreeBSD: ports/www/firefox/files/patch-config-mkdepend-imakemdep.h,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998
++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003
+@@ -278,4 +278,7 @@
+ "-D__i386__",
+ # endif
++# if defined(__amd64__) || defined(__x86_64__)
++ "-D__amd64__ -D__x86_64__",
++# endif
+ # ifdef __GNUC__
+ "-traditional",
diff --git a/www/firefox/files/patch-config-rules.mk b/www/firefox/files/patch-config-rules.mk
new file mode 100644
index 000000000..f8697ee4c
--- /dev/null
+++ b/www/firefox/files/patch-config-rules.mk
@@ -0,0 +1,16 @@
+$FreeBSD: ports/www/firefox/files/patch-config-rules.mk,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- config/rules.mk.orig Tue Aug 26 13:28:47 2003
++++ config/rules.mk Sun Feb 1 15:11:41 2004
+@@ -444,7 +444,11 @@
+
+ ifeq ($(OS_ARCH),FreeBSD)
+ ifdef IS_COMPONENT
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
++else
+ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
++endif
+ endif
+ endif
+
diff --git a/www/firefox/files/patch-config::mkdepend::Makefile.in b/www/firefox/files/patch-config::mkdepend::Makefile.in
new file mode 100644
index 000000000..bace012a2
--- /dev/null
+++ b/www/firefox/files/patch-config::mkdepend::Makefile.in
@@ -0,0 +1,10 @@
+--- config/mkdepend/Makefile.in.orig Sun Dec 12 07:36:57 2004
++++ config/mkdepend/Makefile.in Sun Dec 12 07:37:55 2004
+@@ -57,6 +57,7 @@
+ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\"
++HOST_CFLAGS += $(XCFLAGS)
+
+ ifdef GNU_CC
+ _GCCDIR = $(shell $(CC) -print-file-name=include)
diff --git a/www/firefox/files/patch-configure b/www/firefox/files/patch-configure
new file mode 100644
index 000000000..9e60372ad
--- /dev/null
+++ b/www/firefox/files/patch-configure
@@ -0,0 +1,38 @@
+--- configure.orig Fri Feb 13 01:06:29 2004
++++ configure Fri Feb 13 01:07:17 2004
+@@ -9181,7 +9181,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9187 "configure"
+ #include "confdefs.h"
+@@ -9212,7 +9212,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
+@@ -9222,7 +9222,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9228 "configure"
+ #include "confdefs.h"
+@@ -9253,7 +9253,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ fi
diff --git a/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp b/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
new file mode 100644
index 000000000..7c07aad7f
--- /dev/null
+++ b/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
@@ -0,0 +1,48 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.cpp.orig Wed Nov 19 01:20:47 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp Tue Feb 10 02:52:26 2004
+@@ -323,11 +323,11 @@
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly",
+ &mStartLinksOnlyPref);
+
+- PRBool isSoundEnabled = PR_TRUE;
++ mIsSoundEnabled = PR_TRUE;
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound",
+- &isSoundEnabled);
++ &mIsSoundEnabled);
+ nsXPIDLCString soundStr;
+- if (isSoundEnabled) {
++ if (mIsSoundEnabled && mIsSoundEnabled) {
+ prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL",
+ getter_Copies(soundStr));
+ }
+@@ -758,7 +758,7 @@
+ }
+ else {
+ // No find string to backspace in!
+- if (mIsBackspaceProtectOn) {
++ if (mIsBackspaceProtectOn && mIsSoundEnabled) {
+ // This flag should be on only if the last key was a backspace.
+ // It keeps us from accidentally hitting backspace too many times and
+ // going back in history when we really just wanted to clear
+@@ -1012,7 +1012,9 @@
+
+ // Error sound (don't fire when backspace is pressed, they're
+ // trying to correct the mistake!)
+- PlayNotFoundSound();
++ if (mIsSoundEnabled) {
++ PlayNotFoundSound();
++ }
+
+ // Remove bad character from buffer, so we can continue typing from
+ // last matched character
+@@ -1059,7 +1061,7 @@
+ void
+ nsTypeAheadFind::PlayNotFoundSound()
+ {
+- if (mNotFoundSoundURL.IsEmpty()) // no sound
++ if (mNotFoundSoundURL.IsEmpty() || !mIsSoundEnabled) // no sound
+ return;
+ if (!mSoundInterface) {
+ mSoundInterface = do_CreateInstance("@mozilla.org/sound;1");
diff --git a/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h b/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
new file mode 100644
index 000000000..86c9567a8
--- /dev/null
+++ b/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
@@ -0,0 +1,14 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig Fri May 23 22:00:33 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.h Mon Feb 9 22:21:43 2004
+@@ -194,6 +194,9 @@
+
+ nsCString mNotFoundSoundURL;
+
++ // Move the sound enabled boolean out for all methods to access.
++ PRBool mIsSoundEnabled;
++
+ // PRBool's are used instead of PRPackedBool's where the address of the
+ // boolean variable is getting passed into a method. For example:
+ // GetBoolPref("accessibility.typeaheadfind.linksonly", &mLinksOnlyPref);
diff --git a/www/firefox/files/patch-nspr-unix.c b/www/firefox/files/patch-nspr-unix.c
new file mode 100644
index 000000000..e453013b5
--- /dev/null
+++ b/www/firefox/files/patch-nspr-unix.c
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-nspr-unix.c,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
++++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
+@@ -65,7 +65,8 @@
+ * PRInt32* pointer to a _PRSockLen_t* pointer.
+ */
+ #if defined(HAVE_SOCKLEN_T) \
+- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
++ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
++ || defined(FREEBSD)
+ #define _PRSockLen_t socklen_t
+ #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
+ || defined(AIX4_1) || defined(LINUX) || defined(SONY) \
+@@ -73,7 +74,7 @@
+ || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
+ || defined(NEXTSTEP) || defined(QNX)
+ #define _PRSockLen_t int
+-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
++#elif (defined(AIX) && !defined(AIX4_1)) \
+ || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
+ || defined(DGUX) || defined(VMS) || defined(NTO)
+ #define _PRSockLen_t size_t
diff --git a/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg b/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg
new file mode 100644
index 000000000..997531b5b
--- /dev/null
+++ b/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg
@@ -0,0 +1,163 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.cfg.orig Wed Jan 2 18:38:25 2002
++++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 15:09:53 2004
+@@ -91,7 +91,7 @@
+ #define PR_ALIGN_OF_DOUBLE 4
+ #define PR_ALIGN_OF_POINTER 4
+
+-#elif defined(__alpha)
++#elif defined(__alpha__)
+
+ #define IS_LITTLE_ENDIAN 1
+ #undef IS_BIG_ENDIAN
+@@ -138,6 +138,149 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
++#elif defined(__sparc64__)
++#undef IS_LITTLE_ENDIAN
++#define IS_BIG_ENDIAN 1
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_DOUBLE 8
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_POINTER 8
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++
++#elif defined(__ia64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#elif defined(__amd64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
+ #else
+
+ #error "Unknown CPU architecture"
diff --git a/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h b/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h
new file mode 100644
index 000000000..e96b317c8
--- /dev/null
+++ b/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h
@@ -0,0 +1,15 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 23:36:13 2003
++++ nsprpub/pr/include/md/_freebsd.h Mon Feb 9 22:24:39 2004
+@@ -50,6 +50,10 @@
+ #define _PR_SI_ARCHITECTURE "alpha"
+ #elif defined(__sparc__)
+ #define _PR_SI_ARCHITECTURE "sparc"
++#elif defined(__ia64__)
++#define _PR_SI_ARCHITECTURE "ia64"
++#elif defined(__amd64__)
++#define _PR_SI_ARCHITECTURE "amd64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
diff --git a/www/firefox/files/patch-nsprpub-pr-include-md-_pth.h b/www/firefox/files/patch-nsprpub-pr-include-md-_pth.h
new file mode 100644
index 000000000..1f8159c70
--- /dev/null
+++ b/www/firefox/files/patch-nsprpub-pr-include-md-_pth.h
@@ -0,0 +1,11 @@
+--- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004
++++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004
+@@ -90,7 +90,7 @@
+ #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
+ #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
+ #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
+-#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
++#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
+ #if defined(DARWIN)
+ #define _PT_PTHREAD_CONDATTR_INIT(x) 0
+ #else
diff --git a/www/firefox/files/patch-nsprpub-pr-src-io-prprf.c b/www/firefox/files/patch-nsprpub-pr-src-io-prprf.c
new file mode 100644
index 000000000..38bd959ae
--- /dev/null
+++ b/www/firefox/files/patch-nsprpub-pr-src-io-prprf.c
@@ -0,0 +1,14 @@
+--- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004
++++ nsprpub/pr/src/io/prprf.c Tue Jun 15 13:17:30 2004
+@@ -51,7 +51,10 @@
+ ** Note: on some platforms va_list is defined as an array,
+ ** and requires array notation.
+ */
+-#if (defined(LINUX) && defined(__x86_64__))
++#if defined(__amd64__)
++#include <stdarg.h>
++#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar))
++#elif (defined(LINUX) && defined(__x86_64__))
+ #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar))
+ #elif (defined(LINUX) && defined(__powerpc__)) || \
+ (defined(LINUX) && defined(__s390__)) || \
diff --git a/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c b/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c
new file mode 100644
index 000000000..537577dec
--- /dev/null
+++ b/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c
@@ -0,0 +1,31 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c,v 1.4 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 21:59:47 2003
++++ nsprpub/pr/src/pthreads/ptio.c Fri Oct 17 05:25:43 2003
+@@ -189,7 +189,7 @@
+ #endif
+ #endif
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ static PRBool _pr_ipv6_v6only_on_by_default;
+ /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */
+ #ifndef IPV6_V6ONLY
+@@ -1154,7 +1154,7 @@
+ _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE);
+ PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr);
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option
+ * is turned on by default, contrary to what RFC 3493, Section
+ * 5.3 says. So we have to turn it off. Find out whether we
+@@ -3462,7 +3462,7 @@
+ if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno);
+ else
+ {
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default)
+ {
+ int on = 0;
diff --git a/www/firefox/files/patch-security-coreconf-FreeBSD.mk b/www/firefox/files/patch-security-coreconf-FreeBSD.mk
new file mode 100644
index 000000000..3e0e14aca
--- /dev/null
+++ b/www/firefox/files/patch-security-coreconf-FreeBSD.mk
@@ -0,0 +1,28 @@
+--- security/coreconf/FreeBSD.mk.orig Wed Mar 26 20:17:25 2003
++++ security/coreconf/FreeBSD.mk Sun Nov 21 22:59:49 2004
+@@ -43,8 +43,12 @@
+ ifeq ($(OS_TEST),alpha)
+ CPU_ARCH = alpha
+ else
++ifeq ($(OS_TEST),amd64)
++CPU_ARCH = amd64
++else
+ CPU_ARCH = x86
+ endif
++endif
+
+ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
+
+@@ -71,7 +75,11 @@
+ DLL_SUFFIX = so.1.0
+ endif
+
+-MKSHLIB = $(CC) $(DSO_LDOPTS)
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@
++else
++MKSHLIB = $(CC) -Wl,-Bsymbolic $(DSO_LDOPTS) -o $@
++endif
+ ifdef MAPFILE
+ # Add LD options to restrict exported symbols to those in the map file
+ endif
diff --git a/www/firefox/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/www/firefox/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
new file mode 100644
index 000000000..7f8e55f53
--- /dev/null
+++ b/www/firefox/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
@@ -0,0 +1,29 @@
+--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004
++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004
+@@ -143,7 +143,7 @@
+ PR_END_MACRO
+
+ // Attempt to open libgconf
+- gconfLib = LoadVersionedLibrary("gconf-2", ".4");
++ gconfLib = PR_LoadLibrary("libgconf-2.so");
+ ENSURE_LIB(gconfLib);
+
+ GET_LIB_FUNCTION(gconf, gconf_client_get_default);
+@@ -151,7 +151,7 @@
+ GET_LIB_FUNCTION(gconf, gconf_client_get_bool);
+
+ // Attempt to open libgnome
+- gnomeLib = LoadVersionedLibrary("gnome-2", ".0");
++ gnomeLib = PR_LoadLibrary("libgnome-2.so");
+ ENSURE_LIB(gnomeLib);
+
+ GET_LIB_FUNCTION(gnome, gnome_url_show);
+@@ -160,7 +160,7 @@
+ GET_LIB_FUNCTION(gnome, gnome_program_get);
+
+ // Attempt to open libgnomevfs
+- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0");
++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so");
+ ENSURE_LIB(vfsLib);
+
+ GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name);
diff --git a/www/firefox/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc b/www/firefox/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
new file mode 100644
index 000000000..9a41bbfc4
--- /dev/null
+++ b/www/firefox/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004
++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Tue Jun 15 12:52:36 2004
+@@ -8,7 +8,7 @@
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
diff --git a/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in b/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
new file mode 100644
index 000000000..e9f125165
--- /dev/null
+++ b/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
@@ -0,0 +1,56 @@
+$FreeBSD: ports/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in,v 1.4 2004/10/24 06:34:13 peter Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 15:06:40 2004
+@@ -49,6 +49,9 @@
+ ifeq (86,$(findstring 86,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
+ endif
++ifeq (amd64,$(OS_TEST))
++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp
++endif
+ endif
+ #
+ # New code for Linux, et. al., with gcc
+@@ -60,7 +63,7 @@
+ endif
+ endif
+ # IA64 Linux
+-ifneq (,$(filter Linux,$(OS_ARCH)))
++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
+ ifneq (,$(findstring ia64,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
+ ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
+@@ -106,9 +109,15 @@
+ ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
+ endif
+ #
++# FreeBSD/Alpha
++#
++ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
++CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
++endif
++#
+ # Linux/Alpha
+ #
+-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
++ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
+ endif
+ #
+@@ -294,6 +303,15 @@
+ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
+ CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# FreeBSD/SPARC64
++#
++ifeq ($(OS_ARCH),FreeBSD)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
++endif
+ endif
+ #
+ # Solaris/SPARC
diff --git a/www/firefox/files/patch-xptcall-alpha b/www/firefox/files/patch-xptcall-alpha
new file mode 100644
index 000000000..f5d802f73
--- /dev/null
+++ b/www/firefox/files/patch-xptcall-alpha
@@ -0,0 +1,461 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-alpha,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
+@@ -0,0 +1,184 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++__asm__("invoke_copy_to_stack") __attribute__((unused));
++
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
++ {
++ if(s->IsPtrData())
++ {
++ *d = (PRUint64)s->ptr;
++ continue;
++ }
++ switch(s->type)
++ {
++ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
++ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
++ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
++ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
++ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
++ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
++ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
++ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // convert floats to doubles if they are to be passed
++ // via registers so we can just deal with doubles later
++ union { PRUint64 u64; double d; } t;
++ t.d = (double)s->val.f;
++ *d = t.u64;
++ }
++ else
++ // otherwise copy to stack normally
++ *d = (PRUint64)s->val.u32;
++ break;
++ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
++ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
++ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
++ default:
++ // all the others are plain pointer types
++ *d = (PRUint64)s->val.p;
++ break;
++ }
++ }
++}
++
++/*
++ * XPTC_PUBLIC_API(nsresult)
++ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
++ */
++__asm__(
++ "#### XPTC_InvokeByIndex ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".globl XPTC_InvokeByIndex\n\t"
++ ".ent XPTC_InvokeByIndex\n"
++"XPTC_InvokeByIndex:\n\t"
++ ".frame $15,32,$26,0\n\t"
++ ".mask 0x4008000,-32\n\t"
++ "ldgp $29,0($27)\n"
++"$XPTC_InvokeByIndex..ng:\n\t"
++ "subq $30,32,$30\n\t"
++ "stq $26,0($30)\n\t"
++ "stq $15,8($30)\n\t"
++ "bis $30,$30,$15\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
++ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
++ * is required for storage of those passed via registers.
++ */
++
++ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
++ "cmplt $2,$18,$1\n\t"
++ "cmovne $1,$18,$2\n\t"
++ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
++ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
++ "subq $30,$1,$30\n\t"
++
++ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
++ "stq $17,16($15)\n\t" /* save "methodIndex" */
++
++ "addq $30,8,$16\n\t" /* pass stack pointer */
++ "bis $18,$18,$17\n\t" /* pass "paramCount" */
++ "bis $19,$19,$18\n\t" /* pass "params" */
++ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
++
++ /*
++ * Copy the first 6 parameters to registers and remove from stack frame.
++ * Both the integer and floating point registers are set for each parameter
++ * except the first which is the "this" pointer. (integer only)
++ * The floating point registers are all set as doubles since the
++ * invoke_copy_to_stack function should have converted the floats.
++ */
++ "ldq $16,0($30)\n\t" /* integer registers */
++ "ldq $17,8($30)\n\t"
++ "ldq $18,16($30)\n\t"
++ "ldq $19,24($30)\n\t"
++ "ldq $20,32($30)\n\t"
++ "ldq $21,40($30)\n\t"
++ "ldt $f17,8($30)\n\t" /* floating point registers */
++ "ldt $f18,16($30)\n\t"
++ "ldt $f19,24($30)\n\t"
++ "ldt $f20,32($30)\n\t"
++ "ldt $f21,40($30)\n\t"
++
++ "addq $30,48,$30\n\t" /* remove params from stack */
++
++ /*
++ * Call the virtual function with the constructed stack frame.
++ */
++ "bis $16,$16,$1\n\t" /* load "this" */
++ "ldq $2,16($15)\n\t" /* load "methodIndex" */
++ "ldq $1,0($1)\n\t" /* load vtable */
++#if 0
++ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
++#else
++ "mulq $2, 8, $2\n\t"
++ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
++#endif
++ "addq $1,$2,$1\n\t"
++ "ldq $27,0($1)\n\t" /* load address of function */
++ "jsr $26,($27),0\n\t" /* call virtual function */
++ "ldgp $29,0($26)\n\t"
++
++ "bis $15,$15,$30\n\t"
++ "ldq $26,0($30)\n\t"
++ "ldq $15,8($30)\n\t"
++ "addq $30,32,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end XPTC_InvokeByIndex"
++ );
++
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
+@@ -0,0 +1,269 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Implement shared vtbl methods. */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include <sys/types.h>
++#include <machine/cpu.h>
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++__asm__("PrepareAndDispatch") __attribute__((unused));
++
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++{
++ const PRUint8 PARAM_BUFFER_COUNT = 16;
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ // args[0] to args[NUM_ARG_REGS] hold floating point register values
++ PRUint64* ap = args + NUM_ARG_REGS;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
++ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
++ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
++ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
++ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
++ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
++ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
++ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // floats passed via registers are stored as doubles
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (PRUint64) args[i];
++ dp->val.f = (float) dp->val.d; // convert double to float
++ }
++ else
++ dp->val.u32 = (PRUint32) *ap;
++ break;
++ case nsXPTType::T_DOUBLE :
++ // doubles passed via registers are also stored
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
++ break;
++ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
++ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
++ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++/*
++ * SharedStub()
++ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
++ * passed to this function via $1 to preserve the argument registers.
++ */
++__asm__(
++ "#### SharedStub ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".ent SharedStub\n"
++"SharedStub:\n\t"
++ ".frame $30,96,$26,0\n\t"
++ ".mask 0x4000000,-96\n\t"
++ "ldgp $29,0($27)\n"
++"$SharedStub..ng:\n\t"
++ "subq $30,96,$30\n\t"
++ "stq $26,0($30)\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Store arguments passed via registers to the stack.
++ * Floating point registers are stored as doubles and converted
++ * to floats in PrepareAndDispatch if necessary.
++ */
++ "stt $f17,16($30)\n\t" /* floating point registers */
++ "stt $f18,24($30)\n\t"
++ "stt $f19,32($30)\n\t"
++ "stt $f20,40($30)\n\t"
++ "stt $f21,48($30)\n\t"
++ "stq $17,56($30)\n\t" /* integer registers */
++ "stq $18,64($30)\n\t"
++ "stq $19,72($30)\n\t"
++ "stq $20,80($30)\n\t"
++ "stq $21,88($30)\n\t"
++
++ /*
++ * Call PrepareAndDispatch function.
++ */
++ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
++ "addq $30,16,$18\n\t" /* pass "args" */
++ "bsr $26,$PrepareAndDispatch..ng\n\t"
++
++ "ldq $26,0($30)\n\t"
++ "addq $30,96,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end SharedStub"
++ );
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
++ );
++#else
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ nsresult result; \
++__asm__ __volatile__( \
++ "ldah $29,0($27)\n\t" \
++ "lda $29,0($29)\n\t" \
++ "lda $1, "#n"\n\t" \
++ "br $31, $SharedStub..ng\n\t" \
++ "mov $0, %0\n\t" \
++ : "=r" (result) \
++ ); \
++ return result; \
++}
++#endif
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
diff --git a/www/firefox/files/patch-xptcall-ia64 b/www/firefox/files/patch-xptcall-ia64
new file mode 100644
index 000000000..9b3969f1c
--- /dev/null
+++ b/www/firefox/files/patch-xptcall-ia64
@@ -0,0 +1,40 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-ia64,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003
+@@ -8,6 +8,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'XPTC_InvokeByIndex'
++ .global XPTC_InvokeByIndex
+ .proc XPTC_InvokeByIndex
+ // manual bundling
+ .explicit
+@@ -24,7 +25,7 @@
+
+ // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ // PRUint32 paramCount, nsXPTCVariant* params);
+-XPTC_InvokeByIndex::
++XPTC_InvokeByIndex:
+ .prologue
+ .save ar.pfs, r37
+ // allocate 4 input args, 6 local args, and 8 output args
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003
+@@ -6,6 +6,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'SharedStub'
++ .global SharedStub
+ .proc SharedStub
+ // manual bundling
+ .explicit
+@@ -14,7 +15,7 @@
+ // .exclass PrepareAndDispatch, @fullyvisible
+ .type PrepareAndDispatch,@function
+
+-SharedStub::
++SharedStub:
+ // 9 arguments, first 8 are the input arguments of previous
+ // function call. The last one is methodIndex, and is passed in memory
+ .prologue
diff --git a/www/firefox/files/patch-xptcall-sparc64 b/www/firefox/files/patch-xptcall-sparc64
new file mode 100644
index 000000000..7463baa55
--- /dev/null
+++ b/www/firefox/files/patch-xptcall-sparc64
@@ -0,0 +1,329 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-sparc64,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
+@@ -0,0 +1,123 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ */
++
++/* Implement shared vtbl methods. */
++
++#include "xptcprivate.h"
++
++#if defined(sparc) || defined(__sparc__)
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
++{
++
++#define PARAM_BUFFER_COUNT 16
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ PRUint64* ap = args;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++extern "C" int SharedStub(int, int*);
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ int dummy; /* defeat tail-call optimization */ \
++ return SharedStub(n, &dummy); \
++}
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#endif /* sparc || __sparc__ */
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
+@@ -0,0 +1,104 @@
++/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++/*
++ Platform specific code to invoke XPCOM methods on native objects
++ for sparcv9 Solaris.
++
++ See the SPARC Compliance Definition (SCD) Chapter 3
++ for more information about what is going on here, including
++ the use of BIAS (0x7ff).
++ The SCD is available from http://www.sparc.com/.
++*/
++
++ .global XPTC_InvokeByIndex
++ .type XPTC_InvokeByIndex, #function
++
++/*
++ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant* params);
++
++*/
++XPTC_InvokeByIndex:
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++ sll %i2,4,%l0 ! assume the worst case
++ ! paramCount * 2 * 8 bytes
++ cmp %l0, 0 ! are there any args? If not,
++ be .invoke ! no need to copy args to stack
++ nop
++
++ sub %sp,%l0,%sp ! create the additional stack space
++ add %sp,0x7ff+136,%o0 ! step past the register window, the
++ ! struct result pointer and the 'this' slot
++ mov %i2,%o1 ! paramCount
++ call invoke_copy_to_stack
++ mov %i3,%o2 ! params
++
++!
++! load arguments from stack into the outgoing registers
++! BIAS is 0x7ff (2047)
++!
++
++! load the %o1..5 64bit (extended word) output registers registers
++ ldx [%sp + 0x7ff + 136],%o1 ! %i1
++ ldx [%sp + 0x7ff + 144],%o2 ! %i2
++ ldx [%sp + 0x7ff + 152],%o3 ! %i3
++ ldx [%sp + 0x7ff + 160],%o4 ! %i4
++ ldx [%sp + 0x7ff + 168],%o5 ! %i5
++
++! load the even number double registers starting with %d2
++ ldd [%sp + 0x7ff + 136],%f2
++ ldd [%sp + 0x7ff + 144],%f4
++ ldd [%sp + 0x7ff + 152],%f6
++ ldd [%sp + 0x7ff + 160],%f8
++ ldd [%sp + 0x7ff + 168],%f10
++ ldd [%sp + 0x7ff + 176],%f12
++ ldd [%sp + 0x7ff + 184],%f14
++ ldd [%sp + 0x7ff + 192],%f16
++ ldd [%sp + 0x7ff + 200],%f18
++ ldd [%sp + 0x7ff + 208],%f20
++ ldd [%sp + 0x7ff + 216],%f22
++ ldd [%sp + 0x7ff + 224],%f24
++ ldd [%sp + 0x7ff + 232],%f26
++ ldd [%sp + 0x7ff + 240],%f28
++ ldd [%sp + 0x7ff + 248],%f30
++
++!
++! calculate the target address from the vtable
++!
++.invoke:
++ sll %i1,3,%l0 ! index *= 8
++! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
++ ldx [%i0],%l1 ! *that --> address of vtable
++ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> address
++
++ jmpl %l0,%o7 ! call the routine
++ mov %i0,%o0 ! move 'this' pointer to out register
++
++ mov %o0,%i0 ! propagate return value
++ ret
++ restore
++
++ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
+--- /dev/null Mon May 26 14:00:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
+@@ -0,0 +1,91 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc) && !defined(__sparc__)
++#error "This code is for Sparc only"
++#endif
++
++/* Prototype specifies unmangled function name */
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
++
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/www/firefox/pkg-deinstall.in b/www/firefox/pkg-deinstall.in
new file mode 100644
index 000000000..0b6b88f64
--- /dev/null
+++ b/www/firefox/pkg-deinstall.in
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-deinstall.in,v 1.3 2004/10/28 21:37:53 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components.ini
+rm -f ${MOZDIR}/defaults.ini
+rm -f ${MOZDIR}/components/*.dat
+rm -rf ${MOZDIR}/extensions
+
+exit 0
diff --git a/www/firefox/pkg-descr b/www/firefox/pkg-descr
new file mode 100644
index 000000000..99b11c5e7
--- /dev/null
+++ b/www/firefox/pkg-descr
@@ -0,0 +1,12 @@
+Firefox is an award winning, free, open-source web browser for many platforms
+and is based on the Mozilla codebase. It is small, fast and easy to use, and
+offers many advanced features:
+ o Popup Blocking
+ o Tabbed Browsing
+ o Live Bookmarks (ie. RSS)
+ o Extensions
+ o Themes
+ o FastFind
+ o Improved Security
+
+WWW: http://www.mozilla.org/products/firefox/
diff --git a/www/firefox/pkg-install.in b/www/firefox/pkg-install.in
new file mode 100644
index 000000000..9aa1ffb79
--- /dev/null
+++ b/www/firefox/pkg-install.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-install.in,v 1.9 2004/12/04 09:47:27 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin:/usr/local/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+FIREFOX=${MOZDIR}/firefox-bin
+
+echo "===> Building Chrome's registry..."
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+rm -rf ${MOZDIR}/extensions
+
+cd ${MOZDIR} || exit 1
+./run-mozilla.sh ${REGXPCOM} || true
+./run-mozilla.sh ${REGCHROME} || true
+./run-mozilla.sh ${FIREFOX} -register > /dev/null 2>&1
+
+if [ ! -d %%PREFIX%%/lib/browser_plugins ]; then
+ mkdir -p %%PREFIX%%/lib/browser_plugins
+fi
+
+exit 0
diff --git a/www/firefox/pkg-message b/www/firefox/pkg-message
new file mode 100644
index 000000000..77f3adad8
--- /dev/null
+++ b/www/firefox/pkg-message
@@ -0,0 +1,41 @@
+======================================================================
+README FOR GNOMEVFS SUPPORT:
+Gnomevfs support is optional (disabled by default), and can be enabled by
+building with ``-DWITH_SMB''.
+
+It is new and currently has issues to be ironed out.
+
+You must delete your components registry for gnomevfs to register:
+
+rm ~/.mozilla/firefox/default.*/compreg.dat
+
+SMB issues:
+Network group, machine, and share browsing does not work correctly.
+
+SFTP:
+Only sftp access using public key authentication works. To easily
+setup public key authentication to "remote_host":
+
+ssh-keygen -t dsa
+cat ~/.ssh/id_dsa.pub | ssh remote_host "cat >> .ssh/authorized_keys"
+
+The SSH sever on remote_host must allow pub key authentication.
+
+======================================================================
+
+Any bug reports should be addressed to the maintainers at:
+ gnome@FreeBSD.org
+You may also Cc: freebsd-ports@freebsd.org. Please do not send
+bug reports to any other addresses.
+
+Please include the following information with any bug report:
+* Output from 'uname -a'.
+* Date/time stamp from www/firefox/Makefile.
+* Where/when did the problem occur: configuring, building, or
+ running firefox
+* How can you reproduce the problem?
+
+Thank you for your help in testing and reporting bugs, and we hope you
+enjoy using Firefox.
+The Maintainers (gnome@)
+======================================================================
diff --git a/www/firefox10/Makefile b/www/firefox10/Makefile
new file mode 100644
index 000000000..4f341c8e1
--- /dev/null
+++ b/www/firefox10/Makefile
@@ -0,0 +1,276 @@
+# New ports collection makefile for: phoenix
+# Date created: 2002/10/21
+# Whom: Alan Eldridge <alane@FreeBSD.org>
+#
+# $FreeBSD: ports/www/firefox/Makefile,v 1.116 2005/03/02 06:50:12 marcus Exp $
+#
+
+PORTNAME= firefox
+PORTVERSION= 1.0.1
+PORTREVISION= 2
+PORTEPOCH= 1
+CATEGORIES= www
+MASTER_SITES= ${MASTER_SITE_MOZILLA}
+MASTER_SITE_SUBDIR= ${PORTNAME}/releases/1.0.1/source
+DISTNAME= ${PORTNAME}-1.0.1-source
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Web browser based on the browser portion of Mozilla
+
+LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
+ png.5:${PORTSDIR}/graphics/png \
+ mng.1:${PORTSDIR}/graphics/libmng
+BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip
+
+ALL_TARGET= default
+CONFIGURE_ENV= LOCALBASE=${LOCALBASE}
+FAKEDIR= ${WRKDIR}/fake
+USE_REINPLACE= yes
+HAS_CONFIGURE= yes
+ESD_LIB= libesd.so.2
+PLIST= ${WRKDIR}/plist
+PLUGINSDIR= ${PREFIX}/lib/browser_plugins
+USE_BZIP2= yes
+USE_GMAKE= yes
+USE_GNOME= gtk20 libidl gnomehier desktopfileutils
+USE_ICONV= yes
+USE_PERL5_BUILD=yes
+USE_X_PREFIX= yes
+WRKSRC= ${WRKDIR}/mozilla
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
+ --exclude */macbuild/*\
+ --exclude */package/* \
+ --exclude .cvsignore \
+ --exclude makefile.win \
+ --exclude MANIFEST
+
+FIREFOX= ${PORTNAME}
+FF_VER= ${PORTVERSION}
+
+FIREFOX_ICON= firefox.png
+FIREFOX_ICON_SRC=${WRKSRC}/other-licenses/branding/firefox/content/alert-exclam.png
+
+PKGCONFIG_FILES=firefox-gtkmozembed firefox-js firefox-xpcom \
+ firefox-nspr firefox-nss firefox-plugin
+
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.1/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/diablo-jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so
+
+SYSTEM_PREFS= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}/defaults/pref/firefox.js
+SCRIPTS_DIR= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}
+MOZ_PIS_SCRIPTS= S50cleanhome
+MOZ_PIS_DIR= ${SCRIPTS_DIR}/init.d
+
+OPTIONS= DEBUG "Build a debugging image" off \
+ LOGGING "Enable additional log messages" off \
+ OPTIMIZED_CFLAGS "Enable some additional optimizations" off \
+ XFT "Enable support for anti-aliased fonts" on \
+ SMB "Enable smb:// URI support using gnomevfs" off \
+ NEWTAB "Open external links in a new tab" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_DEBUG)
+WITH_LOGGING= yes
+CONFIGURE_ENV+= WITH_DEBUG=yes
+.endif # defined(WITH_DEBUG)
+
+.if defined(WITH_OPTIMIZED_CFLAGS)
+CFLAGS:= -O2 -fno-strict-aliasing ${CFLAGS:N-O*}
+.else
+CFLAGS:= -O ${CFLAGS:N-O*:N-m*}
+CONFIGURE_ENV+= WITH_OPTIMIZE=-O
+.endif # defined(WITH_OPTIMIZED_CFLAGS)
+
+.if defined(WITH_LOGGING)
+CONFIGURE_ENV+= WITH_LOGGING=yes
+.endif # defined(WITH_LOGGING)
+
+.if defined(WITHOUT_XFT)
+CONFIGURE_ENV+= WITHOUT_XFT=yes
+.else
+LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
+.endif # !defined(WITHOUT_XFT)
+
+.if defined(WITH_SMB)
+USE_GNOME+= gnomevfs2
+CONFIGURE_ENV+= WITH_SMB=yes
+.endif # defined(WITH_SMB)
+
+CPPFLAGS+= -I${X11BASE}/include -I${LOCALBASE}/include
+CFLAGS+= ${PTHREAD_CFLAGS}
+LDFLAGS+= -L${X11BASE}/lib
+LIBS+= ${PTHREAD_LIBS}
+
+EXTRA_SCRIPTS= ${PORTNAME}.rb
+
+.if ${ARCH} == "alpha" && ${OSVERSION} < 500035
+IGNORE= "core dumps on alpha during post-build"
+.endif
+
+.if ${PERL_LEVEL} < 500600
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-config_make-jars.pl
+.endif
+
+pre-extract::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "Extracting source (this takes a while) ..."
+ @${ECHO_MSG}
+
+post-extract::
+ @${SED} -e 's|@CPPFLAGS@|${CPPFLAGS}|' \
+ -e 's|@CFLAGS@|${CFLAGS}|' \
+ -e 's|@LDFLAGS@|${LDFLAGS}|' \
+ -e 's|@LIBS@|${LIBS}|' \
+ -e 's|@X11BASE@|${X11BASE}|' \
+ -e 's|@LOCALBASE@|${LOCALBASE}|' \
+ -e 's|@FAKEDIR@|${FAKEDIR}|' \
+ -e 's|@PERL@|${PERL5}|' \
+ <${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
+ @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' \
+ <${FILESDIR}/firefox.desktop.in >${WRKDIR}/firefox.desktop
+
+post-patch:
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${MASTERDIR}/pkg-install.in > ${PKGINSTALL}
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g' \
+ < ${MASTERDIR}/pkg-deinstall.in > ${PKGDEINSTALL}
+.for ii in ${EXTRA_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/${ii} > ${WRKDIR}/${ii}
+.endfor
+.for ii in ${MOZ_PIS_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/moz_pis_${ii} > ${WRKDIR}/moz_pis_${ii}
+.endfor
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/run-mozilla.sh
+ @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \
+ s|-lpthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/nsprpub/configure
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/nsprpub/config/config.mk \
+ ${WRKSRC}/security/coreconf/FreeBSD.mk \
+ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \
+ ${WRKSRC}/js/src/Makefile.in
+ @${REINPLACE_CMD} -e 's|libesd\.so\.\d+|${ESD_LIB}|g' \
+ ${WRKSRC}/widget/src/gtk2/nsSound.cpp
+ @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.no|g' \
+ ${WRKSRC}/gfx/src/gtk/nsDeviceContextSpecG.cpp
+.for ii in modules/libpref/src/init extensions/sroaming/resources/content/prefs \
+ embedding/minimo
+ @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/ ; \
+ /dom.disable_window_open_feature.toolbar/s/false/true/' \
+ ${WRKSRC}/${ii}/all.js
+.endfor
+
+pre-configure:
+ @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \
+ ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
+ ${FALSE}; \
+ fi
+
+pre-install:
+ @${RM} -rf ${FAKEDIR} ${PLIST}
+ @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
+ Makefile ${MAKE_ARGS} install
+ @${MKDIR} ${SCRIPTS_DIR}
+ @${MKDIR} ${MOZ_PIS_DIR}
+ ${ECHO_CMD} 'share/gnome/pixmaps/${FIREFOX_ICON}' >> ${PLIST}
+ ${ECHO_CMD} 'share/gnome/applications/firefox.desktop' >> ${PLIST}
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g; \
+ s|${FIREFOX}-${FF_VER}|${FIREFOX}|' \
+ ${FAKEDIR}/bin/firefox \
+ ${FAKEDIR}/bin/firefox-config
+ for i in ${EXTRA_SCRIPTS}; do \
+ ${ECHO_CMD} bin/$${i} >> ${PLIST}; \
+ done
+ ${ECHO_CMD} bin/firefox >> ${PLIST}
+ ${ECHO_CMD} bin/firefox-config >> ${PLIST}
+.for ii in ${MOZ_PIS_SCRIPTS}
+ ${INSTALL_SCRIPT} ${WRKDIR}/moz_pis_${ii} ${MOZ_PIS_DIR}/${ii}
+.endfor
+.if !defined(WITHOUT_NEWTAB)
+ ${ECHO_CMD} >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "// Open external links in new tab" >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "pref(\"browser.link.open_external\", 3);" \
+ >> ${SYSTEM_PREFS}
+.endif # !defined(WITHOUT_NEWTAB)
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|lib/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm lib/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm lib/firefox >> ${PLIST}
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|${FIREFOX}-${FF_VER}|${FIREFOX}|g; \
+ s|${FAKEDIR}|${PREFIX}|' \
+ ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc ; \
+ ${ECHO_CMD} libdata/pkgconfig/$${pcfile}.pc >> ${PLIST} ; \
+ done
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|include/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm include/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm include/${FIREFOX} >> ${PLIST}
+ ${ECHO_CMD} lib/browser_plugins/.${PORTNAME}.keep >> ${PLIST}
+ ${ECHO_CMD} "@unexec ${RMDIR} %D/lib/browser_plugins 2>/dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@exec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@unexec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+
+do-install:
+ ${MKDIR} ${PREFIX}/lib/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/lib/${FIREFOX}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox ${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox-config ${PREFIX}/bin
+ if [ ! -d ${PREFIX}/lib/browser_plugins ]; then \
+ ${MKDIR} ${PREFIX}/lib/browser_plugins ; \
+ fi
+ ${TOUCH} -f ${PREFIX}/lib/browser_plugins/.${PORTNAME}.keep
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${LN} -sf $${jpi} \
+ ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${INSTALL_DATA} ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc \
+ ${PREFIX}/libdata/pkgconfig/$${pcfile}.pc ; \
+ done
+ -${RM} -fr ${PREFIX}/include/${FIREFOX}
+ ${MKDIR} ${PREFIX}/include/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/lib/${FIREFOX}
+
+post-install:
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+.for i in ${EXTRA_SCRIPTS}
+ ${INSTALL_SCRIPT} ${FILESDIR}/${i} ${PREFIX}/bin
+.endfor
+ ${INSTALL_DATA} ${FIREFOX_ICON_SRC} ${PREFIX}/share/gnome/pixmaps/${FIREFOX_ICON}
+ ${INSTALL_DATA} ${WRKDIR}/firefox.desktop ${PREFIX}/share/gnome/applications
+ ${INSTALL_DATA} ${WRKSRC}/other-licenses/branding/firefox/default.xpm \
+ ${PREFIX}/lib/${FIREFOX}/chrome/icons/default/default.xpm
+ @-update-desktop-database
+
+.include <bsd.port.post.mk>
diff --git a/www/firefox10/distinfo b/www/firefox10/distinfo
new file mode 100644
index 000000000..2ce601d09
--- /dev/null
+++ b/www/firefox10/distinfo
@@ -0,0 +1,2 @@
+MD5 (firefox-1.0.1-source.tar.bz2) = ebaea974fea9460ab7050fff76b41cb1
+SIZE (firefox-1.0.1-source.tar.bz2) = 32671529
diff --git a/www/firefox10/files/extra-patch-config_make-jars.pl b/www/firefox10/files/extra-patch-config_make-jars.pl
new file mode 100644
index 000000000..a558607ca
--- /dev/null
+++ b/www/firefox10/files/extra-patch-config_make-jars.pl
@@ -0,0 +1,10 @@
+--- config/make-jars.pl.orig Wed Oct 13 16:17:11 2004
++++ config/make-jars.pl Wed Oct 13 16:17:07 2004
+@@ -40,6 +40,7 @@
+ last if ($arg eq "--");
+ }
+ my $defines = join(' ', @ARGV[ $ddindex .. $#ARGV ]);
++splice @ARGV, $ddindex, $#ARGV;
+
+ getopts("d:s:t:f:avlD:o:p:xz:");
+
diff --git a/www/firefox10/files/firefox.desktop.in b/www/firefox10/files/firefox.desktop.in
new file mode 100644
index 000000000..c1b7a2e59
--- /dev/null
+++ b/www/firefox10/files/firefox.desktop.in
@@ -0,0 +1,191 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Firefox Web Browser
+Name[am]=
+Name[ar]=
+Name[az]=Firefox Veb Səyyahı
+Name[be]=
+Name[bg]=Интернет браузър Firefox
+Name[bn]=
+Name[bs]=Firefox web preglednik
+Name[ca]=Navegador web Firefox
+Name[cs]=Prohlížeč WWW Firefox
+Name[cy]=Y Porwr Gwe Firefox
+Name[da]=Firefox - internetsurfning
+Name[de]=Firefox Webbrowser
+Name[el]=Περιηγητής Διαδικτύου Firefox
+Name[en_CA]=Firefox Web Browser
+Name[en_GB]=Firefox Web Browser
+Name[es]=Navegador Web Firefox
+Name[et]=Firefox veebibrauser
+Name[eu]=Firefox web arakatzailea
+Name[fi]=Firefox, WWW-selain
+Name[fr]=Navigateur Web Firefox
+Name[ga]=Brabhsálaí Lín Firefox
+Name[gu]=એપીફની વૅબ બ્રાઉઝર
+Name[he]=דפדפן Firefox
+Name[hi]=
+Name[hr]=Firefox Web preglednik
+Name[hu]=Firefox webböngésző
+Name[id]=Web Browser Firefox
+Name[it]=Browser web Firefox
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[li]=Firefox Web Browser
+Name[lt]=Firefox web naršyklė
+Name[mk]=Firefox веб прелистувач
+Name[ml]=എപ്പിഫാനി വെബ്ബ് ബ്രൌസ‌ര്
+Name[mn]=Firefox веб хөтөч
+Name[ms]=Pelungsur Web Firefox
+Name[nb]=Firefox nettleser
+Name[nl]=Firefox Webbrowser
+Name[nn]=Firefox nettlesar
+Name[no]=Firefox nettleser
+Name[pa]=ਏਪੀਫਾਨੀ ਵੈੱਬ ਬਰਾਊਜ਼ਰ
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Navegador Web Firefox
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Navigatorul Firefox
+Name[ru]=Веб-браузер Firefox
+Name[sk]=
+Name[sl]=Spletni brskalnik Firefox
+Name[sq]=Firefox - Shfletuesi Web
+Name[sr]=
+Name[sr@Latn]=Veb čitač Spoznaja
+Name[sv]=Webbläsaren Firefox
+Name[ta]=எபிபனி வலை உலாவி
+Name[tk]=Firefox Web Ahtarçisi
+Name[tr]=Firefox Web Tarayıcı
+Name[uk]=Переглядач web Firefox
+Name[vi]=Trình Duyệt Web Firefox
+Name[wa]=Betchteu waibe epiphany
+Name[zh_CN]=Firefox Web 浏览器
+Name[zh_TW]=Firefox 網頁瀏覽器
+GenericName=Web Browser
+GenericName[ar]=متصفّح الانترنت
+GenericName[az]=Veb Səyyahı
+GenericName[be]=Вандроўнік па павуціньню
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[bs]=Web preglednik
+GenericName[ca]=Navegador web
+GenericName[cs]=Prohlížeč WWW
+GenericName[cy]=Porwr Gwe
+GenericName[da]=Internetsurfning
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής Ιστοσελίδων
+GenericName[en_CA]=Web Browser
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web Firefox
+GenericName[ga]=Brabhsálaí Lín
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Browser Web
+GenericName[it]=Browser web
+GenericName[ja]=GNOME ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[li]=Wèb Browser
+GenericName[lt]=Web naršyklė
+GenericName[mk]=Веб прелистувач
+GenericName[mn]=Веб хөтөч
+GenericName[ms]=Pelungsur Web
+GenericName[nb]=Nettleser
+GenericName[nl]=Web-browser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pa]=ਵੈਬ ਬਰਾਊਜ਼
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sq]=Shfletuesi Web
+GenericName[sr]=Веб читач
+GenericName[sr@Latn]=Veb čitač
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tk]=Web Ahtarçysy
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Переглядач web-сторінок
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[zh_CN]=Web 浏览器
+GenericName[zh_TW]=網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Surf på internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте на веб
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Веб-браузер
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ Firefox
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=firefox %U
+Icon=@FIREFOX_ICON@
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;
diff --git a/www/firefox10/files/firefox.rb b/www/firefox10/files/firefox.rb
new file mode 100644
index 000000000..7aa32cbe5
--- /dev/null
+++ b/www/firefox10/files/firefox.rb
@@ -0,0 +1,95 @@
+#!/usr/bin/env ruby
+=begin -*-mode: ruby-*-
+
+ MoZiLLa.in
+
+ Copyright (c) 2002, Alan Eldridge
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the copyright owner nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ $Id: firefox.rb,v 1.1 2005-03-05 01:49:02 marcus Exp $
+
+ 2002-12-16 Alan Eldridge <alane@geeksrus.net>
+
+=end
+
+X11BIN = "/usr/X11R6/bin"
+NAME = File::basename($0, ".rb")
+APP_PATH = File::join(X11BIN, NAME)
+
+if !File::executable?(APP_PATH)
+ raise "File '#{APP_PATH}' not found. Giving up."
+elsif ($display = ENV["DISPLAY"]) == nil
+ raise "Environment variable DISPLAY not found. Giving up."
+end
+
+if ARGV.size > 0
+ if ARGV[0] == "--debug"
+ ARGV.shift
+ else
+ $stdin.reopen(File::open("/dev/null", "r"))
+ $stdout.reopen(File::open("/dev/null", "w"))
+ $stderr.reopen(File::open("/dev/null", "w"))
+ end
+end
+
+if ARGV.size < 1
+ $url = nil
+else
+ $url = ARGV.pop
+ $url.sub!(/^ghelp:/, "file:")
+end
+
+IO::popen("xwininfo -display #{$display} -root -tree") {
+ |io|
+ if NAME != "firefox"
+ $windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
+ else
+ $windows = io.grep(%r<Firefox-bin.*>)
+ end
+}
+
+if $windows.size > 0
+ $id = $windows.map {
+ |s| s.strip.split.first
+ }.sort.first
+ $args = [ "-id", $id, "-raise", "-remote" ]
+ $args.push($url ? "\"openURL(#{$url},new-window)\"" :
+ "\"xfeDoCommand(openBrowser)\"")
+else
+ $args = ARGV
+ $args.push("\"#{$url}\"") if $url
+end
+
+fork {
+ exec(([APP_PATH] + $args).join(" "))
+}
+exit!
+
+#EOF
diff --git a/www/firefox10/files/mkdistfile b/www/firefox10/files/mkdistfile
new file mode 100755
index 000000000..50a2fee40
--- /dev/null
+++ b/www/firefox10/files/mkdistfile
@@ -0,0 +1,171 @@
+#!/bin/sh
+# -*-shell-script-*-
+#
+# mkdistfile -- maintainer's utility to make a firefox distfile
+#
+# Copyright (c) 2002, Alan Eldridge
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of the copyright owner nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD: ports/www/firefox/files/mkdistfile,v 1.6 2004/02/11 07:16:17 marcus Exp $
+#
+# 2002/10/21 alane@geeksrus.net
+#
+
+ORIGDIR=$(/bin/pwd); export ORIGDIR
+APPNAME=${0##*/};APPNAME=${APPNAME#-}; export APPNAME
+test -z "$TMPDIR" && TMPDIR=/tmp; export TMPDIR
+test -z "$HOSTNAME" && HOSTNAME=$(hostname); export HOSTNAME
+warn() { echo "[$APPNAME:$$]" "****" "$@";}
+status() { echo "[$APPNAME:$$]" "===>" "$@";}
+error() { echo "[$APPNAME:$$]" "ERROR:" "$@";}
+die() { echo "[$APPNAME:$$]" "FATAL:" "$@"; exit 1;}
+unset echo_n; test "X`echo -n`" = "X-n" \
+ && echo_n() { echo "$@\c"; } || echo_n() { echo -n "$@"; }
+status_n() { echo_n "[$APPNAME:$$]" "===>" "$@";}
+log() { local cmd=$1;shift;echo_n $(date "+%Y%m%d.%T") "";$cmd "$@";}
+qexpr() { expr "$@" >/dev/null 2>&1;}
+qw() { echo \""$@"\"; }
+listfiles() { ls -1 ${1:+"$@"} 2>/dev/null; }
+whichre() { local n=$#; local s="$1"; shift; while test $# -ge 1; do
+ qexpr "$s" : "$1"&& echo $(($n - $#)) && return 0; shift; done;
+ echo 0; return 1;}
+matchre() { test $(whichre "$@") -gt 0; }
+streq() { local s="$1"; shift; while test $# -ge 1; do
+ test "X$s" = "X$1" && return 0; shift; done; return 1;}
+strupper() {
+ echo "$@"|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+strlower() {
+ echo "$@"|tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
+}
+chdir() { cd "$1" || die cd $(qw $1) failed; }
+absdir() { chdir "$1" && pwd; }
+abspath() { local p=''; case "$1" in /*);; *)p="$(pwd)/";; esac; echo "$p$1"; }
+tmpfile() { mktemp -t .$APPNAME ${1:+"$@"}; }
+############################################################
+# show usage and exit
+############################################################
+usage() {
+ cat <<EOF
+Usage: $APPNAME [options] [--] rev[.yyyymmdd]
+Options:
+ -h,--help Show this help.
+ -V,--version Show version number.
+ -v,--verbose Produce more verbose output.
+ -x,--debug Turn on shell command tracing.
+ -- Stop option processing.
+EOF
+ exit $1
+}
+############################################################
+# show version and exit
+############################################################
+VERSION='$Revision: 1.1 $'
+VERSION=${VERSION#* }; VERSION=${VERSION% *}
+version() { echo "$APPNAME $VERSION" \
+ "Copyright (c) 2002 Alan Eldridge"; exit $1;}
+############################################################
+# set default vars here
+############################################################
+DEBUG=0
+VERBOSE=0; VFLG=''
+DATETIME=$(date +%Y%m%d.%H%M)
+DATE=${DATETIME%.*}
+TIME=${DATETIME#*.}
+############################################################
+# do command line options
+############################################################
+while test $# -gt 0; do
+ n=1; case "$1" in
+ -h|--help) usage 0;;
+ -V|--version) version 0;;
+ -v|--verbose) VERBOSE=1;VFLG='-v';;
+ -x|--debug) set -x;DEBUG=1;;
+ --) shift; break;; -*) usage 1;; *) break;;
+ esac; shift $n
+done
+
+############################################################
+# main(): script execution begins here
+############################################################
+
+test $# -eq 1 || usage 1
+
+REV=$1
+test ${REV##*.} = today && REV=${REV%.*}.$DATE
+
+status "pruning tree..."
+exfile=$(tmpfile)
+cat >>$exfile <<'EOF'
+^.*/CVS($|/)
+^.*/macbuild($|/)
+^.*/package($|/)
+^.*/.cvsignore($|/)
+^.*/windows($|/)
+^.*/activex($|/)
+^.*/os2($|/)
+^.*/solaris($|/)
+^.*/gc($|/)
+^mozilla/apache($|/)
+^mozilla/calendar($|/)
+^mozilla/cck($|/)
+^mozilla/chimera($|/)
+^mozilla/ef($|/)
+^mozilla/embed.mak($|/)
+^mozilla/embed.mk($|/)
+^mozilla/gconfig($|/)
+^mozilla/gfx2($|/)
+^mozilla/grendel($|/)
+^mozilla/java($|/)
+^mozilla/js2($|/)
+^mozilla/mail($|/)
+^mozilla/mailnews($|/)
+^mozilla/mozilla($|/)
+^mozilla/mozilla.kdevprj($|/)
+^mozilla/mozilla.lsm($|/)
+^mozilla/msgsdk($|/)
+^mozilla/mstone($|/)
+^mozilla/nglayout.mac($|/)
+^mozilla/nunet($|/)
+^mozilla/other-licenses($|/)
+^mozilla/privacy($|/)
+^mozilla/silentdl($|/)
+^mozilla/timer($|/)
+^mozilla/trex.mak($|/)
+^mozilla/trex.mk($|/)
+^mozilla/webtools($|/)
+EOF
+test -d mozilla || die "No mozilla dir here."
+find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
+rm -f $exfile
+status "making firefox-$REV.tar.bz2 ..."
+tar -cjpf firefox-$REV.tar.bz2 mozilla
+status "done."
+#EOF
diff --git a/www/firefox10/files/moz_pis_S50cleanhome b/www/firefox10/files/moz_pis_S50cleanhome
new file mode 100644
index 000000000..3de5565e3
--- /dev/null
+++ b/www/firefox10/files/moz_pis_S50cleanhome
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+
+# S50cleanhome
+# a script to clean up users' Mozilla home directories to make upgrading
+# less painful.
+
+# We run in our own subshell
+
+# First, verify protocol
+[ "$1" != "start" ] && exit 1
+[ -z "${MOZ_PIS_API}" -o ${MOZ_PIS_API} -ne 2 ] && exit 1
+[ -z "${MOZ_PIS_MOZBINDIR}" -o ! -d "${MOZ_PIS_MOZBINDIR}" ] && exit 1
+[ -z "${HOME}" -o ! -d "${HOME}" ] && exit 1
+[ -z "${MOZ_PIS_USER_DIR}" -o ! -d "${HOME}/${MOZ_PIS_USER_DIR}" ] && exit 1
+
+# Try to cleanup ${HOME}/${MOZ_PIS_USER_DIR}
+
+if [ -f "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" ]; then
+ sed -e '/Path=/! d' -e "s,Path=,${HOME}/${MOZ_PIS_USER_DIR}/," \
+ "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" \
+ | while read dir
+ do
+ [ ! -d "${dir}" ] && continue
+ # Debian does this for new builds
+ # rm -f "${dir}/XUL.mfasl"
+ # force a rebuild of compreg.dat and xpti.dat for new installations
+ [ "${dir}/compreg.dat" -ot "${MOZ_PIS_MOZBINDIR}/components.ini" ] &&
+ rm -f "${dir}/compatibility.ini" "${dir}/XUL.mfasl"
+ done
+fi
diff --git a/www/firefox10/files/mozconfig.in b/www/firefox10/files/mozconfig.in
new file mode 100644
index 000000000..4b0ccab41
--- /dev/null
+++ b/www/firefox10/files/mozconfig.in
@@ -0,0 +1,83 @@
+# .mozconfig.in -*-shell-script-*-
+# $FreeBSD: ports/www/firefox/files/mozconfig.in,v 1.29 2004/12/28 00:51:58 ahze Exp $
+######################################################################
+# standard opts from README
+export MOZ_PHOENIX=1
+mk_add_options MOZ_PHOENIX=1
+ac_add_options --enable-crypto
+ac_add_options --disable-tests
+ac_add_options --disable-mailnews
+ac_add_options --disable-composer
+ac_add_options --enable-default-toolkit=gtk2
+# See the following URL for approval email for using official branding
+# http://people.freebsd.org/~ahze/firefox_thunderbird-approved.txt
+ac_add_options --enable-official-branding
+######################################################################
+# FBSD specific
+export CPPFLAGS="@CPPFLAGS@"
+export CFLAGS="@CFLAGS@"
+export LIBS="@LIBS@"
+export LDFLAGS="@LDFLAGS@"
+export CONFIG_SH=/bin/sh
+export XP_UNIX=1
+mk_add_options XP_UNIX=1
+export PERL="@PERL@"
+mk_add_options PERL=$PERL
+# Configure options for installation
+ac_add_options --prefix=@FAKEDIR@
+ac_add_options --x-includes=@X11BASE@/include
+ac_add_options --x-libraries=@X11BASE@/lib
+######################################################################
+# Use ports for these libraries
+ac_add_options --with-system-jpeg=@LOCALBASE@
+ac_add_options --with-system-zlib
+ac_add_options --with-system-png=@LOCALBASE@
+ac_add_options --with-system-mng=@LOCALBASE@
+ac_add_options --without-system-nspr
+ac_add_options --with-gssapi=/usr
+######################################################################
+# set compile/link features
+ac_add_options --with-pthreads
+######################################################################
+# disable unneeded/unavailable
+ac_add_options --disable-auto-deps
+ac_add_options --disable-bidi
+ac_add_options --disable-dtd-debug
+ac_add_options --disable-jsd
+ac_add_options --disable-ldap
+ac_add_options --disable-pedantic
+ac_add_options --disable-profilesharing
+ac_add_options --disable-installer
+ac_add_options --enable-single-profile
+ac_add_options --disable-profilesharing
+ac_add_options --enable-image-decoders=png,gif,jpeg,bmp
+ac_add_options --enable-extensions="cookie,xml-rpc,xmlextras,pref,transformiix,universalchardet,webservices,inspector,p3p,gnomevfs"
+######################################################################
+# conditional from port Makefile
+#if test -n "$WITH_REORDER"; then
+# ac_add_options --enable-reorder
+#else
+# ac_add_options --disable-reorder
+#fi # test -n "$WITH_REORDER"
+if test -n "$WITH_DEBUG"; then
+ ac_add_options --enable-debug
+ ac_add_options --disable-strip
+else
+ ac_add_options --disable-debug
+ ac_add_options --enable-optimize=${WITH_OPTIMIZE}
+ ac_add_options --enable-strip
+fi # test -n "$WITH_DEBUG"
+if test -n "$WITH_LOGGING"; then
+ ac_add_options --enable-logging
+else
+ ac_add_options --disable-logging
+fi # test -n "$WITH_LOGGING"
+if test -z "$WITHOUT_XFT"; then
+ ac_add_options --enable-xft
+else
+ ac_add_options --disable-xft
+fi # test -z "$WITHOUT_XFT"
+if test -z "$WITH_SMB"; then
+ ac_add_options --disable-gnomevfs
+fi # test -z "$WITH_SMB"
+######################################################################
diff --git a/www/firefox10/files/patch-Double.cpp b/www/firefox10/files/patch-Double.cpp
new file mode 100644
index 000000000..a9b570c5d
--- /dev/null
+++ b/www/firefox10/files/patch-Double.cpp
@@ -0,0 +1,61 @@
+$FreeBSD: ports/www/firefox/files/patch-Double.cpp,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
+@@ -51,10 +51,10 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
+-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+-#else
++#if defined(__i386__)
+ fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
++#else
++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #endif
+ fp_except_t oldmask = fpsetmask(~allmask);
+ #endif
+@@ -75,22 +75,31 @@
+ #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
+ #define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+
++union ui32dun {
++ PRUint32 i[2];
++ double d;
++};
++
+ //-- Initialize Double related constants
+ #ifdef IS_BIG_ENDIAN
+-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+- 0xffffffff};
+-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
+-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
++const union ui32dun nanMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}};
++const union ui32dun infMask =
++ {{TX_DOUBLE_HI32_EXPMASK, 0}};
++const union ui32dun negInfMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}};
+ #else
+-const PRUint32 nanMask[2] = {0xffffffff,
+- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
+-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
+-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
++const union ui32dun nanMask =
++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}};
++const union ui32dun infMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK}};
++const union ui32dun negInfMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}};
+ #endif
+
+-const double Double::NaN = *((double*)nanMask);
+-const double Double::POSITIVE_INFINITY = *((double*)infMask);
+-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
++const double Double::NaN = nanMask.d;
++const double Double::POSITIVE_INFINITY = infMask.d;
++const double Double::NEGATIVE_INFINITY = negInfMask.d;
+
+ /*
+ * Determines whether the given double represents positive or negative
diff --git a/www/firefox10/files/patch-browser_app_mozilla.in b/www/firefox10/files/patch-browser_app_mozilla.in
new file mode 100644
index 000000000..492dacc52
--- /dev/null
+++ b/www/firefox10/files/patch-browser_app_mozilla.in
@@ -0,0 +1,465 @@
+--- browser/app/mozilla.in.orig Tue Oct 26 11:26:11 2004
++++ browser/app/mozilla.in Mon Feb 28 23:32:14 2005
+@@ -29,51 +29,83 @@
+ ## the mozilla-bin binary to work.
+ ##
+
++#
++# MOZ_PIS, "Mozilla Plugable Init Scripts"
++# MOZ_PIS_ is the name space used
++# These variables and there meaning are specified in
++# mozilla/xpfe/bootstrap/init.d/README
+ moz_pis_startstop_scripts()
+ {
+- MOZ_USER_DIR="%MOZ_USER_DIR%"
+- # MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts"
+- # These variables and there meaning are specified in
+- # mozilla/xpfe/bootstrap/init.d/README
+- MOZ_PIS_API=2
+- MOZ_PIS_MOZBINDIR="${dist_bin}"
+- MOZ_PIS_SESSION_PID="$$"
+- MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
+- export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
+-
+- case "${1}" in
+- "start")
+- for curr_pis in "${dist_bin}/init.d"/S* "${HOME}/${MOZ_USER_DIR}/init.d"/S* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "start" ;;
+- esac
+- fi
+- done
+- ;;
+- "stop")
+- for curr_pis in "${HOME}/${MOZ_USER_DIR}/init.d"/K* "${dist_bin}/init.d"/K* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "stop" ;;
+- esac
+- fi
+- done
+- ;;
+- *)
+- echo 1>&2 "$0: Internal error in moz_pis_startstop_scripts."
+- exit 1
+- ;;
+- esac
++ MOZ_PIS_API=2
++ MOZ_PIS_MOZBINDIR="${dist_bin}"
++ MOZ_PIS_SESSION_PID="$$"
++ MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
++ export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
++
++ case "${1}" in
++ "start")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/S* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/S*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "start"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ "stop")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/K* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/K*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "stop"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ *)
++ echo "$0: Internal error in moz_pis_startstop_scripts." 1>&2
++ exit 1
++ ;;
++ esac
+ }
+
+-#uncomment for debugging
++# uncomment for debugging
+ #set -x
+
+-moz_libdir=%MOZAPPDIR%
+-MRE_HOME=%MREDIR%
++#
++# variables
++#
++#location="new-tab"
++#MOZILLA_UILOCALE="en-US"
++#MOZILLA_UIREGION="US"
++
++#
++# working definitions
++#
++MOZ_USER_DIR="%MOZ_USER_DIR%"
++moz_libdir="%MOZAPPDIR%"
++MRE_HOME="%MREDIR%"
++
++debugging= # set the debugging level
++use_openFile="yes" # use openFile() for file/dir
++here=`pwd`
++
++if [ ! -d "${MRE_HOME}" ]; then
++ # use moz_libdir as MRE_HOME
++ MRE_HOME="${moz_libdir}"
++fi
++export MRE_HOME
+
+ # Use run-mozilla.sh in the current dir if it exists
+ # If not, then start resolving symlinks until we find run-mozilla.sh
+@@ -82,149 +114,217 @@
+ curdir=`dirname "$progname"`
+ progbase=`basename "$progname"`
+ run_moz="$curdir/run-mozilla.sh"
+-if test -x "$run_moz"; then
+- dist_bin="$curdir"
+- found=1
++if [ -x "$run_moz" ]; then
++ dist_bin="$curdir"
++ found=1
+ else
+- here=`/bin/pwd`
+- while [ -h "$progname" ]; do
+- bn=`basename "$progname"`
+- cd `dirname "$progname"`
+- progname=`/bin/ls -l "$bn" | sed -e 's/^.* -> //' `
+- if [ ! -x "$progname" ]; then
+- break
+- fi
+- curdir=`dirname "$progname"`
+- run_moz="$curdir/run-mozilla.sh"
+- if [ -x "$run_moz" ]; then
+- cd "$curdir"
+- dist_bin=`pwd`
+- run_moz="$dist_bin/run-mozilla.sh"
+- found=1
+- break
+- fi
+- done
+- cd "$here"
++ while [ -h "${progname}" ]; do
++ bn=`basename "${progname}"`
++ cd `dirname "${progname}"`
++ progname=`ls -l "${bn}" | sed -e 's/^.* -> //'`
++ if [ ! -x "$progname" ]; then
++ break
++ fi
++ curdir=`dirname "${progname}"`
++ run_moz="${curdir}/run-mozilla.sh"
++ if [ -x "${run_moz}" ]; then
++ cd "$curdir"
++ dist_bin=`pwd`
++ run_moz="${dist_bin}/run-mozilla.sh"
++ found=1
++ break
++ fi
++ done
++ cd "${here}"
+ fi
+ if [ $found = 0 ]; then
+- # Check default compile-time libdir
+- if [ -x "$moz_libdir/run-mozilla.sh" ]; then
+- dist_bin="$moz_libdir"
+- else
+- echo "Cannot find mozilla runtime directory. Exiting."
+- exit 1
+- fi
+-fi
+-
+-script_args=""
+-moreargs=""
+-debugging=0
+-MOZILLA_BIN="${progbase}-bin"
+-
+-# The following is to check for a currently running instance.
+-# This is taken almost verbatim from the Mozilla RPM package's launch script.
+-MOZ_CLIENT_PROGRAM="$dist_bin/mozilla-xremote-client"
+-check_running() {
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" 'ping()' 2>/dev/null >/dev/null
+- RETURN_VAL=$?
+- if [ $RETURN_VAL -eq 0 ]; then
+- echo 1
+- return 1
++ # Check default compile-time libdir
++ if [ -x "${moz_libdir}/run-mozilla.sh" ]; then
++ dist_bin="$moz_libdir"
++ run_moz="${dist_bin}/run-mozilla.sh"
+ else
+- echo 0
+- return 0
++ echo "$0: Cannot find mozilla runtime directory. Exiting." 1>&2
++ exit 1
+ fi
+-}
++fi
+
++MOZILLA_BIN="${progbase}-bin"
+ if [ "$OSTYPE" = "beos" ]; then
+- mimeset -F "$MOZILLA_BIN"
++ mimeset -F "$MOZILLA_BIN"
+ fi
+
+-ALREADY_RUNNING=`check_running`
++# test for binary apps in ${dist_bin}
++if [ -x "${dist_bin}/${MOZILLA_BIN}" ]; then
++ MOZILLA_BIN="${dist_bin}/${progbase}-bin"
++else
++ echo "$0: Cannot find mozilla binary executable. Exiting." 1>&2
++ exit 1
++fi
++if [ -x "${dist_bin}/mozilla-xremote-client" ]; then
++ MOZ_CLIENT_PROGRAM="${dist_bin}/mozilla-xremote-client -a ${progbase}"
++else
++ MOZ_CLIENT_PROGRAM="${MOZILLA_BIN} -remote -a ${progbase}"
++fi
+
+-################################################################ Parse Arguments
+-# If there's a command line argument but it doesn't begin with a -
+-# it's probably a url. Try to send it to a running instance.
+-_USE_EXIST=0
+-_optOne="$1"
+-case "${_optOne}" in
+- -*)
+- ;;
++# guest a default remote command
++_remote_cmd="xfeDoCommand(openBrowser)"
++
++# parse options
++script_args= # null
++moreargs= # null
++target= # null
++ALREADY_RUNNING="test"
++while [ $# -gt 0 ]
++do
++ if [ -n "${target}" ]; then
++ # well, this can't be the target if not last
++ moreargs="${moreargs} \"${target}\""
++ target= # null
++ fi
++ case "$1" in
++ # preserve [pP] for profile
++ --pure | -pure)
++ MOZILLA_BIN="${MOZILLA_BIN}.pure"
++ shift
++ ;;
++ -g | --debug)
++ script_args="${script_args} -g"
++ debugging=1
++ shift
++ ;;
++ -d | --debugger)
++ if [ -n "$2" ]; then
++ script_args="${script_args} -d $2"
++ shift 2
++ else
++ "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Ll]ocale)
++ if [ -n "$2" ]; then
++ uilocale="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Rr]egion)
++ if [ -n "$2" ]; then
++ uiregion="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -browser)
++ # browser is default for firefox
++ shift
++ ;;
++ -turbo | -nosplash | -quiet)
++ # use remote even with this
++ moreargs="${moreargs} $1"
++ shift
++ ;;
++ -*)
++ # don't use remote with options
++ ALREADY_RUNNING= # null
++ moreargs="${moreargs} $1"
++ shift
++ ;;
+ *)
+- _USE_EXIST=1
+- ;;
+-esac
+-
+-_optLast=
+-for i in "$@"; do
+- _optLast="${i}"
+-done #last arg
+-
+-if [ `expr "${_optLast}" : '.*:/.*'` -eq 0 -a \( -f "${_optLast}" -o -d "${_optLast}" \) ]; then
+- # Last argument seems to be a local file/directory
+- # Check, if it is absolutely specified (ie. /home/foo/file vs. ./file)
+- # If it is just "relatively" (./file) specified, make it absolutely
+- [ `expr "${_optLast}" : '/.*'` -eq 0 ] && _optLast="file://`pwd`/${_optLast}"
+-fi
+-################################################################ Parse Arguments
+-
+-########################################################################### Main
+-if [ $ALREADY_RUNNING -eq 1 ]; then
+- # There's an instance already running. Use it.
+- # Any command line args passed in?
+- if [ $# -gt 0 ]; then
+- # There were "some" command line args.
+- if [ ${_USE_EXIST} -eq 1 ]; then
+- # We should use an existing instance, as _USE_EXIST=$_USE_EXIST=-1
+- _remote_cmd="openURL(${_optLast})"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "${_remote_cmd}"
+- unset _remote_cmd
+- exit $?
+- fi
++ target="$1"
++ shift
++ ;;
++ esac
++done
++
++# test for a running copy of firefox
++# seems this is not needed
++#if [-n "${ALREADY_RUNNING}" ]; then
++# if [ -n "${DISPLAY}" ]; then
++# if [ -n "${debugging}" ]; then
++# echo "${run_moz} ${MOZ_CLIENT_PROGRAM} ping()"
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' && ALREADY_RUNNING="yes"
++# else
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' >/dev/null 2>&1 &&
++# ALREADY_RUNNING="yes"
++# fi
++# elif [ -n "${debugging}" ]; then
++# echo "$0: WARN, no DISPLAY environment" 1>&2
++# fi
++#fi
++
++# process target
++if [ -n "${target}" ]; then
++ moreargs="${moreargs} \"${target}\""
++ if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ `expr "${target}" : '.*:.*'` -eq 0 ]; then
++ if [ `expr "${target}" : '/.*'` -eq 0 ]; then
++ target="${here}/${target}"
++ fi
++ if [ -r "${target}" -o -d "${target}" ]; then
++ [ -n "${use_openFile}" ] || target="file://${target}"
++ else
++ echo "$0: WARN, target: ${target} not an URI/file/dir" 1>&2
++ ALREADY_RUNNING= # null
++ fi
+ else
+- # No command line args. Open new window/tab
+- #exec "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- exit $?
++ # an former URI, don't use openFile
++ use_openFile= # null
+ fi
++ fi
+ fi
+-# Default action - no running instance or _USE_EXIST (${_USE_EXIST}) ! -eq 1
+-########################################################################### Main
+
+-while [ $# -gt 0 ]
+-do
+- case "$1" in
+- -p | --pure | -pure)
+- MOZILLA_BIN="${MOZILLA_BIN}.pure"
+- shift
+- ;;
+- -g | --debug)
+- script_args="$script_args -g"
+- debugging=1
+- shift
+- ;;
+- -d | --debugger)
+- script_args="$script_args -d $2"
+- shift 2
+- ;;
+- *)
+- moreargs="$moreargs \"$1\""
+- shift 1
+- ;;
+- esac
+-done
++# try remote protocol if running
++if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ -n "${target}" ]; then
++ if [ -n "${use_openFile}" ]; then
++ _remote_cmd="openFile(${target})"
++ elif [ -n "${location}" ]; then
++ _remote_cmd="openURL(${target},${location})"
++ else
++ _remote_cmd="openURL(${target})"
++ fi
++ fi
++ # FIXME problems with freedesktop StartupNotify
++ if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd}"
++ fi
++ ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} && exit 0
++fi
++
++# fallback to direct invocation
++
++# UILocale, UIRegion
++if [ -z "${uilocale}" -a -n "${MOZILLA_UILOCALE}" ]; then
++ uilocale="${MOZILLA_UILOCALE}"
++fi
++if [ -z "${uiregion}" -a -n "${MOZILLA_UIREGION}" ]; then
++ uiregion="${MOZILLA_UIREGION}"
++fi
++if [ -n "${uiregion}" -a -z "${uilocale}" ]; then
++ uilocale="en-US"
++fi
++if [ -n "${uilocale}" ]; then
++ if [ -n "${uiregion}" ]; then
++ moreargs="-UIRegion ${uiregion} ${moreargs}"
++ fi
++ moreargs="-UILocale ${uilocale} ${moreargs}"
++fi
+
+-export MRE_HOME
+-eval "set -- $moreargs"
++# real invocation
++eval "set -- ${moreargs}"
+
+ ## Start addon scripts
+ moz_pis_startstop_scripts "start"
+
+-if [ $debugging = 1 ]
+-then
+- echo $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"
++if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZILLA_BIN} $@"
+ fi
+-"$dist_bin/run-mozilla.sh" $script_args "$dist_bin/$MOZILLA_BIN" "$@"
++${run_moz} ${script_args} ${MOZILLA_BIN} "$@"
+ exitcode=$?
+
+ ## Stop addon scripts
diff --git a/www/firefox10/files/patch-bugzilla149334 b/www/firefox10/files/patch-bugzilla149334
new file mode 100644
index 000000000..fe1be5bc8
--- /dev/null
+++ b/www/firefox10/files/patch-bugzilla149334
@@ -0,0 +1,342 @@
+Index: gfx/idl/nsIFreeType2.idl
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/idl/nsIFreeType2.idl,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsIFreeType2.idl
+--- gfx/idl/nsIFreeType2.idl 15 Apr 2004 23:30:02 -0000 1.10
++++ gfx/idl/nsIFreeType2.idl 26 May 2004 10:00:54 -0000
+@@ -76,10 +76,11 @@ native FT_Pointer(FT_Pointer);
+ native FT_Sfnt_Tag(FT_Sfnt_Tag);
+ native FT_Size(FT_Size);
+
+-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
++[ptr] native FTC_ImageType_p(FTC_ImageType);
+ native FTC_Face_Requester(FTC_Face_Requester);
+ native FTC_Font(FTC_Font);
+-native FTC_Image_Cache(FTC_Image_Cache);
++native FTC_FaceID(FTC_FaceID);
++native FTC_ImageCache(FTC_ImageCache);
+ native FTC_Manager(FTC_Manager);
+
+ // #ifdef MOZ_SVG
+@@ -99,7 +100,7 @@ interface nsIFreeType2 : nsISupports
+
+ readonly attribute FT_Library library;
+ readonly attribute FTC_Manager FTCacheManager;
+- readonly attribute FTC_Image_Cache ImageCache;
++ readonly attribute FTC_ImageCache ImageCache;
+
+ void doneFace(in FT_Face face);
+ void doneFreeType(in FT_Library lib);
+@@ -115,16 +116,16 @@ interface nsIFreeType2 : nsISupports
+ void outlineDecompose(in FT_Outline_p outline,
+ in const_FT_Outline_Funcs_p funcs, in voidPtr p);
+ void setCharmap(in FT_Face face, in FT_CharMap charmap);
+- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
++ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
+ in FT_UInt gindex, out FT_Glyph glyph);
+- void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
+- out FT_Face face, out FT_Size size);
++ void managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
++ out FT_Face face);
+ void managerDone(in FTC_Manager manager);
+ void managerNew(in FT_Library lib, in FT_UInt max_faces,
+ in FT_UInt max_sizes, in FT_ULong max_bytes,
+ in FTC_Face_Requester requester, in FT_Pointer req_data,
+ out FTC_Manager manager);
+- void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
++ void imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
+ /* #ifdef MOZ_SVG */
+ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
+ in FT_Vector_p delta);
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 17 Apr 2004 21:52:29 -0000 1.25
++++ gfx/src/freetype/nsFreeType.cpp 26 May 2004 10:00:54 -0000
+@@ -110,11 +110,11 @@ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
+ {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
+ {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
+- {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
+- {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
++ {"FTC_ImageCache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
++ {"FTC_Manager_LookupFace", NS_FT2_OFFSET(nsFTC_Manager_LookupFace), PR_TRUE},
+ {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
+ {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
+- {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
++ {"FTC_ImageCache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
+ // #ifdef MOZ_SVG
+ {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
+ {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
+@@ -282,7 +282,7 @@ nsFreeType2::SetCharmap(FT_Face face, FT
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
++nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
+ FT_UInt glyphID, FT_Glyph *glyph)
+ {
+ // call the FreeType2 function via the function pointer
+@@ -291,11 +291,11 @@ nsFreeType2::ImageCacheLookup(FTC_Image_
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
+- FT_Face *face, FT_Size *size)
++nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
++ FT_Face *face)
+ {
+ // call the FreeType2 function via the function pointer
+- FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
++ FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
+ return error ? NS_ERROR_FAILURE : NS_OK;
+ }
+
+@@ -320,7 +320,7 @@ nsFreeType2::ManagerNew(FT_Library libra
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
++nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
+ {
+ // call the FreeType2 function via the function pointer
+ FT_Error error = nsFTC_Image_Cache_New(manager, cache);
+@@ -389,7 +389,7 @@ nsFreeType2::SupportsExtFunc(PRBool *res
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
++nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
+ {
+ *aCache = mImageCache;
+ return NS_OK;
+Index: gfx/src/freetype/nsFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.h,v
+retrieving revision 1.17
+diff -u -3 -p -r1.17 nsFreeType.h
+--- gfx/src/freetype/nsFreeType.h 17 Apr 2004 21:52:29 -0000 1.17
++++ gfx/src/freetype/nsFreeType.h 26 May 2004 10:00:54 -0000
+@@ -120,13 +120,13 @@ typedef FT_Error (*FT_Outline_Decompose_
+ typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
+ typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
+ typedef FT_Error (*FTC_Image_Cache_Lookup_t)
+- (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
+-typedef FT_Error (*FTC_Manager_Lookup_Size_t)
+- (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
++ (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
++typedef FT_Error (*FTC_Manager_LookupFace_t)
++ (FTC_Manager, FTC_FaceID, FT_Face*);
+ typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
+ typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
+ FTC_Face_Requester, FT_Pointer, FTC_Manager*);
+-typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
++typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
+ // #ifdef MOZ_SVG
+ typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
+ typedef FT_Error (*FT_Get_Kerning_t)
+@@ -181,7 +181,7 @@ protected:
+ FT_Outline_Decompose_t nsFT_Outline_Decompose;
+ FT_Set_Charmap_t nsFT_Set_Charmap;
+ FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
+- FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
++ FTC_Manager_LookupFace_t nsFTC_Manager_LookupFace;
+ FTC_Manager_Done_t nsFTC_Manager_Done;
+ FTC_Manager_New_t nsFTC_Manager_New;
+ FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
+@@ -229,7 +229,7 @@ protected:
+ PRLibrary *mSharedLib;
+ FT_Library mFreeTypeLibrary;
+ FTC_Manager mFTCacheManager;
+- FTC_Image_Cache mImageCache;
++ FTC_ImageCache mImageCache;
+
+ static nsHashtable *sFontFamilies;
+ static nsHashtable *sRange1CharSetNames;
+Index: gfx/src/ps/nsFontMetricsPS.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v
+retrieving revision 1.43
+diff -u -3 -p -r1.43 nsFontMetricsPS.cpp
+--- gfx/src/ps/nsFontMetricsPS.cpp 17 Apr 2004 21:52:31 -0000 1.43
++++ gfx/src/ps/nsFontMetricsPS.cpp 26 May 2004 10:01:03 -0000
+@@ -1140,10 +1140,10 @@ nsFontPSFreeType::Init(nsITrueTypeFontCa
+
+ mPixelSize = NSToIntRound(app2dev * mFont->size);
+
+- mImageDesc.font.face_id = (void*)mEntry;
+- mImageDesc.font.pix_width = mPixelSize;
+- mImageDesc.font.pix_height = mPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
++ mImageDesc->width = mPixelSize;
++ mImageDesc->height = mPixelSize;
++ mImageDesc->flags = 0;
+
+ nsresult rv;
+ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
+@@ -1189,7 +1189,7 @@ nsFontPSFreeType::GetWidth(const PRUnich
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache iCache;
++ FTC_ImageCache iCache;
+ nsresult rv = mFt2->GetImageCache(&iCache);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Failed to get Image Cache");
+@@ -1227,8 +1227,8 @@ nsFontPSFreeType::getFTFace()
+
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ NS_ASSERTION(rv==0, "failed to get face/size");
+ if (rv)
+ return nsnull;
+@@ -1621,16 +1621,16 @@ void nsFT2Type8Generator::GeneratePSFont
+ mEntry->GetFamilyName(fontName);
+ mEntry->GetStyleName(styleName);
+
+- mImageDesc.font.face_id = (void*)mEntry;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
+ // TT glyph has no relation to size
+- mImageDesc.font.pix_width = 16;
+- mImageDesc.font.pix_height = 16;
+- mImageDesc.image_type = 0;
++ mImageDesc->width = 16;
++ mImageDesc->height = 16;
++ mImageDesc->flags = 0;
+ FT_Face face = nsnull;
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ if (NS_FAILED(rv))
+ return;
+
+Index: gfx/src/ps/nsFontMetricsPS.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFontMetricsPS.h
+--- gfx/src/ps/nsFontMetricsPS.h 17 Apr 2004 21:52:31 -0000 1.25
++++ gfx/src/ps/nsFontMetricsPS.h 26 May 2004 10:01:03 -0000
+@@ -319,7 +319,7 @@ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+
+
+ static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
+@@ -362,7 +362,7 @@ public:
+ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
+ nsCOMPtr<nsIFreeType2> mFt2;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ };
+ #endif
+
+Index: gfx/src/x11shared/nsFontFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.cpp,v
+retrieving revision 1.14
+diff -u -3 -p -r1.14 nsFontFreeType.cpp
+--- gfx/src/x11shared/nsFontFreeType.cpp 17 Apr 2004 21:52:34 -0000 1.14
++++ gfx/src/x11shared/nsFontFreeType.cpp 26 May 2004 10:01:03 -0000
+@@ -177,7 +177,7 @@ nsFreeTypeFont::getFTFace()
+ FTC_Manager mgr;
+ nsresult rv;
+ mFt2->GetFTCacheManager(&mgr);
+- rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
++ rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
+ if (NS_FAILED(rv))
+ return nsnull;
+@@ -191,22 +191,15 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ PRBool embedded_bimap = PR_FALSE;
+ mFaceID = aFaceID;
+ mPixelSize = aPixelSize;
+- mImageDesc.font.face_id = (void*)mFaceID;
+- mImageDesc.font.pix_width = aPixelSize;
+- mImageDesc.font.pix_height = aPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mFaceID;
++ mImageDesc->width = aPixelSize;
++ mImageDesc->height = aPixelSize;
++ mImageDesc->flags = 0;
+
+ if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+- mImageDesc.image_type |= ftc_image_mono;
+ anti_alias = PR_FALSE;
+ }
+
+- if (nsFreeType2::gFreeType2Autohinted)
+- mImageDesc.image_type |= ftc_image_flag_autohinted;
+-
+- if (nsFreeType2::gFreeType2Unhinted)
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+-
+ PRUint32 num_embedded_bitmaps, i;
+ PRInt32* embedded_bitmapheights;
+ mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
+@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ if (embedded_bitmapheights[i] == aPixelSize) {
+ embedded_bimap = PR_TRUE;
+ // unhinted must be set for embedded bitmaps to be used
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+ break;
+ }
+ }
+@@ -312,7 +304,7 @@ nsFreeTypeFont::doGetBoundingMetrics(con
+ if (!face)
+ return NS_ERROR_FAILURE;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return NS_ERROR_FAILURE;
+@@ -401,7 +393,7 @@ nsFreeTypeFont::GetWidth(const PRUnichar
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+@@ -723,7 +715,7 @@ nsFreeTypeXImage::DrawString(nsRendering
+ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
+ #endif
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+Index: gfx/src/x11shared/nsFontFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.h,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsFontFreeType.h
+--- gfx/src/x11shared/nsFontFreeType.h 17 Apr 2004 21:52:34 -0000 1.10
++++ gfx/src/x11shared/nsFontFreeType.h 26 May 2004 10:01:03 -0000
+@@ -110,7 +110,7 @@ protected:
+ XImage *GetXImage(PRUint32 width, PRUint32 height);
+ nsITrueTypeFontCatalogEntry *mFaceID;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ };
+
diff --git a/www/firefox10/files/patch-build_unix_mozilla-xpcom.pc.in b/www/firefox10/files/patch-build_unix_mozilla-xpcom.pc.in
new file mode 100644
index 000000000..4e982a544
--- /dev/null
+++ b/www/firefox10/files/patch-build_unix_mozilla-xpcom.pc.in
@@ -0,0 +1,8 @@
+--- build/unix/mozilla-xpcom.pc.in.orig Thu Jun 24 12:23:09 2004
++++ build/unix/mozilla-xpcom.pc.in Thu Jun 24 12:23:18 2004
+@@ -8,4 +8,4 @@
+ Version: %MOZILLA_VERSION%
+ Requires: mozilla-nspr = %MOZILLA_VERSION%
+ Libs: -L${libdir} -lxpcom
+-Cflags: -I${includedir}/xpcom -I${includedir}/string
++Cflags: -I${includedir}/xpcom -I${includedir}/string -I${includedir}
diff --git a/www/firefox10/files/patch-build_unix_run-mozilla.sh b/www/firefox10/files/patch-build_unix_run-mozilla.sh
new file mode 100644
index 000000000..ab658a150
--- /dev/null
+++ b/www/firefox10/files/patch-build_unix_run-mozilla.sh
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-build_unix_run-mozilla.sh,v 1.5 2004/02/11 19:30:49 marcus Exp $
+
+--- build/unix/run-mozilla.sh.orig Mon Dec 15 12:27:28 2003
++++ build/unix/run-mozilla.sh Wed Feb 11 14:24:17 2004
+@@ -355,7 +355,7 @@
+ fi
+ ##
+ ## Set LD_LIBRARY_PATH
+-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
++LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+ if [ -n "$LD_LIBRARYN32_PATH" ]
+ then
+ LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
+@@ -442,6 +442,9 @@
+ #
+ export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
+ export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
++
++MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
++export MOZ_PLUGIN_PATH
+
+ if [ $moz_debug -eq 1 ]
+ then
diff --git a/www/firefox10/files/patch-config-mkdepend-imakemdep.h b/www/firefox10/files/patch-config-mkdepend-imakemdep.h
new file mode 100644
index 000000000..424ac6784
--- /dev/null
+++ b/www/firefox10/files/patch-config-mkdepend-imakemdep.h
@@ -0,0 +1,12 @@
+$FreeBSD: ports/www/firefox/files/patch-config-mkdepend-imakemdep.h,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998
++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003
+@@ -278,4 +278,7 @@
+ "-D__i386__",
+ # endif
++# if defined(__amd64__) || defined(__x86_64__)
++ "-D__amd64__ -D__x86_64__",
++# endif
+ # ifdef __GNUC__
+ "-traditional",
diff --git a/www/firefox10/files/patch-config-rules.mk b/www/firefox10/files/patch-config-rules.mk
new file mode 100644
index 000000000..f8697ee4c
--- /dev/null
+++ b/www/firefox10/files/patch-config-rules.mk
@@ -0,0 +1,16 @@
+$FreeBSD: ports/www/firefox/files/patch-config-rules.mk,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- config/rules.mk.orig Tue Aug 26 13:28:47 2003
++++ config/rules.mk Sun Feb 1 15:11:41 2004
+@@ -444,7 +444,11 @@
+
+ ifeq ($(OS_ARCH),FreeBSD)
+ ifdef IS_COMPONENT
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
++else
+ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
++endif
+ endif
+ endif
+
diff --git a/www/firefox10/files/patch-config::mkdepend::Makefile.in b/www/firefox10/files/patch-config::mkdepend::Makefile.in
new file mode 100644
index 000000000..bace012a2
--- /dev/null
+++ b/www/firefox10/files/patch-config::mkdepend::Makefile.in
@@ -0,0 +1,10 @@
+--- config/mkdepend/Makefile.in.orig Sun Dec 12 07:36:57 2004
++++ config/mkdepend/Makefile.in Sun Dec 12 07:37:55 2004
+@@ -57,6 +57,7 @@
+ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\"
++HOST_CFLAGS += $(XCFLAGS)
+
+ ifdef GNU_CC
+ _GCCDIR = $(shell $(CC) -print-file-name=include)
diff --git a/www/firefox10/files/patch-configure b/www/firefox10/files/patch-configure
new file mode 100644
index 000000000..9e60372ad
--- /dev/null
+++ b/www/firefox10/files/patch-configure
@@ -0,0 +1,38 @@
+--- configure.orig Fri Feb 13 01:06:29 2004
++++ configure Fri Feb 13 01:07:17 2004
+@@ -9181,7 +9181,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9187 "configure"
+ #include "confdefs.h"
+@@ -9212,7 +9212,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
+@@ -9222,7 +9222,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9228 "configure"
+ #include "confdefs.h"
+@@ -9253,7 +9253,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ fi
diff --git a/www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp b/www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
new file mode 100644
index 000000000..7c07aad7f
--- /dev/null
+++ b/www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
@@ -0,0 +1,48 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.cpp.orig Wed Nov 19 01:20:47 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp Tue Feb 10 02:52:26 2004
+@@ -323,11 +323,11 @@
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly",
+ &mStartLinksOnlyPref);
+
+- PRBool isSoundEnabled = PR_TRUE;
++ mIsSoundEnabled = PR_TRUE;
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound",
+- &isSoundEnabled);
++ &mIsSoundEnabled);
+ nsXPIDLCString soundStr;
+- if (isSoundEnabled) {
++ if (mIsSoundEnabled && mIsSoundEnabled) {
+ prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL",
+ getter_Copies(soundStr));
+ }
+@@ -758,7 +758,7 @@
+ }
+ else {
+ // No find string to backspace in!
+- if (mIsBackspaceProtectOn) {
++ if (mIsBackspaceProtectOn && mIsSoundEnabled) {
+ // This flag should be on only if the last key was a backspace.
+ // It keeps us from accidentally hitting backspace too many times and
+ // going back in history when we really just wanted to clear
+@@ -1012,7 +1012,9 @@
+
+ // Error sound (don't fire when backspace is pressed, they're
+ // trying to correct the mistake!)
+- PlayNotFoundSound();
++ if (mIsSoundEnabled) {
++ PlayNotFoundSound();
++ }
+
+ // Remove bad character from buffer, so we can continue typing from
+ // last matched character
+@@ -1059,7 +1061,7 @@
+ void
+ nsTypeAheadFind::PlayNotFoundSound()
+ {
+- if (mNotFoundSoundURL.IsEmpty()) // no sound
++ if (mNotFoundSoundURL.IsEmpty() || !mIsSoundEnabled) // no sound
+ return;
+ if (!mSoundInterface) {
+ mSoundInterface = do_CreateInstance("@mozilla.org/sound;1");
diff --git a/www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h b/www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
new file mode 100644
index 000000000..86c9567a8
--- /dev/null
+++ b/www/firefox10/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
@@ -0,0 +1,14 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig Fri May 23 22:00:33 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.h Mon Feb 9 22:21:43 2004
+@@ -194,6 +194,9 @@
+
+ nsCString mNotFoundSoundURL;
+
++ // Move the sound enabled boolean out for all methods to access.
++ PRBool mIsSoundEnabled;
++
+ // PRBool's are used instead of PRPackedBool's where the address of the
+ // boolean variable is getting passed into a method. For example:
+ // GetBoolPref("accessibility.typeaheadfind.linksonly", &mLinksOnlyPref);
diff --git a/www/firefox10/files/patch-nspr-unix.c b/www/firefox10/files/patch-nspr-unix.c
new file mode 100644
index 000000000..e453013b5
--- /dev/null
+++ b/www/firefox10/files/patch-nspr-unix.c
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-nspr-unix.c,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
++++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
+@@ -65,7 +65,8 @@
+ * PRInt32* pointer to a _PRSockLen_t* pointer.
+ */
+ #if defined(HAVE_SOCKLEN_T) \
+- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
++ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
++ || defined(FREEBSD)
+ #define _PRSockLen_t socklen_t
+ #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
+ || defined(AIX4_1) || defined(LINUX) || defined(SONY) \
+@@ -73,7 +74,7 @@
+ || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
+ || defined(NEXTSTEP) || defined(QNX)
+ #define _PRSockLen_t int
+-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
++#elif (defined(AIX) && !defined(AIX4_1)) \
+ || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
+ || defined(DGUX) || defined(VMS) || defined(NTO)
+ #define _PRSockLen_t size_t
diff --git a/www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.cfg b/www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.cfg
new file mode 100644
index 000000000..997531b5b
--- /dev/null
+++ b/www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.cfg
@@ -0,0 +1,163 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.cfg.orig Wed Jan 2 18:38:25 2002
++++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 15:09:53 2004
+@@ -91,7 +91,7 @@
+ #define PR_ALIGN_OF_DOUBLE 4
+ #define PR_ALIGN_OF_POINTER 4
+
+-#elif defined(__alpha)
++#elif defined(__alpha__)
+
+ #define IS_LITTLE_ENDIAN 1
+ #undef IS_BIG_ENDIAN
+@@ -138,6 +138,149 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
++#elif defined(__sparc64__)
++#undef IS_LITTLE_ENDIAN
++#define IS_BIG_ENDIAN 1
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_DOUBLE 8
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_POINTER 8
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++
++#elif defined(__ia64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#elif defined(__amd64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
+ #else
+
+ #error "Unknown CPU architecture"
diff --git a/www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.h b/www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.h
new file mode 100644
index 000000000..e96b317c8
--- /dev/null
+++ b/www/firefox10/files/patch-nsprpub-pr-include-md-_freebsd.h
@@ -0,0 +1,15 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 23:36:13 2003
++++ nsprpub/pr/include/md/_freebsd.h Mon Feb 9 22:24:39 2004
+@@ -50,6 +50,10 @@
+ #define _PR_SI_ARCHITECTURE "alpha"
+ #elif defined(__sparc__)
+ #define _PR_SI_ARCHITECTURE "sparc"
++#elif defined(__ia64__)
++#define _PR_SI_ARCHITECTURE "ia64"
++#elif defined(__amd64__)
++#define _PR_SI_ARCHITECTURE "amd64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
diff --git a/www/firefox10/files/patch-nsprpub-pr-include-md-_pth.h b/www/firefox10/files/patch-nsprpub-pr-include-md-_pth.h
new file mode 100644
index 000000000..1f8159c70
--- /dev/null
+++ b/www/firefox10/files/patch-nsprpub-pr-include-md-_pth.h
@@ -0,0 +1,11 @@
+--- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004
++++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004
+@@ -90,7 +90,7 @@
+ #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
+ #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
+ #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
+-#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
++#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
+ #if defined(DARWIN)
+ #define _PT_PTHREAD_CONDATTR_INIT(x) 0
+ #else
diff --git a/www/firefox10/files/patch-nsprpub-pr-src-io-prprf.c b/www/firefox10/files/patch-nsprpub-pr-src-io-prprf.c
new file mode 100644
index 000000000..38bd959ae
--- /dev/null
+++ b/www/firefox10/files/patch-nsprpub-pr-src-io-prprf.c
@@ -0,0 +1,14 @@
+--- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004
++++ nsprpub/pr/src/io/prprf.c Tue Jun 15 13:17:30 2004
+@@ -51,7 +51,10 @@
+ ** Note: on some platforms va_list is defined as an array,
+ ** and requires array notation.
+ */
+-#if (defined(LINUX) && defined(__x86_64__))
++#if defined(__amd64__)
++#include <stdarg.h>
++#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar))
++#elif (defined(LINUX) && defined(__x86_64__))
+ #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar))
+ #elif (defined(LINUX) && defined(__powerpc__)) || \
+ (defined(LINUX) && defined(__s390__)) || \
diff --git a/www/firefox10/files/patch-nsprpub-pr-src-pthreads-ptio.c b/www/firefox10/files/patch-nsprpub-pr-src-pthreads-ptio.c
new file mode 100644
index 000000000..537577dec
--- /dev/null
+++ b/www/firefox10/files/patch-nsprpub-pr-src-pthreads-ptio.c
@@ -0,0 +1,31 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c,v 1.4 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 21:59:47 2003
++++ nsprpub/pr/src/pthreads/ptio.c Fri Oct 17 05:25:43 2003
+@@ -189,7 +189,7 @@
+ #endif
+ #endif
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ static PRBool _pr_ipv6_v6only_on_by_default;
+ /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */
+ #ifndef IPV6_V6ONLY
+@@ -1154,7 +1154,7 @@
+ _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE);
+ PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr);
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option
+ * is turned on by default, contrary to what RFC 3493, Section
+ * 5.3 says. So we have to turn it off. Find out whether we
+@@ -3462,7 +3462,7 @@
+ if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno);
+ else
+ {
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default)
+ {
+ int on = 0;
diff --git a/www/firefox10/files/patch-security-coreconf-FreeBSD.mk b/www/firefox10/files/patch-security-coreconf-FreeBSD.mk
new file mode 100644
index 000000000..3e0e14aca
--- /dev/null
+++ b/www/firefox10/files/patch-security-coreconf-FreeBSD.mk
@@ -0,0 +1,28 @@
+--- security/coreconf/FreeBSD.mk.orig Wed Mar 26 20:17:25 2003
++++ security/coreconf/FreeBSD.mk Sun Nov 21 22:59:49 2004
+@@ -43,8 +43,12 @@
+ ifeq ($(OS_TEST),alpha)
+ CPU_ARCH = alpha
+ else
++ifeq ($(OS_TEST),amd64)
++CPU_ARCH = amd64
++else
+ CPU_ARCH = x86
+ endif
++endif
+
+ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
+
+@@ -71,7 +75,11 @@
+ DLL_SUFFIX = so.1.0
+ endif
+
+-MKSHLIB = $(CC) $(DSO_LDOPTS)
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@
++else
++MKSHLIB = $(CC) -Wl,-Bsymbolic $(DSO_LDOPTS) -o $@
++endif
+ ifdef MAPFILE
+ # Add LD options to restrict exported symbols to those in the map file
+ endif
diff --git a/www/firefox10/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/www/firefox10/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
new file mode 100644
index 000000000..7f8e55f53
--- /dev/null
+++ b/www/firefox10/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
@@ -0,0 +1,29 @@
+--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004
++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004
+@@ -143,7 +143,7 @@
+ PR_END_MACRO
+
+ // Attempt to open libgconf
+- gconfLib = LoadVersionedLibrary("gconf-2", ".4");
++ gconfLib = PR_LoadLibrary("libgconf-2.so");
+ ENSURE_LIB(gconfLib);
+
+ GET_LIB_FUNCTION(gconf, gconf_client_get_default);
+@@ -151,7 +151,7 @@
+ GET_LIB_FUNCTION(gconf, gconf_client_get_bool);
+
+ // Attempt to open libgnome
+- gnomeLib = LoadVersionedLibrary("gnome-2", ".0");
++ gnomeLib = PR_LoadLibrary("libgnome-2.so");
+ ENSURE_LIB(gnomeLib);
+
+ GET_LIB_FUNCTION(gnome, gnome_url_show);
+@@ -160,7 +160,7 @@
+ GET_LIB_FUNCTION(gnome, gnome_program_get);
+
+ // Attempt to open libgnomevfs
+- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0");
++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so");
+ ENSURE_LIB(vfsLib);
+
+ GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name);
diff --git a/www/firefox10/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc b/www/firefox10/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
new file mode 100644
index 000000000..9a41bbfc4
--- /dev/null
+++ b/www/firefox10/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004
++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Tue Jun 15 12:52:36 2004
+@@ -8,7 +8,7 @@
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
diff --git a/www/firefox10/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in b/www/firefox10/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
new file mode 100644
index 000000000..e9f125165
--- /dev/null
+++ b/www/firefox10/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
@@ -0,0 +1,56 @@
+$FreeBSD: ports/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in,v 1.4 2004/10/24 06:34:13 peter Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 15:06:40 2004
+@@ -49,6 +49,9 @@
+ ifeq (86,$(findstring 86,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
+ endif
++ifeq (amd64,$(OS_TEST))
++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp
++endif
+ endif
+ #
+ # New code for Linux, et. al., with gcc
+@@ -60,7 +63,7 @@
+ endif
+ endif
+ # IA64 Linux
+-ifneq (,$(filter Linux,$(OS_ARCH)))
++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
+ ifneq (,$(findstring ia64,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
+ ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
+@@ -106,9 +109,15 @@
+ ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
+ endif
+ #
++# FreeBSD/Alpha
++#
++ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
++CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
++endif
++#
+ # Linux/Alpha
+ #
+-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
++ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
+ endif
+ #
+@@ -294,6 +303,15 @@
+ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
+ CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# FreeBSD/SPARC64
++#
++ifeq ($(OS_ARCH),FreeBSD)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
++endif
+ endif
+ #
+ # Solaris/SPARC
diff --git a/www/firefox10/files/patch-xptcall-alpha b/www/firefox10/files/patch-xptcall-alpha
new file mode 100644
index 000000000..f5d802f73
--- /dev/null
+++ b/www/firefox10/files/patch-xptcall-alpha
@@ -0,0 +1,461 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-alpha,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
+@@ -0,0 +1,184 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++__asm__("invoke_copy_to_stack") __attribute__((unused));
++
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
++ {
++ if(s->IsPtrData())
++ {
++ *d = (PRUint64)s->ptr;
++ continue;
++ }
++ switch(s->type)
++ {
++ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
++ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
++ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
++ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
++ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
++ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
++ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
++ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // convert floats to doubles if they are to be passed
++ // via registers so we can just deal with doubles later
++ union { PRUint64 u64; double d; } t;
++ t.d = (double)s->val.f;
++ *d = t.u64;
++ }
++ else
++ // otherwise copy to stack normally
++ *d = (PRUint64)s->val.u32;
++ break;
++ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
++ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
++ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
++ default:
++ // all the others are plain pointer types
++ *d = (PRUint64)s->val.p;
++ break;
++ }
++ }
++}
++
++/*
++ * XPTC_PUBLIC_API(nsresult)
++ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
++ */
++__asm__(
++ "#### XPTC_InvokeByIndex ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".globl XPTC_InvokeByIndex\n\t"
++ ".ent XPTC_InvokeByIndex\n"
++"XPTC_InvokeByIndex:\n\t"
++ ".frame $15,32,$26,0\n\t"
++ ".mask 0x4008000,-32\n\t"
++ "ldgp $29,0($27)\n"
++"$XPTC_InvokeByIndex..ng:\n\t"
++ "subq $30,32,$30\n\t"
++ "stq $26,0($30)\n\t"
++ "stq $15,8($30)\n\t"
++ "bis $30,$30,$15\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
++ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
++ * is required for storage of those passed via registers.
++ */
++
++ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
++ "cmplt $2,$18,$1\n\t"
++ "cmovne $1,$18,$2\n\t"
++ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
++ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
++ "subq $30,$1,$30\n\t"
++
++ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
++ "stq $17,16($15)\n\t" /* save "methodIndex" */
++
++ "addq $30,8,$16\n\t" /* pass stack pointer */
++ "bis $18,$18,$17\n\t" /* pass "paramCount" */
++ "bis $19,$19,$18\n\t" /* pass "params" */
++ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
++
++ /*
++ * Copy the first 6 parameters to registers and remove from stack frame.
++ * Both the integer and floating point registers are set for each parameter
++ * except the first which is the "this" pointer. (integer only)
++ * The floating point registers are all set as doubles since the
++ * invoke_copy_to_stack function should have converted the floats.
++ */
++ "ldq $16,0($30)\n\t" /* integer registers */
++ "ldq $17,8($30)\n\t"
++ "ldq $18,16($30)\n\t"
++ "ldq $19,24($30)\n\t"
++ "ldq $20,32($30)\n\t"
++ "ldq $21,40($30)\n\t"
++ "ldt $f17,8($30)\n\t" /* floating point registers */
++ "ldt $f18,16($30)\n\t"
++ "ldt $f19,24($30)\n\t"
++ "ldt $f20,32($30)\n\t"
++ "ldt $f21,40($30)\n\t"
++
++ "addq $30,48,$30\n\t" /* remove params from stack */
++
++ /*
++ * Call the virtual function with the constructed stack frame.
++ */
++ "bis $16,$16,$1\n\t" /* load "this" */
++ "ldq $2,16($15)\n\t" /* load "methodIndex" */
++ "ldq $1,0($1)\n\t" /* load vtable */
++#if 0
++ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
++#else
++ "mulq $2, 8, $2\n\t"
++ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
++#endif
++ "addq $1,$2,$1\n\t"
++ "ldq $27,0($1)\n\t" /* load address of function */
++ "jsr $26,($27),0\n\t" /* call virtual function */
++ "ldgp $29,0($26)\n\t"
++
++ "bis $15,$15,$30\n\t"
++ "ldq $26,0($30)\n\t"
++ "ldq $15,8($30)\n\t"
++ "addq $30,32,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end XPTC_InvokeByIndex"
++ );
++
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
+@@ -0,0 +1,269 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Implement shared vtbl methods. */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include <sys/types.h>
++#include <machine/cpu.h>
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++__asm__("PrepareAndDispatch") __attribute__((unused));
++
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++{
++ const PRUint8 PARAM_BUFFER_COUNT = 16;
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ // args[0] to args[NUM_ARG_REGS] hold floating point register values
++ PRUint64* ap = args + NUM_ARG_REGS;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
++ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
++ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
++ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
++ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
++ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
++ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
++ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // floats passed via registers are stored as doubles
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (PRUint64) args[i];
++ dp->val.f = (float) dp->val.d; // convert double to float
++ }
++ else
++ dp->val.u32 = (PRUint32) *ap;
++ break;
++ case nsXPTType::T_DOUBLE :
++ // doubles passed via registers are also stored
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
++ break;
++ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
++ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
++ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++/*
++ * SharedStub()
++ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
++ * passed to this function via $1 to preserve the argument registers.
++ */
++__asm__(
++ "#### SharedStub ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".ent SharedStub\n"
++"SharedStub:\n\t"
++ ".frame $30,96,$26,0\n\t"
++ ".mask 0x4000000,-96\n\t"
++ "ldgp $29,0($27)\n"
++"$SharedStub..ng:\n\t"
++ "subq $30,96,$30\n\t"
++ "stq $26,0($30)\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Store arguments passed via registers to the stack.
++ * Floating point registers are stored as doubles and converted
++ * to floats in PrepareAndDispatch if necessary.
++ */
++ "stt $f17,16($30)\n\t" /* floating point registers */
++ "stt $f18,24($30)\n\t"
++ "stt $f19,32($30)\n\t"
++ "stt $f20,40($30)\n\t"
++ "stt $f21,48($30)\n\t"
++ "stq $17,56($30)\n\t" /* integer registers */
++ "stq $18,64($30)\n\t"
++ "stq $19,72($30)\n\t"
++ "stq $20,80($30)\n\t"
++ "stq $21,88($30)\n\t"
++
++ /*
++ * Call PrepareAndDispatch function.
++ */
++ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
++ "addq $30,16,$18\n\t" /* pass "args" */
++ "bsr $26,$PrepareAndDispatch..ng\n\t"
++
++ "ldq $26,0($30)\n\t"
++ "addq $30,96,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end SharedStub"
++ );
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
++ );
++#else
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ nsresult result; \
++__asm__ __volatile__( \
++ "ldah $29,0($27)\n\t" \
++ "lda $29,0($29)\n\t" \
++ "lda $1, "#n"\n\t" \
++ "br $31, $SharedStub..ng\n\t" \
++ "mov $0, %0\n\t" \
++ : "=r" (result) \
++ ); \
++ return result; \
++}
++#endif
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
diff --git a/www/firefox10/files/patch-xptcall-ia64 b/www/firefox10/files/patch-xptcall-ia64
new file mode 100644
index 000000000..9b3969f1c
--- /dev/null
+++ b/www/firefox10/files/patch-xptcall-ia64
@@ -0,0 +1,40 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-ia64,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003
+@@ -8,6 +8,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'XPTC_InvokeByIndex'
++ .global XPTC_InvokeByIndex
+ .proc XPTC_InvokeByIndex
+ // manual bundling
+ .explicit
+@@ -24,7 +25,7 @@
+
+ // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ // PRUint32 paramCount, nsXPTCVariant* params);
+-XPTC_InvokeByIndex::
++XPTC_InvokeByIndex:
+ .prologue
+ .save ar.pfs, r37
+ // allocate 4 input args, 6 local args, and 8 output args
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003
+@@ -6,6 +6,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'SharedStub'
++ .global SharedStub
+ .proc SharedStub
+ // manual bundling
+ .explicit
+@@ -14,7 +15,7 @@
+ // .exclass PrepareAndDispatch, @fullyvisible
+ .type PrepareAndDispatch,@function
+
+-SharedStub::
++SharedStub:
+ // 9 arguments, first 8 are the input arguments of previous
+ // function call. The last one is methodIndex, and is passed in memory
+ .prologue
diff --git a/www/firefox10/files/patch-xptcall-sparc64 b/www/firefox10/files/patch-xptcall-sparc64
new file mode 100644
index 000000000..7463baa55
--- /dev/null
+++ b/www/firefox10/files/patch-xptcall-sparc64
@@ -0,0 +1,329 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-sparc64,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
+@@ -0,0 +1,123 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ */
++
++/* Implement shared vtbl methods. */
++
++#include "xptcprivate.h"
++
++#if defined(sparc) || defined(__sparc__)
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
++{
++
++#define PARAM_BUFFER_COUNT 16
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ PRUint64* ap = args;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++extern "C" int SharedStub(int, int*);
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ int dummy; /* defeat tail-call optimization */ \
++ return SharedStub(n, &dummy); \
++}
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#endif /* sparc || __sparc__ */
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
+@@ -0,0 +1,104 @@
++/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++/*
++ Platform specific code to invoke XPCOM methods on native objects
++ for sparcv9 Solaris.
++
++ See the SPARC Compliance Definition (SCD) Chapter 3
++ for more information about what is going on here, including
++ the use of BIAS (0x7ff).
++ The SCD is available from http://www.sparc.com/.
++*/
++
++ .global XPTC_InvokeByIndex
++ .type XPTC_InvokeByIndex, #function
++
++/*
++ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant* params);
++
++*/
++XPTC_InvokeByIndex:
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++ sll %i2,4,%l0 ! assume the worst case
++ ! paramCount * 2 * 8 bytes
++ cmp %l0, 0 ! are there any args? If not,
++ be .invoke ! no need to copy args to stack
++ nop
++
++ sub %sp,%l0,%sp ! create the additional stack space
++ add %sp,0x7ff+136,%o0 ! step past the register window, the
++ ! struct result pointer and the 'this' slot
++ mov %i2,%o1 ! paramCount
++ call invoke_copy_to_stack
++ mov %i3,%o2 ! params
++
++!
++! load arguments from stack into the outgoing registers
++! BIAS is 0x7ff (2047)
++!
++
++! load the %o1..5 64bit (extended word) output registers registers
++ ldx [%sp + 0x7ff + 136],%o1 ! %i1
++ ldx [%sp + 0x7ff + 144],%o2 ! %i2
++ ldx [%sp + 0x7ff + 152],%o3 ! %i3
++ ldx [%sp + 0x7ff + 160],%o4 ! %i4
++ ldx [%sp + 0x7ff + 168],%o5 ! %i5
++
++! load the even number double registers starting with %d2
++ ldd [%sp + 0x7ff + 136],%f2
++ ldd [%sp + 0x7ff + 144],%f4
++ ldd [%sp + 0x7ff + 152],%f6
++ ldd [%sp + 0x7ff + 160],%f8
++ ldd [%sp + 0x7ff + 168],%f10
++ ldd [%sp + 0x7ff + 176],%f12
++ ldd [%sp + 0x7ff + 184],%f14
++ ldd [%sp + 0x7ff + 192],%f16
++ ldd [%sp + 0x7ff + 200],%f18
++ ldd [%sp + 0x7ff + 208],%f20
++ ldd [%sp + 0x7ff + 216],%f22
++ ldd [%sp + 0x7ff + 224],%f24
++ ldd [%sp + 0x7ff + 232],%f26
++ ldd [%sp + 0x7ff + 240],%f28
++ ldd [%sp + 0x7ff + 248],%f30
++
++!
++! calculate the target address from the vtable
++!
++.invoke:
++ sll %i1,3,%l0 ! index *= 8
++! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
++ ldx [%i0],%l1 ! *that --> address of vtable
++ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> address
++
++ jmpl %l0,%o7 ! call the routine
++ mov %i0,%o0 ! move 'this' pointer to out register
++
++ mov %o0,%i0 ! propagate return value
++ ret
++ restore
++
++ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
+--- /dev/null Mon May 26 14:00:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
+@@ -0,0 +1,91 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc) && !defined(__sparc__)
++#error "This code is for Sparc only"
++#endif
++
++/* Prototype specifies unmangled function name */
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
++
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/www/firefox10/pkg-deinstall.in b/www/firefox10/pkg-deinstall.in
new file mode 100644
index 000000000..0b6b88f64
--- /dev/null
+++ b/www/firefox10/pkg-deinstall.in
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-deinstall.in,v 1.3 2004/10/28 21:37:53 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components.ini
+rm -f ${MOZDIR}/defaults.ini
+rm -f ${MOZDIR}/components/*.dat
+rm -rf ${MOZDIR}/extensions
+
+exit 0
diff --git a/www/firefox10/pkg-descr b/www/firefox10/pkg-descr
new file mode 100644
index 000000000..99b11c5e7
--- /dev/null
+++ b/www/firefox10/pkg-descr
@@ -0,0 +1,12 @@
+Firefox is an award winning, free, open-source web browser for many platforms
+and is based on the Mozilla codebase. It is small, fast and easy to use, and
+offers many advanced features:
+ o Popup Blocking
+ o Tabbed Browsing
+ o Live Bookmarks (ie. RSS)
+ o Extensions
+ o Themes
+ o FastFind
+ o Improved Security
+
+WWW: http://www.mozilla.org/products/firefox/
diff --git a/www/firefox10/pkg-install.in b/www/firefox10/pkg-install.in
new file mode 100644
index 000000000..9aa1ffb79
--- /dev/null
+++ b/www/firefox10/pkg-install.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-install.in,v 1.9 2004/12/04 09:47:27 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin:/usr/local/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+FIREFOX=${MOZDIR}/firefox-bin
+
+echo "===> Building Chrome's registry..."
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+rm -rf ${MOZDIR}/extensions
+
+cd ${MOZDIR} || exit 1
+./run-mozilla.sh ${REGXPCOM} || true
+./run-mozilla.sh ${REGCHROME} || true
+./run-mozilla.sh ${FIREFOX} -register > /dev/null 2>&1
+
+if [ ! -d %%PREFIX%%/lib/browser_plugins ]; then
+ mkdir -p %%PREFIX%%/lib/browser_plugins
+fi
+
+exit 0
diff --git a/www/firefox10/pkg-message b/www/firefox10/pkg-message
new file mode 100644
index 000000000..77f3adad8
--- /dev/null
+++ b/www/firefox10/pkg-message
@@ -0,0 +1,41 @@
+======================================================================
+README FOR GNOMEVFS SUPPORT:
+Gnomevfs support is optional (disabled by default), and can be enabled by
+building with ``-DWITH_SMB''.
+
+It is new and currently has issues to be ironed out.
+
+You must delete your components registry for gnomevfs to register:
+
+rm ~/.mozilla/firefox/default.*/compreg.dat
+
+SMB issues:
+Network group, machine, and share browsing does not work correctly.
+
+SFTP:
+Only sftp access using public key authentication works. To easily
+setup public key authentication to "remote_host":
+
+ssh-keygen -t dsa
+cat ~/.ssh/id_dsa.pub | ssh remote_host "cat >> .ssh/authorized_keys"
+
+The SSH sever on remote_host must allow pub key authentication.
+
+======================================================================
+
+Any bug reports should be addressed to the maintainers at:
+ gnome@FreeBSD.org
+You may also Cc: freebsd-ports@freebsd.org. Please do not send
+bug reports to any other addresses.
+
+Please include the following information with any bug report:
+* Output from 'uname -a'.
+* Date/time stamp from www/firefox/Makefile.
+* Where/when did the problem occur: configuring, building, or
+ running firefox
+* How can you reproduce the problem?
+
+Thank you for your help in testing and reporting bugs, and we hope you
+enjoy using Firefox.
+The Maintainers (gnome@)
+======================================================================
diff --git a/www/firefox3-devel/Makefile b/www/firefox3-devel/Makefile
new file mode 100644
index 000000000..4f341c8e1
--- /dev/null
+++ b/www/firefox3-devel/Makefile
@@ -0,0 +1,276 @@
+# New ports collection makefile for: phoenix
+# Date created: 2002/10/21
+# Whom: Alan Eldridge <alane@FreeBSD.org>
+#
+# $FreeBSD: ports/www/firefox/Makefile,v 1.116 2005/03/02 06:50:12 marcus Exp $
+#
+
+PORTNAME= firefox
+PORTVERSION= 1.0.1
+PORTREVISION= 2
+PORTEPOCH= 1
+CATEGORIES= www
+MASTER_SITES= ${MASTER_SITE_MOZILLA}
+MASTER_SITE_SUBDIR= ${PORTNAME}/releases/1.0.1/source
+DISTNAME= ${PORTNAME}-1.0.1-source
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Web browser based on the browser portion of Mozilla
+
+LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
+ png.5:${PORTSDIR}/graphics/png \
+ mng.1:${PORTSDIR}/graphics/libmng
+BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip
+
+ALL_TARGET= default
+CONFIGURE_ENV= LOCALBASE=${LOCALBASE}
+FAKEDIR= ${WRKDIR}/fake
+USE_REINPLACE= yes
+HAS_CONFIGURE= yes
+ESD_LIB= libesd.so.2
+PLIST= ${WRKDIR}/plist
+PLUGINSDIR= ${PREFIX}/lib/browser_plugins
+USE_BZIP2= yes
+USE_GMAKE= yes
+USE_GNOME= gtk20 libidl gnomehier desktopfileutils
+USE_ICONV= yes
+USE_PERL5_BUILD=yes
+USE_X_PREFIX= yes
+WRKSRC= ${WRKDIR}/mozilla
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
+ --exclude */macbuild/*\
+ --exclude */package/* \
+ --exclude .cvsignore \
+ --exclude makefile.win \
+ --exclude MANIFEST
+
+FIREFOX= ${PORTNAME}
+FF_VER= ${PORTVERSION}
+
+FIREFOX_ICON= firefox.png
+FIREFOX_ICON_SRC=${WRKSRC}/other-licenses/branding/firefox/content/alert-exclam.png
+
+PKGCONFIG_FILES=firefox-gtkmozembed firefox-js firefox-xpcom \
+ firefox-nspr firefox-nss firefox-plugin
+
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.1/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/diablo-jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so
+
+SYSTEM_PREFS= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}/defaults/pref/firefox.js
+SCRIPTS_DIR= ${FAKEDIR}/lib/${FIREFOX}-${FF_VER}
+MOZ_PIS_SCRIPTS= S50cleanhome
+MOZ_PIS_DIR= ${SCRIPTS_DIR}/init.d
+
+OPTIONS= DEBUG "Build a debugging image" off \
+ LOGGING "Enable additional log messages" off \
+ OPTIMIZED_CFLAGS "Enable some additional optimizations" off \
+ XFT "Enable support for anti-aliased fonts" on \
+ SMB "Enable smb:// URI support using gnomevfs" off \
+ NEWTAB "Open external links in a new tab" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_DEBUG)
+WITH_LOGGING= yes
+CONFIGURE_ENV+= WITH_DEBUG=yes
+.endif # defined(WITH_DEBUG)
+
+.if defined(WITH_OPTIMIZED_CFLAGS)
+CFLAGS:= -O2 -fno-strict-aliasing ${CFLAGS:N-O*}
+.else
+CFLAGS:= -O ${CFLAGS:N-O*:N-m*}
+CONFIGURE_ENV+= WITH_OPTIMIZE=-O
+.endif # defined(WITH_OPTIMIZED_CFLAGS)
+
+.if defined(WITH_LOGGING)
+CONFIGURE_ENV+= WITH_LOGGING=yes
+.endif # defined(WITH_LOGGING)
+
+.if defined(WITHOUT_XFT)
+CONFIGURE_ENV+= WITHOUT_XFT=yes
+.else
+LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
+.endif # !defined(WITHOUT_XFT)
+
+.if defined(WITH_SMB)
+USE_GNOME+= gnomevfs2
+CONFIGURE_ENV+= WITH_SMB=yes
+.endif # defined(WITH_SMB)
+
+CPPFLAGS+= -I${X11BASE}/include -I${LOCALBASE}/include
+CFLAGS+= ${PTHREAD_CFLAGS}
+LDFLAGS+= -L${X11BASE}/lib
+LIBS+= ${PTHREAD_LIBS}
+
+EXTRA_SCRIPTS= ${PORTNAME}.rb
+
+.if ${ARCH} == "alpha" && ${OSVERSION} < 500035
+IGNORE= "core dumps on alpha during post-build"
+.endif
+
+.if ${PERL_LEVEL} < 500600
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-config_make-jars.pl
+.endif
+
+pre-extract::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "Extracting source (this takes a while) ..."
+ @${ECHO_MSG}
+
+post-extract::
+ @${SED} -e 's|@CPPFLAGS@|${CPPFLAGS}|' \
+ -e 's|@CFLAGS@|${CFLAGS}|' \
+ -e 's|@LDFLAGS@|${LDFLAGS}|' \
+ -e 's|@LIBS@|${LIBS}|' \
+ -e 's|@X11BASE@|${X11BASE}|' \
+ -e 's|@LOCALBASE@|${LOCALBASE}|' \
+ -e 's|@FAKEDIR@|${FAKEDIR}|' \
+ -e 's|@PERL@|${PERL5}|' \
+ <${FILESDIR}/mozconfig.in >${WRKSRC}/.mozconfig
+ @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' \
+ <${FILESDIR}/firefox.desktop.in >${WRKDIR}/firefox.desktop
+
+post-patch:
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${MASTERDIR}/pkg-install.in > ${PKGINSTALL}
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${FIREFOX}|g' \
+ < ${MASTERDIR}/pkg-deinstall.in > ${PKGDEINSTALL}
+.for ii in ${EXTRA_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/${ii} > ${WRKDIR}/${ii}
+.endfor
+.for ii in ${MOZ_PIS_SCRIPTS}
+ @${SED} -e 's|%%MOZILLA%%|${FIREFOX}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g ; \
+ s|%%X11BASE%%|${X11BASE}|g' \
+ < ${FILESDIR}/moz_pis_${ii} > ${WRKDIR}/moz_pis_${ii}
+.endfor
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/run-mozilla.sh
+ @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \
+ s|-lpthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/nsprpub/configure
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/nsprpub/config/config.mk \
+ ${WRKSRC}/security/coreconf/FreeBSD.mk \
+ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \
+ ${WRKSRC}/js/src/Makefile.in
+ @${REINPLACE_CMD} -e 's|libesd\.so\.\d+|${ESD_LIB}|g' \
+ ${WRKSRC}/widget/src/gtk2/nsSound.cpp
+ @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.no|g' \
+ ${WRKSRC}/gfx/src/gtk/nsDeviceContextSpecG.cpp
+.for ii in modules/libpref/src/init extensions/sroaming/resources/content/prefs \
+ embedding/minimo
+ @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/ ; \
+ /dom.disable_window_open_feature.toolbar/s/false/true/' \
+ ${WRKSRC}/${ii}/all.js
+.endfor
+
+pre-configure:
+ @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \
+ ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
+ ${FALSE}; \
+ fi
+
+pre-install:
+ @${RM} -rf ${FAKEDIR} ${PLIST}
+ @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
+ Makefile ${MAKE_ARGS} install
+ @${MKDIR} ${SCRIPTS_DIR}
+ @${MKDIR} ${MOZ_PIS_DIR}
+ ${ECHO_CMD} 'share/gnome/pixmaps/${FIREFOX_ICON}' >> ${PLIST}
+ ${ECHO_CMD} 'share/gnome/applications/firefox.desktop' >> ${PLIST}
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g; \
+ s|${FIREFOX}-${FF_VER}|${FIREFOX}|' \
+ ${FAKEDIR}/bin/firefox \
+ ${FAKEDIR}/bin/firefox-config
+ for i in ${EXTRA_SCRIPTS}; do \
+ ${ECHO_CMD} bin/$${i} >> ${PLIST}; \
+ done
+ ${ECHO_CMD} bin/firefox >> ${PLIST}
+ ${ECHO_CMD} bin/firefox-config >> ${PLIST}
+.for ii in ${MOZ_PIS_SCRIPTS}
+ ${INSTALL_SCRIPT} ${WRKDIR}/moz_pis_${ii} ${MOZ_PIS_DIR}/${ii}
+.endfor
+.if !defined(WITHOUT_NEWTAB)
+ ${ECHO_CMD} >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "// Open external links in new tab" >> ${SYSTEM_PREFS}
+ ${ECHO_CMD} "pref(\"browser.link.open_external\", 3);" \
+ >> ${SYSTEM_PREFS}
+.endif # !defined(WITHOUT_NEWTAB)
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|lib/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm lib/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm lib/firefox >> ${PLIST}
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|${FIREFOX}-${FF_VER}|${FIREFOX}|g; \
+ s|${FAKEDIR}|${PREFIX}|' \
+ ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc ; \
+ ${ECHO_CMD} libdata/pkgconfig/$${pcfile}.pc >> ${PLIST} ; \
+ done
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's|^|include/${FIREFOX}/|' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's|^|@dirrm include/${FIREFOX}/|' >> ${PLIST}
+ ${ECHO_CMD} @dirrm include/${FIREFOX} >> ${PLIST}
+ ${ECHO_CMD} lib/browser_plugins/.${PORTNAME}.keep >> ${PLIST}
+ ${ECHO_CMD} "@unexec ${RMDIR} %D/lib/browser_plugins 2>/dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@exec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} "@unexec update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST}
+
+do-install:
+ ${MKDIR} ${PREFIX}/lib/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/lib/${FIREFOX}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox ${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/firefox-config ${PREFIX}/bin
+ if [ ! -d ${PREFIX}/lib/browser_plugins ]; then \
+ ${MKDIR} ${PREFIX}/lib/browser_plugins ; \
+ fi
+ ${TOUCH} -f ${PREFIX}/lib/browser_plugins/.${PORTNAME}.keep
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${LN} -sf $${jpi} \
+ ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${INSTALL_DATA} ${FAKEDIR}/lib/pkgconfig/$${pcfile}.pc \
+ ${PREFIX}/libdata/pkgconfig/$${pcfile}.pc ; \
+ done
+ -${RM} -fr ${PREFIX}/include/${FIREFOX}
+ ${MKDIR} ${PREFIX}/include/${FIREFOX}
+ ${CHMOD} 755 ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/include/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/include/${FIREFOX}
+ cd ${FAKEDIR}/lib/${FIREFOX}-${FF_VER} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/lib/${FIREFOX}
+
+post-install:
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+.for i in ${EXTRA_SCRIPTS}
+ ${INSTALL_SCRIPT} ${FILESDIR}/${i} ${PREFIX}/bin
+.endfor
+ ${INSTALL_DATA} ${FIREFOX_ICON_SRC} ${PREFIX}/share/gnome/pixmaps/${FIREFOX_ICON}
+ ${INSTALL_DATA} ${WRKDIR}/firefox.desktop ${PREFIX}/share/gnome/applications
+ ${INSTALL_DATA} ${WRKSRC}/other-licenses/branding/firefox/default.xpm \
+ ${PREFIX}/lib/${FIREFOX}/chrome/icons/default/default.xpm
+ @-update-desktop-database
+
+.include <bsd.port.post.mk>
diff --git a/www/firefox3-devel/distinfo b/www/firefox3-devel/distinfo
new file mode 100644
index 000000000..2ce601d09
--- /dev/null
+++ b/www/firefox3-devel/distinfo
@@ -0,0 +1,2 @@
+MD5 (firefox-1.0.1-source.tar.bz2) = ebaea974fea9460ab7050fff76b41cb1
+SIZE (firefox-1.0.1-source.tar.bz2) = 32671529
diff --git a/www/firefox3-devel/files/extra-patch-config_make-jars.pl b/www/firefox3-devel/files/extra-patch-config_make-jars.pl
new file mode 100644
index 000000000..a558607ca
--- /dev/null
+++ b/www/firefox3-devel/files/extra-patch-config_make-jars.pl
@@ -0,0 +1,10 @@
+--- config/make-jars.pl.orig Wed Oct 13 16:17:11 2004
++++ config/make-jars.pl Wed Oct 13 16:17:07 2004
+@@ -40,6 +40,7 @@
+ last if ($arg eq "--");
+ }
+ my $defines = join(' ', @ARGV[ $ddindex .. $#ARGV ]);
++splice @ARGV, $ddindex, $#ARGV;
+
+ getopts("d:s:t:f:avlD:o:p:xz:");
+
diff --git a/www/firefox3-devel/files/firefox.desktop.in b/www/firefox3-devel/files/firefox.desktop.in
new file mode 100644
index 000000000..c1b7a2e59
--- /dev/null
+++ b/www/firefox3-devel/files/firefox.desktop.in
@@ -0,0 +1,191 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Firefox Web Browser
+Name[am]=
+Name[ar]=
+Name[az]=Firefox Veb Səyyahı
+Name[be]=
+Name[bg]=Интернет браузър Firefox
+Name[bn]=
+Name[bs]=Firefox web preglednik
+Name[ca]=Navegador web Firefox
+Name[cs]=Prohlížeč WWW Firefox
+Name[cy]=Y Porwr Gwe Firefox
+Name[da]=Firefox - internetsurfning
+Name[de]=Firefox Webbrowser
+Name[el]=Περιηγητής Διαδικτύου Firefox
+Name[en_CA]=Firefox Web Browser
+Name[en_GB]=Firefox Web Browser
+Name[es]=Navegador Web Firefox
+Name[et]=Firefox veebibrauser
+Name[eu]=Firefox web arakatzailea
+Name[fi]=Firefox, WWW-selain
+Name[fr]=Navigateur Web Firefox
+Name[ga]=Brabhsálaí Lín Firefox
+Name[gu]=એપીફની વૅબ બ્રાઉઝર
+Name[he]=דפדפן Firefox
+Name[hi]=
+Name[hr]=Firefox Web preglednik
+Name[hu]=Firefox webböngésző
+Name[id]=Web Browser Firefox
+Name[it]=Browser web Firefox
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[li]=Firefox Web Browser
+Name[lt]=Firefox web naršyklė
+Name[mk]=Firefox веб прелистувач
+Name[ml]=എപ്പിഫാനി വെബ്ബ് ബ്രൌസ‌ര്
+Name[mn]=Firefox веб хөтөч
+Name[ms]=Pelungsur Web Firefox
+Name[nb]=Firefox nettleser
+Name[nl]=Firefox Webbrowser
+Name[nn]=Firefox nettlesar
+Name[no]=Firefox nettleser
+Name[pa]=ਏਪੀਫਾਨੀ ਵੈੱਬ ਬਰਾਊਜ਼ਰ
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Navegador Web Firefox
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Navigatorul Firefox
+Name[ru]=Веб-браузер Firefox
+Name[sk]=
+Name[sl]=Spletni brskalnik Firefox
+Name[sq]=Firefox - Shfletuesi Web
+Name[sr]=
+Name[sr@Latn]=Veb čitač Spoznaja
+Name[sv]=Webbläsaren Firefox
+Name[ta]=எபிபனி வலை உலாவி
+Name[tk]=Firefox Web Ahtarçisi
+Name[tr]=Firefox Web Tarayıcı
+Name[uk]=Переглядач web Firefox
+Name[vi]=Trình Duyệt Web Firefox
+Name[wa]=Betchteu waibe epiphany
+Name[zh_CN]=Firefox Web 浏览器
+Name[zh_TW]=Firefox 網頁瀏覽器
+GenericName=Web Browser
+GenericName[ar]=متصفّح الانترنت
+GenericName[az]=Veb Səyyahı
+GenericName[be]=Вандроўнік па павуціньню
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[bs]=Web preglednik
+GenericName[ca]=Navegador web
+GenericName[cs]=Prohlížeč WWW
+GenericName[cy]=Porwr Gwe
+GenericName[da]=Internetsurfning
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής Ιστοσελίδων
+GenericName[en_CA]=Web Browser
+GenericName[en_GB]=Web Browser
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web Firefox
+GenericName[ga]=Brabhsálaí Lín
+GenericName[gu]=વેબ બ્રાઉઝર
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[id]=Browser Web
+GenericName[it]=Browser web
+GenericName[ja]=GNOME ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[li]=Wèb Browser
+GenericName[lt]=Web naršyklė
+GenericName[mk]=Веб прелистувач
+GenericName[mn]=Веб хөтөч
+GenericName[ms]=Pelungsur Web
+GenericName[nb]=Nettleser
+GenericName[nl]=Web-browser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pa]=ਵੈਬ ਬਰਾਊਜ਼
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=WWW prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sq]=Shfletuesi Web
+GenericName[sr]=Веб читач
+GenericName[sr@Latn]=Veb čitač
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tk]=Web Ahtarçysy
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Переглядач web-сторінок
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[zh_CN]=Web 浏览器
+GenericName[zh_TW]=網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Surf på internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте на веб
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Веб-браузер
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ Firefox
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=firefox %U
+Icon=@FIREFOX_ICON@
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;
diff --git a/www/firefox3-devel/files/firefox.rb b/www/firefox3-devel/files/firefox.rb
new file mode 100644
index 000000000..7aa32cbe5
--- /dev/null
+++ b/www/firefox3-devel/files/firefox.rb
@@ -0,0 +1,95 @@
+#!/usr/bin/env ruby
+=begin -*-mode: ruby-*-
+
+ MoZiLLa.in
+
+ Copyright (c) 2002, Alan Eldridge
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the copyright owner nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ $Id: firefox.rb,v 1.1 2005-03-05 01:49:02 marcus Exp $
+
+ 2002-12-16 Alan Eldridge <alane@geeksrus.net>
+
+=end
+
+X11BIN = "/usr/X11R6/bin"
+NAME = File::basename($0, ".rb")
+APP_PATH = File::join(X11BIN, NAME)
+
+if !File::executable?(APP_PATH)
+ raise "File '#{APP_PATH}' not found. Giving up."
+elsif ($display = ENV["DISPLAY"]) == nil
+ raise "Environment variable DISPLAY not found. Giving up."
+end
+
+if ARGV.size > 0
+ if ARGV[0] == "--debug"
+ ARGV.shift
+ else
+ $stdin.reopen(File::open("/dev/null", "r"))
+ $stdout.reopen(File::open("/dev/null", "w"))
+ $stderr.reopen(File::open("/dev/null", "w"))
+ end
+end
+
+if ARGV.size < 1
+ $url = nil
+else
+ $url = ARGV.pop
+ $url.sub!(/^ghelp:/, "file:")
+end
+
+IO::popen("xwininfo -display #{$display} -root -tree") {
+ |io|
+ if NAME != "firefox"
+ $windows = io.grep(%r<"Mozilla"\s+"navigator:\s*browser">)
+ else
+ $windows = io.grep(%r<Firefox-bin.*>)
+ end
+}
+
+if $windows.size > 0
+ $id = $windows.map {
+ |s| s.strip.split.first
+ }.sort.first
+ $args = [ "-id", $id, "-raise", "-remote" ]
+ $args.push($url ? "\"openURL(#{$url},new-window)\"" :
+ "\"xfeDoCommand(openBrowser)\"")
+else
+ $args = ARGV
+ $args.push("\"#{$url}\"") if $url
+end
+
+fork {
+ exec(([APP_PATH] + $args).join(" "))
+}
+exit!
+
+#EOF
diff --git a/www/firefox3-devel/files/mkdistfile b/www/firefox3-devel/files/mkdistfile
new file mode 100755
index 000000000..50a2fee40
--- /dev/null
+++ b/www/firefox3-devel/files/mkdistfile
@@ -0,0 +1,171 @@
+#!/bin/sh
+# -*-shell-script-*-
+#
+# mkdistfile -- maintainer's utility to make a firefox distfile
+#
+# Copyright (c) 2002, Alan Eldridge
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of the copyright owner nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD: ports/www/firefox/files/mkdistfile,v 1.6 2004/02/11 07:16:17 marcus Exp $
+#
+# 2002/10/21 alane@geeksrus.net
+#
+
+ORIGDIR=$(/bin/pwd); export ORIGDIR
+APPNAME=${0##*/};APPNAME=${APPNAME#-}; export APPNAME
+test -z "$TMPDIR" && TMPDIR=/tmp; export TMPDIR
+test -z "$HOSTNAME" && HOSTNAME=$(hostname); export HOSTNAME
+warn() { echo "[$APPNAME:$$]" "****" "$@";}
+status() { echo "[$APPNAME:$$]" "===>" "$@";}
+error() { echo "[$APPNAME:$$]" "ERROR:" "$@";}
+die() { echo "[$APPNAME:$$]" "FATAL:" "$@"; exit 1;}
+unset echo_n; test "X`echo -n`" = "X-n" \
+ && echo_n() { echo "$@\c"; } || echo_n() { echo -n "$@"; }
+status_n() { echo_n "[$APPNAME:$$]" "===>" "$@";}
+log() { local cmd=$1;shift;echo_n $(date "+%Y%m%d.%T") "";$cmd "$@";}
+qexpr() { expr "$@" >/dev/null 2>&1;}
+qw() { echo \""$@"\"; }
+listfiles() { ls -1 ${1:+"$@"} 2>/dev/null; }
+whichre() { local n=$#; local s="$1"; shift; while test $# -ge 1; do
+ qexpr "$s" : "$1"&& echo $(($n - $#)) && return 0; shift; done;
+ echo 0; return 1;}
+matchre() { test $(whichre "$@") -gt 0; }
+streq() { local s="$1"; shift; while test $# -ge 1; do
+ test "X$s" = "X$1" && return 0; shift; done; return 1;}
+strupper() {
+ echo "$@"|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+strlower() {
+ echo "$@"|tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
+}
+chdir() { cd "$1" || die cd $(qw $1) failed; }
+absdir() { chdir "$1" && pwd; }
+abspath() { local p=''; case "$1" in /*);; *)p="$(pwd)/";; esac; echo "$p$1"; }
+tmpfile() { mktemp -t .$APPNAME ${1:+"$@"}; }
+############################################################
+# show usage and exit
+############################################################
+usage() {
+ cat <<EOF
+Usage: $APPNAME [options] [--] rev[.yyyymmdd]
+Options:
+ -h,--help Show this help.
+ -V,--version Show version number.
+ -v,--verbose Produce more verbose output.
+ -x,--debug Turn on shell command tracing.
+ -- Stop option processing.
+EOF
+ exit $1
+}
+############################################################
+# show version and exit
+############################################################
+VERSION='$Revision: 1.1 $'
+VERSION=${VERSION#* }; VERSION=${VERSION% *}
+version() { echo "$APPNAME $VERSION" \
+ "Copyright (c) 2002 Alan Eldridge"; exit $1;}
+############################################################
+# set default vars here
+############################################################
+DEBUG=0
+VERBOSE=0; VFLG=''
+DATETIME=$(date +%Y%m%d.%H%M)
+DATE=${DATETIME%.*}
+TIME=${DATETIME#*.}
+############################################################
+# do command line options
+############################################################
+while test $# -gt 0; do
+ n=1; case "$1" in
+ -h|--help) usage 0;;
+ -V|--version) version 0;;
+ -v|--verbose) VERBOSE=1;VFLG='-v';;
+ -x|--debug) set -x;DEBUG=1;;
+ --) shift; break;; -*) usage 1;; *) break;;
+ esac; shift $n
+done
+
+############################################################
+# main(): script execution begins here
+############################################################
+
+test $# -eq 1 || usage 1
+
+REV=$1
+test ${REV##*.} = today && REV=${REV%.*}.$DATE
+
+status "pruning tree..."
+exfile=$(tmpfile)
+cat >>$exfile <<'EOF'
+^.*/CVS($|/)
+^.*/macbuild($|/)
+^.*/package($|/)
+^.*/.cvsignore($|/)
+^.*/windows($|/)
+^.*/activex($|/)
+^.*/os2($|/)
+^.*/solaris($|/)
+^.*/gc($|/)
+^mozilla/apache($|/)
+^mozilla/calendar($|/)
+^mozilla/cck($|/)
+^mozilla/chimera($|/)
+^mozilla/ef($|/)
+^mozilla/embed.mak($|/)
+^mozilla/embed.mk($|/)
+^mozilla/gconfig($|/)
+^mozilla/gfx2($|/)
+^mozilla/grendel($|/)
+^mozilla/java($|/)
+^mozilla/js2($|/)
+^mozilla/mail($|/)
+^mozilla/mailnews($|/)
+^mozilla/mozilla($|/)
+^mozilla/mozilla.kdevprj($|/)
+^mozilla/mozilla.lsm($|/)
+^mozilla/msgsdk($|/)
+^mozilla/mstone($|/)
+^mozilla/nglayout.mac($|/)
+^mozilla/nunet($|/)
+^mozilla/other-licenses($|/)
+^mozilla/privacy($|/)
+^mozilla/silentdl($|/)
+^mozilla/timer($|/)
+^mozilla/trex.mak($|/)
+^mozilla/trex.mk($|/)
+^mozilla/webtools($|/)
+EOF
+test -d mozilla || die "No mozilla dir here."
+find mozilla 2>/dev/null | egrep -f $exfile | xargs rm -fr
+rm -f $exfile
+status "making firefox-$REV.tar.bz2 ..."
+tar -cjpf firefox-$REV.tar.bz2 mozilla
+status "done."
+#EOF
diff --git a/www/firefox3-devel/files/moz_pis_S50cleanhome b/www/firefox3-devel/files/moz_pis_S50cleanhome
new file mode 100644
index 000000000..3de5565e3
--- /dev/null
+++ b/www/firefox3-devel/files/moz_pis_S50cleanhome
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+
+# S50cleanhome
+# a script to clean up users' Mozilla home directories to make upgrading
+# less painful.
+
+# We run in our own subshell
+
+# First, verify protocol
+[ "$1" != "start" ] && exit 1
+[ -z "${MOZ_PIS_API}" -o ${MOZ_PIS_API} -ne 2 ] && exit 1
+[ -z "${MOZ_PIS_MOZBINDIR}" -o ! -d "${MOZ_PIS_MOZBINDIR}" ] && exit 1
+[ -z "${HOME}" -o ! -d "${HOME}" ] && exit 1
+[ -z "${MOZ_PIS_USER_DIR}" -o ! -d "${HOME}/${MOZ_PIS_USER_DIR}" ] && exit 1
+
+# Try to cleanup ${HOME}/${MOZ_PIS_USER_DIR}
+
+if [ -f "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" ]; then
+ sed -e '/Path=/! d' -e "s,Path=,${HOME}/${MOZ_PIS_USER_DIR}/," \
+ "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" \
+ | while read dir
+ do
+ [ ! -d "${dir}" ] && continue
+ # Debian does this for new builds
+ # rm -f "${dir}/XUL.mfasl"
+ # force a rebuild of compreg.dat and xpti.dat for new installations
+ [ "${dir}/compreg.dat" -ot "${MOZ_PIS_MOZBINDIR}/components.ini" ] &&
+ rm -f "${dir}/compatibility.ini" "${dir}/XUL.mfasl"
+ done
+fi
diff --git a/www/firefox3-devel/files/mozconfig.in b/www/firefox3-devel/files/mozconfig.in
new file mode 100644
index 000000000..4b0ccab41
--- /dev/null
+++ b/www/firefox3-devel/files/mozconfig.in
@@ -0,0 +1,83 @@
+# .mozconfig.in -*-shell-script-*-
+# $FreeBSD: ports/www/firefox/files/mozconfig.in,v 1.29 2004/12/28 00:51:58 ahze Exp $
+######################################################################
+# standard opts from README
+export MOZ_PHOENIX=1
+mk_add_options MOZ_PHOENIX=1
+ac_add_options --enable-crypto
+ac_add_options --disable-tests
+ac_add_options --disable-mailnews
+ac_add_options --disable-composer
+ac_add_options --enable-default-toolkit=gtk2
+# See the following URL for approval email for using official branding
+# http://people.freebsd.org/~ahze/firefox_thunderbird-approved.txt
+ac_add_options --enable-official-branding
+######################################################################
+# FBSD specific
+export CPPFLAGS="@CPPFLAGS@"
+export CFLAGS="@CFLAGS@"
+export LIBS="@LIBS@"
+export LDFLAGS="@LDFLAGS@"
+export CONFIG_SH=/bin/sh
+export XP_UNIX=1
+mk_add_options XP_UNIX=1
+export PERL="@PERL@"
+mk_add_options PERL=$PERL
+# Configure options for installation
+ac_add_options --prefix=@FAKEDIR@
+ac_add_options --x-includes=@X11BASE@/include
+ac_add_options --x-libraries=@X11BASE@/lib
+######################################################################
+# Use ports for these libraries
+ac_add_options --with-system-jpeg=@LOCALBASE@
+ac_add_options --with-system-zlib
+ac_add_options --with-system-png=@LOCALBASE@
+ac_add_options --with-system-mng=@LOCALBASE@
+ac_add_options --without-system-nspr
+ac_add_options --with-gssapi=/usr
+######################################################################
+# set compile/link features
+ac_add_options --with-pthreads
+######################################################################
+# disable unneeded/unavailable
+ac_add_options --disable-auto-deps
+ac_add_options --disable-bidi
+ac_add_options --disable-dtd-debug
+ac_add_options --disable-jsd
+ac_add_options --disable-ldap
+ac_add_options --disable-pedantic
+ac_add_options --disable-profilesharing
+ac_add_options --disable-installer
+ac_add_options --enable-single-profile
+ac_add_options --disable-profilesharing
+ac_add_options --enable-image-decoders=png,gif,jpeg,bmp
+ac_add_options --enable-extensions="cookie,xml-rpc,xmlextras,pref,transformiix,universalchardet,webservices,inspector,p3p,gnomevfs"
+######################################################################
+# conditional from port Makefile
+#if test -n "$WITH_REORDER"; then
+# ac_add_options --enable-reorder
+#else
+# ac_add_options --disable-reorder
+#fi # test -n "$WITH_REORDER"
+if test -n "$WITH_DEBUG"; then
+ ac_add_options --enable-debug
+ ac_add_options --disable-strip
+else
+ ac_add_options --disable-debug
+ ac_add_options --enable-optimize=${WITH_OPTIMIZE}
+ ac_add_options --enable-strip
+fi # test -n "$WITH_DEBUG"
+if test -n "$WITH_LOGGING"; then
+ ac_add_options --enable-logging
+else
+ ac_add_options --disable-logging
+fi # test -n "$WITH_LOGGING"
+if test -z "$WITHOUT_XFT"; then
+ ac_add_options --enable-xft
+else
+ ac_add_options --disable-xft
+fi # test -z "$WITHOUT_XFT"
+if test -z "$WITH_SMB"; then
+ ac_add_options --disable-gnomevfs
+fi # test -z "$WITH_SMB"
+######################################################################
diff --git a/www/firefox3-devel/files/patch-Double.cpp b/www/firefox3-devel/files/patch-Double.cpp
new file mode 100644
index 000000000..a9b570c5d
--- /dev/null
+++ b/www/firefox3-devel/files/patch-Double.cpp
@@ -0,0 +1,61 @@
+$FreeBSD: ports/www/firefox/files/patch-Double.cpp,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
+@@ -51,10 +51,10 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
+-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+-#else
++#if defined(__i386__)
+ fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
++#else
++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #endif
+ fp_except_t oldmask = fpsetmask(~allmask);
+ #endif
+@@ -75,22 +75,31 @@
+ #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
+ #define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+
++union ui32dun {
++ PRUint32 i[2];
++ double d;
++};
++
+ //-- Initialize Double related constants
+ #ifdef IS_BIG_ENDIAN
+-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+- 0xffffffff};
+-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
+-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
++const union ui32dun nanMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}};
++const union ui32dun infMask =
++ {{TX_DOUBLE_HI32_EXPMASK, 0}};
++const union ui32dun negInfMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}};
+ #else
+-const PRUint32 nanMask[2] = {0xffffffff,
+- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
+-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
+-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
++const union ui32dun nanMask =
++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}};
++const union ui32dun infMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK}};
++const union ui32dun negInfMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}};
+ #endif
+
+-const double Double::NaN = *((double*)nanMask);
+-const double Double::POSITIVE_INFINITY = *((double*)infMask);
+-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
++const double Double::NaN = nanMask.d;
++const double Double::POSITIVE_INFINITY = infMask.d;
++const double Double::NEGATIVE_INFINITY = negInfMask.d;
+
+ /*
+ * Determines whether the given double represents positive or negative
diff --git a/www/firefox3-devel/files/patch-browser_app_mozilla.in b/www/firefox3-devel/files/patch-browser_app_mozilla.in
new file mode 100644
index 000000000..492dacc52
--- /dev/null
+++ b/www/firefox3-devel/files/patch-browser_app_mozilla.in
@@ -0,0 +1,465 @@
+--- browser/app/mozilla.in.orig Tue Oct 26 11:26:11 2004
++++ browser/app/mozilla.in Mon Feb 28 23:32:14 2005
+@@ -29,51 +29,83 @@
+ ## the mozilla-bin binary to work.
+ ##
+
++#
++# MOZ_PIS, "Mozilla Plugable Init Scripts"
++# MOZ_PIS_ is the name space used
++# These variables and there meaning are specified in
++# mozilla/xpfe/bootstrap/init.d/README
+ moz_pis_startstop_scripts()
+ {
+- MOZ_USER_DIR="%MOZ_USER_DIR%"
+- # MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts"
+- # These variables and there meaning are specified in
+- # mozilla/xpfe/bootstrap/init.d/README
+- MOZ_PIS_API=2
+- MOZ_PIS_MOZBINDIR="${dist_bin}"
+- MOZ_PIS_SESSION_PID="$$"
+- MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
+- export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
+-
+- case "${1}" in
+- "start")
+- for curr_pis in "${dist_bin}/init.d"/S* "${HOME}/${MOZ_USER_DIR}/init.d"/S* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "start" ;;
+- esac
+- fi
+- done
+- ;;
+- "stop")
+- for curr_pis in "${HOME}/${MOZ_USER_DIR}/init.d"/K* "${dist_bin}/init.d"/K* ; do
+- if [ -x "${curr_pis}" ] ; then
+- case "${curr_pis}" in
+- *.sh) . "${curr_pis}" ;;
+- *) "${curr_pis}" "stop" ;;
+- esac
+- fi
+- done
+- ;;
+- *)
+- echo 1>&2 "$0: Internal error in moz_pis_startstop_scripts."
+- exit 1
+- ;;
+- esac
++ MOZ_PIS_API=2
++ MOZ_PIS_MOZBINDIR="${dist_bin}"
++ MOZ_PIS_SESSION_PID="$$"
++ MOZ_PIS_USER_DIR="${MOZ_USER_DIR}"
++ export MOZ_PIS_API MOZ_PIS_MOZBINDIR MOZ_PIS_SESSION_PID MOZ_PIS_USER_DIR
++
++ case "${1}" in
++ "start")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/S* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/S*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "start"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ "stop")
++ for curr_pis in "${MOZ_PIS_MOZBINDIR}/init.d"/K* \
++ "${HOME}/${MOZ_PIS_USER_DIR}/init.d"/K*; do
++ if [ -x "${curr_pis}" ]; then
++ case "${curr_pis}" in
++ *.sh)
++ . "${curr_pis}"
++ ;;
++ *)
++ ${curr_pis} "stop"
++ ;;
++ esac
++ fi
++ done
++ ;;
++ *)
++ echo "$0: Internal error in moz_pis_startstop_scripts." 1>&2
++ exit 1
++ ;;
++ esac
+ }
+
+-#uncomment for debugging
++# uncomment for debugging
+ #set -x
+
+-moz_libdir=%MOZAPPDIR%
+-MRE_HOME=%MREDIR%
++#
++# variables
++#
++#location="new-tab"
++#MOZILLA_UILOCALE="en-US"
++#MOZILLA_UIREGION="US"
++
++#
++# working definitions
++#
++MOZ_USER_DIR="%MOZ_USER_DIR%"
++moz_libdir="%MOZAPPDIR%"
++MRE_HOME="%MREDIR%"
++
++debugging= # set the debugging level
++use_openFile="yes" # use openFile() for file/dir
++here=`pwd`
++
++if [ ! -d "${MRE_HOME}" ]; then
++ # use moz_libdir as MRE_HOME
++ MRE_HOME="${moz_libdir}"
++fi
++export MRE_HOME
+
+ # Use run-mozilla.sh in the current dir if it exists
+ # If not, then start resolving symlinks until we find run-mozilla.sh
+@@ -82,149 +114,217 @@
+ curdir=`dirname "$progname"`
+ progbase=`basename "$progname"`
+ run_moz="$curdir/run-mozilla.sh"
+-if test -x "$run_moz"; then
+- dist_bin="$curdir"
+- found=1
++if [ -x "$run_moz" ]; then
++ dist_bin="$curdir"
++ found=1
+ else
+- here=`/bin/pwd`
+- while [ -h "$progname" ]; do
+- bn=`basename "$progname"`
+- cd `dirname "$progname"`
+- progname=`/bin/ls -l "$bn" | sed -e 's/^.* -> //' `
+- if [ ! -x "$progname" ]; then
+- break
+- fi
+- curdir=`dirname "$progname"`
+- run_moz="$curdir/run-mozilla.sh"
+- if [ -x "$run_moz" ]; then
+- cd "$curdir"
+- dist_bin=`pwd`
+- run_moz="$dist_bin/run-mozilla.sh"
+- found=1
+- break
+- fi
+- done
+- cd "$here"
++ while [ -h "${progname}" ]; do
++ bn=`basename "${progname}"`
++ cd `dirname "${progname}"`
++ progname=`ls -l "${bn}" | sed -e 's/^.* -> //'`
++ if [ ! -x "$progname" ]; then
++ break
++ fi
++ curdir=`dirname "${progname}"`
++ run_moz="${curdir}/run-mozilla.sh"
++ if [ -x "${run_moz}" ]; then
++ cd "$curdir"
++ dist_bin=`pwd`
++ run_moz="${dist_bin}/run-mozilla.sh"
++ found=1
++ break
++ fi
++ done
++ cd "${here}"
+ fi
+ if [ $found = 0 ]; then
+- # Check default compile-time libdir
+- if [ -x "$moz_libdir/run-mozilla.sh" ]; then
+- dist_bin="$moz_libdir"
+- else
+- echo "Cannot find mozilla runtime directory. Exiting."
+- exit 1
+- fi
+-fi
+-
+-script_args=""
+-moreargs=""
+-debugging=0
+-MOZILLA_BIN="${progbase}-bin"
+-
+-# The following is to check for a currently running instance.
+-# This is taken almost verbatim from the Mozilla RPM package's launch script.
+-MOZ_CLIENT_PROGRAM="$dist_bin/mozilla-xremote-client"
+-check_running() {
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" 'ping()' 2>/dev/null >/dev/null
+- RETURN_VAL=$?
+- if [ $RETURN_VAL -eq 0 ]; then
+- echo 1
+- return 1
++ # Check default compile-time libdir
++ if [ -x "${moz_libdir}/run-mozilla.sh" ]; then
++ dist_bin="$moz_libdir"
++ run_moz="${dist_bin}/run-mozilla.sh"
+ else
+- echo 0
+- return 0
++ echo "$0: Cannot find mozilla runtime directory. Exiting." 1>&2
++ exit 1
+ fi
+-}
++fi
+
++MOZILLA_BIN="${progbase}-bin"
+ if [ "$OSTYPE" = "beos" ]; then
+- mimeset -F "$MOZILLA_BIN"
++ mimeset -F "$MOZILLA_BIN"
+ fi
+
+-ALREADY_RUNNING=`check_running`
++# test for binary apps in ${dist_bin}
++if [ -x "${dist_bin}/${MOZILLA_BIN}" ]; then
++ MOZILLA_BIN="${dist_bin}/${progbase}-bin"
++else
++ echo "$0: Cannot find mozilla binary executable. Exiting." 1>&2
++ exit 1
++fi
++if [ -x "${dist_bin}/mozilla-xremote-client" ]; then
++ MOZ_CLIENT_PROGRAM="${dist_bin}/mozilla-xremote-client -a ${progbase}"
++else
++ MOZ_CLIENT_PROGRAM="${MOZILLA_BIN} -remote -a ${progbase}"
++fi
+
+-################################################################ Parse Arguments
+-# If there's a command line argument but it doesn't begin with a -
+-# it's probably a url. Try to send it to a running instance.
+-_USE_EXIST=0
+-_optOne="$1"
+-case "${_optOne}" in
+- -*)
+- ;;
++# guest a default remote command
++_remote_cmd="xfeDoCommand(openBrowser)"
++
++# parse options
++script_args= # null
++moreargs= # null
++target= # null
++ALREADY_RUNNING="test"
++while [ $# -gt 0 ]
++do
++ if [ -n "${target}" ]; then
++ # well, this can't be the target if not last
++ moreargs="${moreargs} \"${target}\""
++ target= # null
++ fi
++ case "$1" in
++ # preserve [pP] for profile
++ --pure | -pure)
++ MOZILLA_BIN="${MOZILLA_BIN}.pure"
++ shift
++ ;;
++ -g | --debug)
++ script_args="${script_args} -g"
++ debugging=1
++ shift
++ ;;
++ -d | --debugger)
++ if [ -n "$2" ]; then
++ script_args="${script_args} -d $2"
++ shift 2
++ else
++ "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Ll]ocale)
++ if [ -n "$2" ]; then
++ uilocale="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -[Uu][Ii][Rr]egion)
++ if [ -n "$2" ]; then
++ uiregion="$2"
++ shift 2
++ else
++ echo "$0: ERROR, $1 needs an argument. Exiting" 1>&2
++ exit 1
++ fi
++ ;;
++ -browser)
++ # browser is default for firefox
++ shift
++ ;;
++ -turbo | -nosplash | -quiet)
++ # use remote even with this
++ moreargs="${moreargs} $1"
++ shift
++ ;;
++ -*)
++ # don't use remote with options
++ ALREADY_RUNNING= # null
++ moreargs="${moreargs} $1"
++ shift
++ ;;
+ *)
+- _USE_EXIST=1
+- ;;
+-esac
+-
+-_optLast=
+-for i in "$@"; do
+- _optLast="${i}"
+-done #last arg
+-
+-if [ `expr "${_optLast}" : '.*:/.*'` -eq 0 -a \( -f "${_optLast}" -o -d "${_optLast}" \) ]; then
+- # Last argument seems to be a local file/directory
+- # Check, if it is absolutely specified (ie. /home/foo/file vs. ./file)
+- # If it is just "relatively" (./file) specified, make it absolutely
+- [ `expr "${_optLast}" : '/.*'` -eq 0 ] && _optLast="file://`pwd`/${_optLast}"
+-fi
+-################################################################ Parse Arguments
+-
+-########################################################################### Main
+-if [ $ALREADY_RUNNING -eq 1 ]; then
+- # There's an instance already running. Use it.
+- # Any command line args passed in?
+- if [ $# -gt 0 ]; then
+- # There were "some" command line args.
+- if [ ${_USE_EXIST} -eq 1 ]; then
+- # We should use an existing instance, as _USE_EXIST=$_USE_EXIST=-1
+- _remote_cmd="openURL(${_optLast})"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "${_remote_cmd}"
+- unset _remote_cmd
+- exit $?
+- fi
++ target="$1"
++ shift
++ ;;
++ esac
++done
++
++# test for a running copy of firefox
++# seems this is not needed
++#if [-n "${ALREADY_RUNNING}" ]; then
++# if [ -n "${DISPLAY}" ]; then
++# if [ -n "${debugging}" ]; then
++# echo "${run_moz} ${MOZ_CLIENT_PROGRAM} ping()"
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' && ALREADY_RUNNING="yes"
++# else
++# ${run_moz} ${MOZ_CLIENT_PROGRAM} 'ping()' >/dev/null 2>&1 &&
++# ALREADY_RUNNING="yes"
++# fi
++# elif [ -n "${debugging}" ]; then
++# echo "$0: WARN, no DISPLAY environment" 1>&2
++# fi
++#fi
++
++# process target
++if [ -n "${target}" ]; then
++ moreargs="${moreargs} \"${target}\""
++ if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ `expr "${target}" : '.*:.*'` -eq 0 ]; then
++ if [ `expr "${target}" : '/.*'` -eq 0 ]; then
++ target="${here}/${target}"
++ fi
++ if [ -r "${target}" -o -d "${target}" ]; then
++ [ -n "${use_openFile}" ] || target="file://${target}"
++ else
++ echo "$0: WARN, target: ${target} not an URI/file/dir" 1>&2
++ ALREADY_RUNNING= # null
++ fi
+ else
+- # No command line args. Open new window/tab
+- #exec "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- "${run_moz}" "$MOZ_CLIENT_PROGRAM" -a "${progbase}" "xfeDoCommand(openBrowser)"
+- exit $?
++ # an former URI, don't use openFile
++ use_openFile= # null
+ fi
++ fi
+ fi
+-# Default action - no running instance or _USE_EXIST (${_USE_EXIST}) ! -eq 1
+-########################################################################### Main
+
+-while [ $# -gt 0 ]
+-do
+- case "$1" in
+- -p | --pure | -pure)
+- MOZILLA_BIN="${MOZILLA_BIN}.pure"
+- shift
+- ;;
+- -g | --debug)
+- script_args="$script_args -g"
+- debugging=1
+- shift
+- ;;
+- -d | --debugger)
+- script_args="$script_args -d $2"
+- shift 2
+- ;;
+- *)
+- moreargs="$moreargs \"$1\""
+- shift 1
+- ;;
+- esac
+-done
++# try remote protocol if running
++if [ -n "${ALREADY_RUNNING}" ]; then
++ if [ -n "${target}" ]; then
++ if [ -n "${use_openFile}" ]; then
++ _remote_cmd="openFile(${target})"
++ elif [ -n "${location}" ]; then
++ _remote_cmd="openURL(${target},${location})"
++ else
++ _remote_cmd="openURL(${target})"
++ fi
++ fi
++ # FIXME problems with freedesktop StartupNotify
++ if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd}"
++ fi
++ ${run_moz} ${script_args} ${MOZ_CLIENT_PROGRAM} ${_remote_cmd} && exit 0
++fi
++
++# fallback to direct invocation
++
++# UILocale, UIRegion
++if [ -z "${uilocale}" -a -n "${MOZILLA_UILOCALE}" ]; then
++ uilocale="${MOZILLA_UILOCALE}"
++fi
++if [ -z "${uiregion}" -a -n "${MOZILLA_UIREGION}" ]; then
++ uiregion="${MOZILLA_UIREGION}"
++fi
++if [ -n "${uiregion}" -a -z "${uilocale}" ]; then
++ uilocale="en-US"
++fi
++if [ -n "${uilocale}" ]; then
++ if [ -n "${uiregion}" ]; then
++ moreargs="-UIRegion ${uiregion} ${moreargs}"
++ fi
++ moreargs="-UILocale ${uilocale} ${moreargs}"
++fi
+
+-export MRE_HOME
+-eval "set -- $moreargs"
++# real invocation
++eval "set -- ${moreargs}"
+
+ ## Start addon scripts
+ moz_pis_startstop_scripts "start"
+
+-if [ $debugging = 1 ]
+-then
+- echo $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"
++if [ -n "${debugging}" ]; then
++ echo "${run_moz} ${script_args} ${MOZILLA_BIN} $@"
+ fi
+-"$dist_bin/run-mozilla.sh" $script_args "$dist_bin/$MOZILLA_BIN" "$@"
++${run_moz} ${script_args} ${MOZILLA_BIN} "$@"
+ exitcode=$?
+
+ ## Stop addon scripts
diff --git a/www/firefox3-devel/files/patch-bugzilla149334 b/www/firefox3-devel/files/patch-bugzilla149334
new file mode 100644
index 000000000..fe1be5bc8
--- /dev/null
+++ b/www/firefox3-devel/files/patch-bugzilla149334
@@ -0,0 +1,342 @@
+Index: gfx/idl/nsIFreeType2.idl
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/idl/nsIFreeType2.idl,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsIFreeType2.idl
+--- gfx/idl/nsIFreeType2.idl 15 Apr 2004 23:30:02 -0000 1.10
++++ gfx/idl/nsIFreeType2.idl 26 May 2004 10:00:54 -0000
+@@ -76,10 +76,11 @@ native FT_Pointer(FT_Pointer);
+ native FT_Sfnt_Tag(FT_Sfnt_Tag);
+ native FT_Size(FT_Size);
+
+-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
++[ptr] native FTC_ImageType_p(FTC_ImageType);
+ native FTC_Face_Requester(FTC_Face_Requester);
+ native FTC_Font(FTC_Font);
+-native FTC_Image_Cache(FTC_Image_Cache);
++native FTC_FaceID(FTC_FaceID);
++native FTC_ImageCache(FTC_ImageCache);
+ native FTC_Manager(FTC_Manager);
+
+ // #ifdef MOZ_SVG
+@@ -99,7 +100,7 @@ interface nsIFreeType2 : nsISupports
+
+ readonly attribute FT_Library library;
+ readonly attribute FTC_Manager FTCacheManager;
+- readonly attribute FTC_Image_Cache ImageCache;
++ readonly attribute FTC_ImageCache ImageCache;
+
+ void doneFace(in FT_Face face);
+ void doneFreeType(in FT_Library lib);
+@@ -115,16 +116,16 @@ interface nsIFreeType2 : nsISupports
+ void outlineDecompose(in FT_Outline_p outline,
+ in const_FT_Outline_Funcs_p funcs, in voidPtr p);
+ void setCharmap(in FT_Face face, in FT_CharMap charmap);
+- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
++ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
+ in FT_UInt gindex, out FT_Glyph glyph);
+- void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
+- out FT_Face face, out FT_Size size);
++ void managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
++ out FT_Face face);
+ void managerDone(in FTC_Manager manager);
+ void managerNew(in FT_Library lib, in FT_UInt max_faces,
+ in FT_UInt max_sizes, in FT_ULong max_bytes,
+ in FTC_Face_Requester requester, in FT_Pointer req_data,
+ out FTC_Manager manager);
+- void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
++ void imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
+ /* #ifdef MOZ_SVG */
+ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
+ in FT_Vector_p delta);
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 17 Apr 2004 21:52:29 -0000 1.25
++++ gfx/src/freetype/nsFreeType.cpp 26 May 2004 10:00:54 -0000
+@@ -110,11 +110,11 @@ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
+ {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
+ {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
+- {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
+- {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
++ {"FTC_ImageCache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
++ {"FTC_Manager_LookupFace", NS_FT2_OFFSET(nsFTC_Manager_LookupFace), PR_TRUE},
+ {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
+ {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
+- {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
++ {"FTC_ImageCache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
+ // #ifdef MOZ_SVG
+ {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
+ {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
+@@ -282,7 +282,7 @@ nsFreeType2::SetCharmap(FT_Face face, FT
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
++nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
+ FT_UInt glyphID, FT_Glyph *glyph)
+ {
+ // call the FreeType2 function via the function pointer
+@@ -291,11 +291,11 @@ nsFreeType2::ImageCacheLookup(FTC_Image_
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
+- FT_Face *face, FT_Size *size)
++nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
++ FT_Face *face)
+ {
+ // call the FreeType2 function via the function pointer
+- FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
++ FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
+ return error ? NS_ERROR_FAILURE : NS_OK;
+ }
+
+@@ -320,7 +320,7 @@ nsFreeType2::ManagerNew(FT_Library libra
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
++nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
+ {
+ // call the FreeType2 function via the function pointer
+ FT_Error error = nsFTC_Image_Cache_New(manager, cache);
+@@ -389,7 +389,7 @@ nsFreeType2::SupportsExtFunc(PRBool *res
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
++nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
+ {
+ *aCache = mImageCache;
+ return NS_OK;
+Index: gfx/src/freetype/nsFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.h,v
+retrieving revision 1.17
+diff -u -3 -p -r1.17 nsFreeType.h
+--- gfx/src/freetype/nsFreeType.h 17 Apr 2004 21:52:29 -0000 1.17
++++ gfx/src/freetype/nsFreeType.h 26 May 2004 10:00:54 -0000
+@@ -120,13 +120,13 @@ typedef FT_Error (*FT_Outline_Decompose_
+ typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
+ typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
+ typedef FT_Error (*FTC_Image_Cache_Lookup_t)
+- (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
+-typedef FT_Error (*FTC_Manager_Lookup_Size_t)
+- (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
++ (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
++typedef FT_Error (*FTC_Manager_LookupFace_t)
++ (FTC_Manager, FTC_FaceID, FT_Face*);
+ typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
+ typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
+ FTC_Face_Requester, FT_Pointer, FTC_Manager*);
+-typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
++typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
+ // #ifdef MOZ_SVG
+ typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
+ typedef FT_Error (*FT_Get_Kerning_t)
+@@ -181,7 +181,7 @@ protected:
+ FT_Outline_Decompose_t nsFT_Outline_Decompose;
+ FT_Set_Charmap_t nsFT_Set_Charmap;
+ FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
+- FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
++ FTC_Manager_LookupFace_t nsFTC_Manager_LookupFace;
+ FTC_Manager_Done_t nsFTC_Manager_Done;
+ FTC_Manager_New_t nsFTC_Manager_New;
+ FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
+@@ -229,7 +229,7 @@ protected:
+ PRLibrary *mSharedLib;
+ FT_Library mFreeTypeLibrary;
+ FTC_Manager mFTCacheManager;
+- FTC_Image_Cache mImageCache;
++ FTC_ImageCache mImageCache;
+
+ static nsHashtable *sFontFamilies;
+ static nsHashtable *sRange1CharSetNames;
+Index: gfx/src/ps/nsFontMetricsPS.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v
+retrieving revision 1.43
+diff -u -3 -p -r1.43 nsFontMetricsPS.cpp
+--- gfx/src/ps/nsFontMetricsPS.cpp 17 Apr 2004 21:52:31 -0000 1.43
++++ gfx/src/ps/nsFontMetricsPS.cpp 26 May 2004 10:01:03 -0000
+@@ -1140,10 +1140,10 @@ nsFontPSFreeType::Init(nsITrueTypeFontCa
+
+ mPixelSize = NSToIntRound(app2dev * mFont->size);
+
+- mImageDesc.font.face_id = (void*)mEntry;
+- mImageDesc.font.pix_width = mPixelSize;
+- mImageDesc.font.pix_height = mPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
++ mImageDesc->width = mPixelSize;
++ mImageDesc->height = mPixelSize;
++ mImageDesc->flags = 0;
+
+ nsresult rv;
+ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
+@@ -1189,7 +1189,7 @@ nsFontPSFreeType::GetWidth(const PRUnich
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache iCache;
++ FTC_ImageCache iCache;
+ nsresult rv = mFt2->GetImageCache(&iCache);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Failed to get Image Cache");
+@@ -1227,8 +1227,8 @@ nsFontPSFreeType::getFTFace()
+
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ NS_ASSERTION(rv==0, "failed to get face/size");
+ if (rv)
+ return nsnull;
+@@ -1621,16 +1621,16 @@ void nsFT2Type8Generator::GeneratePSFont
+ mEntry->GetFamilyName(fontName);
+ mEntry->GetStyleName(styleName);
+
+- mImageDesc.font.face_id = (void*)mEntry;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
+ // TT glyph has no relation to size
+- mImageDesc.font.pix_width = 16;
+- mImageDesc.font.pix_height = 16;
+- mImageDesc.image_type = 0;
++ mImageDesc->width = 16;
++ mImageDesc->height = 16;
++ mImageDesc->flags = 0;
+ FT_Face face = nsnull;
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ if (NS_FAILED(rv))
+ return;
+
+Index: gfx/src/ps/nsFontMetricsPS.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFontMetricsPS.h
+--- gfx/src/ps/nsFontMetricsPS.h 17 Apr 2004 21:52:31 -0000 1.25
++++ gfx/src/ps/nsFontMetricsPS.h 26 May 2004 10:01:03 -0000
+@@ -319,7 +319,7 @@ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+
+
+ static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
+@@ -362,7 +362,7 @@ public:
+ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
+ nsCOMPtr<nsIFreeType2> mFt2;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ };
+ #endif
+
+Index: gfx/src/x11shared/nsFontFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.cpp,v
+retrieving revision 1.14
+diff -u -3 -p -r1.14 nsFontFreeType.cpp
+--- gfx/src/x11shared/nsFontFreeType.cpp 17 Apr 2004 21:52:34 -0000 1.14
++++ gfx/src/x11shared/nsFontFreeType.cpp 26 May 2004 10:01:03 -0000
+@@ -177,7 +177,7 @@ nsFreeTypeFont::getFTFace()
+ FTC_Manager mgr;
+ nsresult rv;
+ mFt2->GetFTCacheManager(&mgr);
+- rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
++ rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
+ if (NS_FAILED(rv))
+ return nsnull;
+@@ -191,22 +191,15 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ PRBool embedded_bimap = PR_FALSE;
+ mFaceID = aFaceID;
+ mPixelSize = aPixelSize;
+- mImageDesc.font.face_id = (void*)mFaceID;
+- mImageDesc.font.pix_width = aPixelSize;
+- mImageDesc.font.pix_height = aPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mFaceID;
++ mImageDesc->width = aPixelSize;
++ mImageDesc->height = aPixelSize;
++ mImageDesc->flags = 0;
+
+ if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+- mImageDesc.image_type |= ftc_image_mono;
+ anti_alias = PR_FALSE;
+ }
+
+- if (nsFreeType2::gFreeType2Autohinted)
+- mImageDesc.image_type |= ftc_image_flag_autohinted;
+-
+- if (nsFreeType2::gFreeType2Unhinted)
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+-
+ PRUint32 num_embedded_bitmaps, i;
+ PRInt32* embedded_bitmapheights;
+ mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
+@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ if (embedded_bitmapheights[i] == aPixelSize) {
+ embedded_bimap = PR_TRUE;
+ // unhinted must be set for embedded bitmaps to be used
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+ break;
+ }
+ }
+@@ -312,7 +304,7 @@ nsFreeTypeFont::doGetBoundingMetrics(con
+ if (!face)
+ return NS_ERROR_FAILURE;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return NS_ERROR_FAILURE;
+@@ -401,7 +393,7 @@ nsFreeTypeFont::GetWidth(const PRUnichar
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+@@ -723,7 +715,7 @@ nsFreeTypeXImage::DrawString(nsRendering
+ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
+ #endif
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+Index: gfx/src/x11shared/nsFontFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.h,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsFontFreeType.h
+--- gfx/src/x11shared/nsFontFreeType.h 17 Apr 2004 21:52:34 -0000 1.10
++++ gfx/src/x11shared/nsFontFreeType.h 26 May 2004 10:01:03 -0000
+@@ -110,7 +110,7 @@ protected:
+ XImage *GetXImage(PRUint32 width, PRUint32 height);
+ nsITrueTypeFontCatalogEntry *mFaceID;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ };
+
diff --git a/www/firefox3-devel/files/patch-build_unix_mozilla-xpcom.pc.in b/www/firefox3-devel/files/patch-build_unix_mozilla-xpcom.pc.in
new file mode 100644
index 000000000..4e982a544
--- /dev/null
+++ b/www/firefox3-devel/files/patch-build_unix_mozilla-xpcom.pc.in
@@ -0,0 +1,8 @@
+--- build/unix/mozilla-xpcom.pc.in.orig Thu Jun 24 12:23:09 2004
++++ build/unix/mozilla-xpcom.pc.in Thu Jun 24 12:23:18 2004
+@@ -8,4 +8,4 @@
+ Version: %MOZILLA_VERSION%
+ Requires: mozilla-nspr = %MOZILLA_VERSION%
+ Libs: -L${libdir} -lxpcom
+-Cflags: -I${includedir}/xpcom -I${includedir}/string
++Cflags: -I${includedir}/xpcom -I${includedir}/string -I${includedir}
diff --git a/www/firefox3-devel/files/patch-build_unix_run-mozilla.sh b/www/firefox3-devel/files/patch-build_unix_run-mozilla.sh
new file mode 100644
index 000000000..ab658a150
--- /dev/null
+++ b/www/firefox3-devel/files/patch-build_unix_run-mozilla.sh
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-build_unix_run-mozilla.sh,v 1.5 2004/02/11 19:30:49 marcus Exp $
+
+--- build/unix/run-mozilla.sh.orig Mon Dec 15 12:27:28 2003
++++ build/unix/run-mozilla.sh Wed Feb 11 14:24:17 2004
+@@ -355,7 +355,7 @@
+ fi
+ ##
+ ## Set LD_LIBRARY_PATH
+-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
++LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+ if [ -n "$LD_LIBRARYN32_PATH" ]
+ then
+ LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
+@@ -442,6 +442,9 @@
+ #
+ export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
+ export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
++
++MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
++export MOZ_PLUGIN_PATH
+
+ if [ $moz_debug -eq 1 ]
+ then
diff --git a/www/firefox3-devel/files/patch-config-mkdepend-imakemdep.h b/www/firefox3-devel/files/patch-config-mkdepend-imakemdep.h
new file mode 100644
index 000000000..424ac6784
--- /dev/null
+++ b/www/firefox3-devel/files/patch-config-mkdepend-imakemdep.h
@@ -0,0 +1,12 @@
+$FreeBSD: ports/www/firefox/files/patch-config-mkdepend-imakemdep.h,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998
++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003
+@@ -278,4 +278,7 @@
+ "-D__i386__",
+ # endif
++# if defined(__amd64__) || defined(__x86_64__)
++ "-D__amd64__ -D__x86_64__",
++# endif
+ # ifdef __GNUC__
+ "-traditional",
diff --git a/www/firefox3-devel/files/patch-config-rules.mk b/www/firefox3-devel/files/patch-config-rules.mk
new file mode 100644
index 000000000..f8697ee4c
--- /dev/null
+++ b/www/firefox3-devel/files/patch-config-rules.mk
@@ -0,0 +1,16 @@
+$FreeBSD: ports/www/firefox/files/patch-config-rules.mk,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- config/rules.mk.orig Tue Aug 26 13:28:47 2003
++++ config/rules.mk Sun Feb 1 15:11:41 2004
+@@ -444,7 +444,11 @@
+
+ ifeq ($(OS_ARCH),FreeBSD)
+ ifdef IS_COMPONENT
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
++else
+ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
++endif
+ endif
+ endif
+
diff --git a/www/firefox3-devel/files/patch-config::mkdepend::Makefile.in b/www/firefox3-devel/files/patch-config::mkdepend::Makefile.in
new file mode 100644
index 000000000..bace012a2
--- /dev/null
+++ b/www/firefox3-devel/files/patch-config::mkdepend::Makefile.in
@@ -0,0 +1,10 @@
+--- config/mkdepend/Makefile.in.orig Sun Dec 12 07:36:57 2004
++++ config/mkdepend/Makefile.in Sun Dec 12 07:37:55 2004
+@@ -57,6 +57,7 @@
+ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\"
++HOST_CFLAGS += $(XCFLAGS)
+
+ ifdef GNU_CC
+ _GCCDIR = $(shell $(CC) -print-file-name=include)
diff --git a/www/firefox3-devel/files/patch-configure b/www/firefox3-devel/files/patch-configure
new file mode 100644
index 000000000..9e60372ad
--- /dev/null
+++ b/www/firefox3-devel/files/patch-configure
@@ -0,0 +1,38 @@
+--- configure.orig Fri Feb 13 01:06:29 2004
++++ configure Fri Feb 13 01:07:17 2004
+@@ -9181,7 +9181,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9187 "configure"
+ #include "confdefs.h"
+@@ -9212,7 +9212,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
+@@ -9222,7 +9222,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9228 "configure"
+ #include "confdefs.h"
+@@ -9253,7 +9253,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ fi
diff --git a/www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp b/www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
new file mode 100644
index 000000000..7c07aad7f
--- /dev/null
+++ b/www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp
@@ -0,0 +1,48 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.cpp,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.cpp.orig Wed Nov 19 01:20:47 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.cpp Tue Feb 10 02:52:26 2004
+@@ -323,11 +323,11 @@
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.startlinksonly",
+ &mStartLinksOnlyPref);
+
+- PRBool isSoundEnabled = PR_TRUE;
++ mIsSoundEnabled = PR_TRUE;
+ prefBranch->GetBoolPref("accessibility.typeaheadfind.enablesound",
+- &isSoundEnabled);
++ &mIsSoundEnabled);
+ nsXPIDLCString soundStr;
+- if (isSoundEnabled) {
++ if (mIsSoundEnabled && mIsSoundEnabled) {
+ prefBranch->GetCharPref("accessibility.typeaheadfind.soundURL",
+ getter_Copies(soundStr));
+ }
+@@ -758,7 +758,7 @@
+ }
+ else {
+ // No find string to backspace in!
+- if (mIsBackspaceProtectOn) {
++ if (mIsBackspaceProtectOn && mIsSoundEnabled) {
+ // This flag should be on only if the last key was a backspace.
+ // It keeps us from accidentally hitting backspace too many times and
+ // going back in history when we really just wanted to clear
+@@ -1012,7 +1012,9 @@
+
+ // Error sound (don't fire when backspace is pressed, they're
+ // trying to correct the mistake!)
+- PlayNotFoundSound();
++ if (mIsSoundEnabled) {
++ PlayNotFoundSound();
++ }
+
+ // Remove bad character from buffer, so we can continue typing from
+ // last matched character
+@@ -1059,7 +1061,7 @@
+ void
+ nsTypeAheadFind::PlayNotFoundSound()
+ {
+- if (mNotFoundSoundURL.IsEmpty()) // no sound
++ if (mNotFoundSoundURL.IsEmpty() || !mIsSoundEnabled) // no sound
+ return;
+ if (!mSoundInterface) {
+ mSoundInterface = do_CreateInstance("@mozilla.org/sound;1");
diff --git a/www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h b/www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
new file mode 100644
index 000000000..86c9567a8
--- /dev/null
+++ b/www/firefox3-devel/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h
@@ -0,0 +1,14 @@
+$FreeBSD: ports/www/firefox/files/patch-extensions_typeaheadfind_src_nsTypeAheadFind.h,v 1.1 2004/02/11 07:16:17 marcus Exp $
+
+--- extensions/typeaheadfind/src/nsTypeAheadFind.h.orig Fri May 23 22:00:33 2003
++++ extensions/typeaheadfind/src/nsTypeAheadFind.h Mon Feb 9 22:21:43 2004
+@@ -194,6 +194,9 @@
+
+ nsCString mNotFoundSoundURL;
+
++ // Move the sound enabled boolean out for all methods to access.
++ PRBool mIsSoundEnabled;
++
+ // PRBool's are used instead of PRPackedBool's where the address of the
+ // boolean variable is getting passed into a method. For example:
+ // GetBoolPref("accessibility.typeaheadfind.linksonly", &mLinksOnlyPref);
diff --git a/www/firefox3-devel/files/patch-nspr-unix.c b/www/firefox3-devel/files/patch-nspr-unix.c
new file mode 100644
index 000000000..e453013b5
--- /dev/null
+++ b/www/firefox3-devel/files/patch-nspr-unix.c
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/firefox/files/patch-nspr-unix.c,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/md/unix/unix.c.orig Sat May 31 18:06:04 2003
++++ nsprpub/pr/src/md/unix/unix.c Sat May 31 18:04:43 2003
+@@ -65,7 +65,8 @@
+ * PRInt32* pointer to a _PRSockLen_t* pointer.
+ */
+ #if defined(HAVE_SOCKLEN_T) \
+- || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2)
++ || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \
++ || defined(FREEBSD)
+ #define _PRSockLen_t socklen_t
+ #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
+ || defined(AIX4_1) || defined(LINUX) || defined(SONY) \
+@@ -73,7 +74,7 @@
+ || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \
+ || defined(NEXTSTEP) || defined(QNX)
+ #define _PRSockLen_t int
+-#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \
++#elif (defined(AIX) && !defined(AIX4_1)) \
+ || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \
+ || defined(DGUX) || defined(VMS) || defined(NTO)
+ #define _PRSockLen_t size_t
diff --git a/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg b/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg
new file mode 100644
index 000000000..997531b5b
--- /dev/null
+++ b/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.cfg
@@ -0,0 +1,163 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.cfg,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.cfg.orig Wed Jan 2 18:38:25 2002
++++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 15:09:53 2004
+@@ -91,7 +91,7 @@
+ #define PR_ALIGN_OF_DOUBLE 4
+ #define PR_ALIGN_OF_POINTER 4
+
+-#elif defined(__alpha)
++#elif defined(__alpha__)
+
+ #define IS_LITTLE_ENDIAN 1
+ #undef IS_BIG_ENDIAN
+@@ -138,6 +138,149 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
++#elif defined(__sparc64__)
++#undef IS_LITTLE_ENDIAN
++#define IS_BIG_ENDIAN 1
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_DOUBLE 8
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_POINTER 8
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++
++#elif defined(__ia64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#elif defined(__amd64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
+ #else
+
+ #error "Unknown CPU architecture"
diff --git a/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.h b/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.h
new file mode 100644
index 000000000..e96b317c8
--- /dev/null
+++ b/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_freebsd.h
@@ -0,0 +1,15 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-include-md-_freebsd.h,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 23:36:13 2003
++++ nsprpub/pr/include/md/_freebsd.h Mon Feb 9 22:24:39 2004
+@@ -50,6 +50,10 @@
+ #define _PR_SI_ARCHITECTURE "alpha"
+ #elif defined(__sparc__)
+ #define _PR_SI_ARCHITECTURE "sparc"
++#elif defined(__ia64__)
++#define _PR_SI_ARCHITECTURE "ia64"
++#elif defined(__amd64__)
++#define _PR_SI_ARCHITECTURE "amd64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
diff --git a/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_pth.h b/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_pth.h
new file mode 100644
index 000000000..1f8159c70
--- /dev/null
+++ b/www/firefox3-devel/files/patch-nsprpub-pr-include-md-_pth.h
@@ -0,0 +1,11 @@
+--- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004
++++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004
+@@ -90,7 +90,7 @@
+ #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
+ #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
+ #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
+-#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
++#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
+ #if defined(DARWIN)
+ #define _PT_PTHREAD_CONDATTR_INIT(x) 0
+ #else
diff --git a/www/firefox3-devel/files/patch-nsprpub-pr-src-io-prprf.c b/www/firefox3-devel/files/patch-nsprpub-pr-src-io-prprf.c
new file mode 100644
index 000000000..38bd959ae
--- /dev/null
+++ b/www/firefox3-devel/files/patch-nsprpub-pr-src-io-prprf.c
@@ -0,0 +1,14 @@
+--- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004
++++ nsprpub/pr/src/io/prprf.c Tue Jun 15 13:17:30 2004
+@@ -51,7 +51,10 @@
+ ** Note: on some platforms va_list is defined as an array,
+ ** and requires array notation.
+ */
+-#if (defined(LINUX) && defined(__x86_64__))
++#if defined(__amd64__)
++#include <stdarg.h>
++#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar))
++#elif (defined(LINUX) && defined(__x86_64__))
+ #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar))
+ #elif (defined(LINUX) && defined(__powerpc__)) || \
+ (defined(LINUX) && defined(__s390__)) || \
diff --git a/www/firefox3-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c b/www/firefox3-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c
new file mode 100644
index 000000000..537577dec
--- /dev/null
+++ b/www/firefox3-devel/files/patch-nsprpub-pr-src-pthreads-ptio.c
@@ -0,0 +1,31 @@
+$FreeBSD: ports/www/firefox/files/patch-nsprpub-pr-src-pthreads-ptio.c,v 1.4 2004/02/11 07:16:17 marcus Exp $
+
+--- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 21:59:47 2003
++++ nsprpub/pr/src/pthreads/ptio.c Fri Oct 17 05:25:43 2003
+@@ -189,7 +189,7 @@
+ #endif
+ #endif
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ static PRBool _pr_ipv6_v6only_on_by_default;
+ /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */
+ #ifndef IPV6_V6ONLY
+@@ -1154,7 +1154,7 @@
+ _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE);
+ PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr);
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option
+ * is turned on by default, contrary to what RFC 3493, Section
+ * 5.3 says. So we have to turn it off. Find out whether we
+@@ -3462,7 +3462,7 @@
+ if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno);
+ else
+ {
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default)
+ {
+ int on = 0;
diff --git a/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk b/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk
new file mode 100644
index 000000000..3e0e14aca
--- /dev/null
+++ b/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk
@@ -0,0 +1,28 @@
+--- security/coreconf/FreeBSD.mk.orig Wed Mar 26 20:17:25 2003
++++ security/coreconf/FreeBSD.mk Sun Nov 21 22:59:49 2004
+@@ -43,8 +43,12 @@
+ ifeq ($(OS_TEST),alpha)
+ CPU_ARCH = alpha
+ else
++ifeq ($(OS_TEST),amd64)
++CPU_ARCH = amd64
++else
+ CPU_ARCH = x86
+ endif
++endif
+
+ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
+
+@@ -71,7 +75,11 @@
+ DLL_SUFFIX = so.1.0
+ endif
+
+-MKSHLIB = $(CC) $(DSO_LDOPTS)
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@
++else
++MKSHLIB = $(CC) -Wl,-Bsymbolic $(DSO_LDOPTS) -o $@
++endif
+ ifdef MAPFILE
+ # Add LD options to restrict exported symbols to those in the map file
+ endif
diff --git a/www/firefox3-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/www/firefox3-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
new file mode 100644
index 000000000..7f8e55f53
--- /dev/null
+++ b/www/firefox3-devel/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
@@ -0,0 +1,29 @@
+--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004
++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004
+@@ -143,7 +143,7 @@
+ PR_END_MACRO
+
+ // Attempt to open libgconf
+- gconfLib = LoadVersionedLibrary("gconf-2", ".4");
++ gconfLib = PR_LoadLibrary("libgconf-2.so");
+ ENSURE_LIB(gconfLib);
+
+ GET_LIB_FUNCTION(gconf, gconf_client_get_default);
+@@ -151,7 +151,7 @@
+ GET_LIB_FUNCTION(gconf, gconf_client_get_bool);
+
+ // Attempt to open libgnome
+- gnomeLib = LoadVersionedLibrary("gnome-2", ".0");
++ gnomeLib = PR_LoadLibrary("libgnome-2.so");
+ ENSURE_LIB(gnomeLib);
+
+ GET_LIB_FUNCTION(gnome, gnome_url_show);
+@@ -160,7 +160,7 @@
+ GET_LIB_FUNCTION(gnome, gnome_program_get);
+
+ // Attempt to open libgnomevfs
+- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0");
++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so");
+ ENSURE_LIB(vfsLib);
+
+ GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name);
diff --git a/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc b/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
new file mode 100644
index 000000000..9a41bbfc4
--- /dev/null
+++ b/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-public-xptcstubsdecl.inc
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004
++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Tue Jun 15 12:52:36 2004
+@@ -8,7 +8,7 @@
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
diff --git a/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in b/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
new file mode 100644
index 000000000..e9f125165
--- /dev/null
+++ b/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in
@@ -0,0 +1,56 @@
+$FreeBSD: ports/www/firefox/files/patch-xpcom-reflect-xptcall-src-md-unix-Makefile.in,v 1.4 2004/10/24 06:34:13 peter Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 15:06:40 2004
+@@ -49,6 +49,9 @@
+ ifeq (86,$(findstring 86,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
+ endif
++ifeq (amd64,$(OS_TEST))
++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp
++endif
+ endif
+ #
+ # New code for Linux, et. al., with gcc
+@@ -60,7 +63,7 @@
+ endif
+ endif
+ # IA64 Linux
+-ifneq (,$(filter Linux,$(OS_ARCH)))
++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
+ ifneq (,$(findstring ia64,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
+ ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
+@@ -106,9 +109,15 @@
+ ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
+ endif
+ #
++# FreeBSD/Alpha
++#
++ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
++CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
++endif
++#
+ # Linux/Alpha
+ #
+-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
++ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
+ endif
+ #
+@@ -294,6 +303,15 @@
+ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
+ CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# FreeBSD/SPARC64
++#
++ifeq ($(OS_ARCH),FreeBSD)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
++endif
+ endif
+ #
+ # Solaris/SPARC
diff --git a/www/firefox3-devel/files/patch-xptcall-alpha b/www/firefox3-devel/files/patch-xptcall-alpha
new file mode 100644
index 000000000..f5d802f73
--- /dev/null
+++ b/www/firefox3-devel/files/patch-xptcall-alpha
@@ -0,0 +1,461 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-alpha,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
+@@ -0,0 +1,184 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++__asm__("invoke_copy_to_stack") __attribute__((unused));
++
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
++ {
++ if(s->IsPtrData())
++ {
++ *d = (PRUint64)s->ptr;
++ continue;
++ }
++ switch(s->type)
++ {
++ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
++ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
++ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
++ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
++ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
++ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
++ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
++ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // convert floats to doubles if they are to be passed
++ // via registers so we can just deal with doubles later
++ union { PRUint64 u64; double d; } t;
++ t.d = (double)s->val.f;
++ *d = t.u64;
++ }
++ else
++ // otherwise copy to stack normally
++ *d = (PRUint64)s->val.u32;
++ break;
++ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
++ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
++ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
++ default:
++ // all the others are plain pointer types
++ *d = (PRUint64)s->val.p;
++ break;
++ }
++ }
++}
++
++/*
++ * XPTC_PUBLIC_API(nsresult)
++ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
++ */
++__asm__(
++ "#### XPTC_InvokeByIndex ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".globl XPTC_InvokeByIndex\n\t"
++ ".ent XPTC_InvokeByIndex\n"
++"XPTC_InvokeByIndex:\n\t"
++ ".frame $15,32,$26,0\n\t"
++ ".mask 0x4008000,-32\n\t"
++ "ldgp $29,0($27)\n"
++"$XPTC_InvokeByIndex..ng:\n\t"
++ "subq $30,32,$30\n\t"
++ "stq $26,0($30)\n\t"
++ "stq $15,8($30)\n\t"
++ "bis $30,$30,$15\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
++ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
++ * is required for storage of those passed via registers.
++ */
++
++ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
++ "cmplt $2,$18,$1\n\t"
++ "cmovne $1,$18,$2\n\t"
++ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
++ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
++ "subq $30,$1,$30\n\t"
++
++ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
++ "stq $17,16($15)\n\t" /* save "methodIndex" */
++
++ "addq $30,8,$16\n\t" /* pass stack pointer */
++ "bis $18,$18,$17\n\t" /* pass "paramCount" */
++ "bis $19,$19,$18\n\t" /* pass "params" */
++ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
++
++ /*
++ * Copy the first 6 parameters to registers and remove from stack frame.
++ * Both the integer and floating point registers are set for each parameter
++ * except the first which is the "this" pointer. (integer only)
++ * The floating point registers are all set as doubles since the
++ * invoke_copy_to_stack function should have converted the floats.
++ */
++ "ldq $16,0($30)\n\t" /* integer registers */
++ "ldq $17,8($30)\n\t"
++ "ldq $18,16($30)\n\t"
++ "ldq $19,24($30)\n\t"
++ "ldq $20,32($30)\n\t"
++ "ldq $21,40($30)\n\t"
++ "ldt $f17,8($30)\n\t" /* floating point registers */
++ "ldt $f18,16($30)\n\t"
++ "ldt $f19,24($30)\n\t"
++ "ldt $f20,32($30)\n\t"
++ "ldt $f21,40($30)\n\t"
++
++ "addq $30,48,$30\n\t" /* remove params from stack */
++
++ /*
++ * Call the virtual function with the constructed stack frame.
++ */
++ "bis $16,$16,$1\n\t" /* load "this" */
++ "ldq $2,16($15)\n\t" /* load "methodIndex" */
++ "ldq $1,0($1)\n\t" /* load vtable */
++#if 0
++ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
++#else
++ "mulq $2, 8, $2\n\t"
++ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
++#endif
++ "addq $1,$2,$1\n\t"
++ "ldq $27,0($1)\n\t" /* load address of function */
++ "jsr $26,($27),0\n\t" /* call virtual function */
++ "ldgp $29,0($26)\n\t"
++
++ "bis $15,$15,$30\n\t"
++ "ldq $26,0($30)\n\t"
++ "ldq $15,8($30)\n\t"
++ "addq $30,32,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end XPTC_InvokeByIndex"
++ );
++
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
+@@ -0,0 +1,269 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Implement shared vtbl methods. */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include <sys/types.h>
++#include <machine/cpu.h>
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++__asm__("PrepareAndDispatch") __attribute__((unused));
++
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++{
++ const PRUint8 PARAM_BUFFER_COUNT = 16;
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ // args[0] to args[NUM_ARG_REGS] hold floating point register values
++ PRUint64* ap = args + NUM_ARG_REGS;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
++ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
++ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
++ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
++ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
++ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
++ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
++ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // floats passed via registers are stored as doubles
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (PRUint64) args[i];
++ dp->val.f = (float) dp->val.d; // convert double to float
++ }
++ else
++ dp->val.u32 = (PRUint32) *ap;
++ break;
++ case nsXPTType::T_DOUBLE :
++ // doubles passed via registers are also stored
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
++ break;
++ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
++ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
++ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++/*
++ * SharedStub()
++ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
++ * passed to this function via $1 to preserve the argument registers.
++ */
++__asm__(
++ "#### SharedStub ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".ent SharedStub\n"
++"SharedStub:\n\t"
++ ".frame $30,96,$26,0\n\t"
++ ".mask 0x4000000,-96\n\t"
++ "ldgp $29,0($27)\n"
++"$SharedStub..ng:\n\t"
++ "subq $30,96,$30\n\t"
++ "stq $26,0($30)\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Store arguments passed via registers to the stack.
++ * Floating point registers are stored as doubles and converted
++ * to floats in PrepareAndDispatch if necessary.
++ */
++ "stt $f17,16($30)\n\t" /* floating point registers */
++ "stt $f18,24($30)\n\t"
++ "stt $f19,32($30)\n\t"
++ "stt $f20,40($30)\n\t"
++ "stt $f21,48($30)\n\t"
++ "stq $17,56($30)\n\t" /* integer registers */
++ "stq $18,64($30)\n\t"
++ "stq $19,72($30)\n\t"
++ "stq $20,80($30)\n\t"
++ "stq $21,88($30)\n\t"
++
++ /*
++ * Call PrepareAndDispatch function.
++ */
++ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
++ "addq $30,16,$18\n\t" /* pass "args" */
++ "bsr $26,$PrepareAndDispatch..ng\n\t"
++
++ "ldq $26,0($30)\n\t"
++ "addq $30,96,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end SharedStub"
++ );
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
++ );
++#else
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ nsresult result; \
++__asm__ __volatile__( \
++ "ldah $29,0($27)\n\t" \
++ "lda $29,0($29)\n\t" \
++ "lda $1, "#n"\n\t" \
++ "br $31, $SharedStub..ng\n\t" \
++ "mov $0, %0\n\t" \
++ : "=r" (result) \
++ ); \
++ return result; \
++}
++#endif
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
diff --git a/www/firefox3-devel/files/patch-xptcall-ia64 b/www/firefox3-devel/files/patch-xptcall-ia64
new file mode 100644
index 000000000..9b3969f1c
--- /dev/null
+++ b/www/firefox3-devel/files/patch-xptcall-ia64
@@ -0,0 +1,40 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-ia64,v 1.2 2004/02/11 07:16:17 marcus Exp $
+
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003
+@@ -8,6 +8,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'XPTC_InvokeByIndex'
++ .global XPTC_InvokeByIndex
+ .proc XPTC_InvokeByIndex
+ // manual bundling
+ .explicit
+@@ -24,7 +25,7 @@
+
+ // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ // PRUint32 paramCount, nsXPTCVariant* params);
+-XPTC_InvokeByIndex::
++XPTC_InvokeByIndex:
+ .prologue
+ .save ar.pfs, r37
+ // allocate 4 input args, 6 local args, and 8 output args
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003
+@@ -6,6 +6,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'SharedStub'
++ .global SharedStub
+ .proc SharedStub
+ // manual bundling
+ .explicit
+@@ -14,7 +15,7 @@
+ // .exclass PrepareAndDispatch, @fullyvisible
+ .type PrepareAndDispatch,@function
+
+-SharedStub::
++SharedStub:
+ // 9 arguments, first 8 are the input arguments of previous
+ // function call. The last one is methodIndex, and is passed in memory
+ .prologue
diff --git a/www/firefox3-devel/files/patch-xptcall-sparc64 b/www/firefox3-devel/files/patch-xptcall-sparc64
new file mode 100644
index 000000000..7463baa55
--- /dev/null
+++ b/www/firefox3-devel/files/patch-xptcall-sparc64
@@ -0,0 +1,329 @@
+$FreeBSD: ports/www/firefox/files/patch-xptcall-sparc64,v 1.3 2004/02/11 07:16:17 marcus Exp $
+
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
+@@ -0,0 +1,123 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ */
++
++/* Implement shared vtbl methods. */
++
++#include "xptcprivate.h"
++
++#if defined(sparc) || defined(__sparc__)
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
++{
++
++#define PARAM_BUFFER_COUNT 16
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ PRUint64* ap = args;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++extern "C" int SharedStub(int, int*);
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ int dummy; /* defeat tail-call optimization */ \
++ return SharedStub(n, &dummy); \
++}
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#endif /* sparc || __sparc__ */
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
+@@ -0,0 +1,104 @@
++/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++/*
++ Platform specific code to invoke XPCOM methods on native objects
++ for sparcv9 Solaris.
++
++ See the SPARC Compliance Definition (SCD) Chapter 3
++ for more information about what is going on here, including
++ the use of BIAS (0x7ff).
++ The SCD is available from http://www.sparc.com/.
++*/
++
++ .global XPTC_InvokeByIndex
++ .type XPTC_InvokeByIndex, #function
++
++/*
++ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant* params);
++
++*/
++XPTC_InvokeByIndex:
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++ sll %i2,4,%l0 ! assume the worst case
++ ! paramCount * 2 * 8 bytes
++ cmp %l0, 0 ! are there any args? If not,
++ be .invoke ! no need to copy args to stack
++ nop
++
++ sub %sp,%l0,%sp ! create the additional stack space
++ add %sp,0x7ff+136,%o0 ! step past the register window, the
++ ! struct result pointer and the 'this' slot
++ mov %i2,%o1 ! paramCount
++ call invoke_copy_to_stack
++ mov %i3,%o2 ! params
++
++!
++! load arguments from stack into the outgoing registers
++! BIAS is 0x7ff (2047)
++!
++
++! load the %o1..5 64bit (extended word) output registers registers
++ ldx [%sp + 0x7ff + 136],%o1 ! %i1
++ ldx [%sp + 0x7ff + 144],%o2 ! %i2
++ ldx [%sp + 0x7ff + 152],%o3 ! %i3
++ ldx [%sp + 0x7ff + 160],%o4 ! %i4
++ ldx [%sp + 0x7ff + 168],%o5 ! %i5
++
++! load the even number double registers starting with %d2
++ ldd [%sp + 0x7ff + 136],%f2
++ ldd [%sp + 0x7ff + 144],%f4
++ ldd [%sp + 0x7ff + 152],%f6
++ ldd [%sp + 0x7ff + 160],%f8
++ ldd [%sp + 0x7ff + 168],%f10
++ ldd [%sp + 0x7ff + 176],%f12
++ ldd [%sp + 0x7ff + 184],%f14
++ ldd [%sp + 0x7ff + 192],%f16
++ ldd [%sp + 0x7ff + 200],%f18
++ ldd [%sp + 0x7ff + 208],%f20
++ ldd [%sp + 0x7ff + 216],%f22
++ ldd [%sp + 0x7ff + 224],%f24
++ ldd [%sp + 0x7ff + 232],%f26
++ ldd [%sp + 0x7ff + 240],%f28
++ ldd [%sp + 0x7ff + 248],%f30
++
++!
++! calculate the target address from the vtable
++!
++.invoke:
++ sll %i1,3,%l0 ! index *= 8
++! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
++ ldx [%i0],%l1 ! *that --> address of vtable
++ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> address
++
++ jmpl %l0,%o7 ! call the routine
++ mov %i0,%o0 ! move 'this' pointer to out register
++
++ mov %o0,%i0 ! propagate return value
++ ret
++ restore
++
++ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
+--- /dev/null Mon May 26 14:00:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
+@@ -0,0 +1,91 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc) && !defined(__sparc__)
++#error "This code is for Sparc only"
++#endif
++
++/* Prototype specifies unmangled function name */
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
++
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/www/firefox3-devel/pkg-deinstall.in b/www/firefox3-devel/pkg-deinstall.in
new file mode 100644
index 000000000..0b6b88f64
--- /dev/null
+++ b/www/firefox3-devel/pkg-deinstall.in
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-deinstall.in,v 1.3 2004/10/28 21:37:53 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components.ini
+rm -f ${MOZDIR}/defaults.ini
+rm -f ${MOZDIR}/components/*.dat
+rm -rf ${MOZDIR}/extensions
+
+exit 0
diff --git a/www/firefox3-devel/pkg-descr b/www/firefox3-devel/pkg-descr
new file mode 100644
index 000000000..99b11c5e7
--- /dev/null
+++ b/www/firefox3-devel/pkg-descr
@@ -0,0 +1,12 @@
+Firefox is an award winning, free, open-source web browser for many platforms
+and is based on the Mozilla codebase. It is small, fast and easy to use, and
+offers many advanced features:
+ o Popup Blocking
+ o Tabbed Browsing
+ o Live Bookmarks (ie. RSS)
+ o Extensions
+ o Themes
+ o FastFind
+ o Improved Security
+
+WWW: http://www.mozilla.org/products/firefox/
diff --git a/www/firefox3-devel/pkg-install.in b/www/firefox3-devel/pkg-install.in
new file mode 100644
index 000000000..9aa1ffb79
--- /dev/null
+++ b/www/firefox3-devel/pkg-install.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/firefox/pkg-install.in,v 1.9 2004/12/04 09:47:27 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin:/usr/local/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+FIREFOX=${MOZDIR}/firefox-bin
+
+echo "===> Building Chrome's registry..."
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+rm -rf ${MOZDIR}/extensions
+
+cd ${MOZDIR} || exit 1
+./run-mozilla.sh ${REGXPCOM} || true
+./run-mozilla.sh ${REGCHROME} || true
+./run-mozilla.sh ${FIREFOX} -register > /dev/null 2>&1
+
+if [ ! -d %%PREFIX%%/lib/browser_plugins ]; then
+ mkdir -p %%PREFIX%%/lib/browser_plugins
+fi
+
+exit 0
diff --git a/www/firefox3-devel/pkg-message b/www/firefox3-devel/pkg-message
new file mode 100644
index 000000000..77f3adad8
--- /dev/null
+++ b/www/firefox3-devel/pkg-message
@@ -0,0 +1,41 @@
+======================================================================
+README FOR GNOMEVFS SUPPORT:
+Gnomevfs support is optional (disabled by default), and can be enabled by
+building with ``-DWITH_SMB''.
+
+It is new and currently has issues to be ironed out.
+
+You must delete your components registry for gnomevfs to register:
+
+rm ~/.mozilla/firefox/default.*/compreg.dat
+
+SMB issues:
+Network group, machine, and share browsing does not work correctly.
+
+SFTP:
+Only sftp access using public key authentication works. To easily
+setup public key authentication to "remote_host":
+
+ssh-keygen -t dsa
+cat ~/.ssh/id_dsa.pub | ssh remote_host "cat >> .ssh/authorized_keys"
+
+The SSH sever on remote_host must allow pub key authentication.
+
+======================================================================
+
+Any bug reports should be addressed to the maintainers at:
+ gnome@FreeBSD.org
+You may also Cc: freebsd-ports@freebsd.org. Please do not send
+bug reports to any other addresses.
+
+Please include the following information with any bug report:
+* Output from 'uname -a'.
+* Date/time stamp from www/firefox/Makefile.
+* Where/when did the problem occur: configuring, building, or
+ running firefox
+* How can you reproduce the problem?
+
+Thank you for your help in testing and reporting bugs, and we hope you
+enjoy using Firefox.
+The Maintainers (gnome@)
+======================================================================
diff --git a/www/mozilla/Makefile b/www/mozilla/Makefile
new file mode 100644
index 000000000..5140c1dd7
--- /dev/null
+++ b/www/mozilla/Makefile
@@ -0,0 +1,382 @@
+# New ports collection makefile for: mozilla
+# Date created: 31 Mar 1998
+# Whom: eivind/dima/jseger
+#
+# $FreeBSD: ports/www/mozilla/Makefile,v 1.186 2005/02/13 07:20:57 marcus Exp $
+#
+
+PORTNAME?= mozilla
+PORTVERSION= 1.7.5
+PORTREVISION?= 1
+PORTEPOCH?= 2
+CATEGORIES?= www
+MASTER_SITES= ${MASTER_SITE_MOZILLA} \
+ ${MASTER_SITE_LOCAL:S/$/:local/}
+MASTER_SITE_SUBDIR= mozilla/releases/${PORTNAME}${PORTVERSION}/source \
+ adamw/:local
+DISTFILES= ${PORTNAME}-source-${PORTVERSION}${EXTRACT_SUFX}
+#.if !defined(WITH_CAIRO_RENDER)
+#DISTFILES+= libart_lgpl${EXTRACT_SUFX}:local
+#.endif
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= The open source, standards compliant web browser
+
+BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
+ freetype-config:${PORTSDIR}/print/freetype2
+LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
+ png.5:${PORTSDIR}/graphics/png \
+ mng.1:${PORTSDIR}/graphics/libmng \
+ freetype.9:${PORTSDIR}/print/freetype2 \
+ nspr4.1:${PORTSDIR}/devel/nspr
+
+WRKSRC= ${WRKDIR}/${PORTNAME}
+
+MOZILLA?= mozilla
+MOZ_SUFX?=
+
+USE_GNOME= gtk20 libidl
+
+LATEST_LINK= ${MOZILLA}
+EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
+ --exclude */macbuild/*\
+ --exclude */package/* \
+ --exclude .cvsignore \
+ --exclude makefile.win \
+ --exclude MANIFEST
+USE_BZIP2= yes
+USE_X_PREFIX= yes
+USE_PERL5= yes
+USE_ICONV= yes
+USE_GMAKE= yes
+WANT_GNOME= yes
+USE_REINPLACE= yes
+HAS_CONFIGURE= yes
+CONFIGURE_ARGS= \
+ --disable-auto-deps \
+ --enable-chrome-format=jar \
+ --disable-cpp-exceptions \
+ --disable-cpp-rtti \
+ --enable-crypto \
+ --disable-gtktest \
+ --disable-freetypetest \
+ --disable-installer \
+ --disable-glibtest \
+ --enable-double-buffer \
+ --enable-mathml \
+ --disable-md \
+ --disable-pedantic \
+ --disable-bidi \
+ --disable-plaintext-editor-only \
+ --enable-svg \
+ --disable-tests \
+ --disable-xterm-updates \
+ --enable-xinerama \
+ --with-system-zlib \
+ --with-system-jpeg=${LOCALBASE} \
+ --with-system-mng=${LOCALBASE} \
+ --with-system-png=${LOCALBASE} \
+ --with-gssapi=/usr \
+ --prefix=${FAKEDIR} \
+ --with-pthreads
+
+PLIST= ${WRKDIR}/pkg-plist
+MOZ_EXTENSIONS= default
+CONFIGURE_ENV= LOCALBASE=${LOCALBASE}
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+CONFIGURE_ARGS+= --enable-default-toolkit=gtk2
+
+ESD_LIB= libesd.so.2
+FREETYPE_LIB= libfreetype.so.9
+PKGCONFIG_FILES=mozilla-gtkmozembed mozilla-js mozilla-xpcom \
+ mozilla-nspr mozilla-nss mozilla-plugin
+
+# JPI stuff. List paths to Java Plug-ins here in the order to try.
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.1/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/diablo-jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so
+
+OPTIONS=XFT "Enable Xft font anti-aliasing" on \
+ CALENDAR "Enable the Calendar module" off \
+ MAILNEWS "Enable Mail and News modules" on \
+ COMPOSER "Enable the HTML Composer module" on \
+ DEBUG "Enable debugging (i.e. gdb) support" off \
+ LDAP "Enable LDAP support for Mailnews" on \
+ CHATZILLA "Enable the Chatzilla IRC module" on \
+ XMLTERM "Enable the XMLTerm module" on \
+ JAVASCRIPT_DEBUGGER "Enable the DTD and JavaScript debuggers" off \
+ OPTIMIZED_CFLAGS "Enable -O2 optimizations" off \
+ SMB "Enable smb:// URI support using gnomevfs" off \
+ MENU_ENTRY "Add mozilla to the GNOME menu" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_CAIRO_RENDER)
+LIB_DEPENDS+= svg-cairo.1:${PORTSDIR}/graphics/libsvg-cairo
+
+CONFIGURE_ARGS+= --enable-svg-renderer-cairo \
+ --disable-svg-renderer-libart
+CONFIGURE_ENV+= MOZ_SVG_RENDERER_CAIRO=1
+.else
+CONFIGURE_ARGS+= --enable-svg-renderer-libart \
+ --disable-svg-renderer-cairo
+CONFIGURE_ENV+= MOZ_INTERNAL_LIBART_LGPL=1
+.endif
+
+.if !defined(WITHOUT_XFT)
+LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
+CONFIGURE_ARGS+=--enable-xft
+.if exists(${X11BASE}/lib/X11/fonts/mozilla/fonts.dir)
+BROKEN= Mozilla${MOZ_SUFX} and Xft2 render the mozilla-fonts \
+ illegibly. Please remove the mozilla-fonts package.
+.endif
+.else
+CONFIGURE_ARGS+=--disable-xft
+.endif
+
+.if defined(WITH_DEBUG)
+CONFIGURE_ARGS+=--enable-debug \
+ --disable-strip
+.else
+CONFIGURE_ARGS+=--disable-debug \
+ --enable-strip
+.endif
+
+.if defined(WITH_CALENDAR) && (defined(WITHOUT_MAILNEWS) || \
+ defined(WITHOUT_COMPOSER))
+BROKEN= "Calendar requires Composer and Mailnews support."
+.endif
+
+# LDAP is only used by mail and news so disable both together
+.if defined(WITHOUT_MAILNEWS)
+CONFIGURE_ARGS+= --disable-ldap --disable-mailnews
+.else
+# mail and news desired, but not LDAP
+.if defined(WITHOUT_LDAP)
+CONFIGURE_ARGS+= --disable-ldap --enable-mailnews
+.else
+CONFIGURE_ARGS+= --enable-ldap --enable-mailnews
+.endif
+.endif
+.if !defined(WITHOUT_CHATZILLA)
+MOZ_EXTENSIONS:= ${MOZ_EXTENSIONS},irc
+.endif
+.if !defined(WITHOUT_XMLTERM)
+MOZ_EXTENSIONS:= ${MOZ_EXTENSIONS},xmlterm
+.endif
+CONFIGURE_ARGS+= --enable-extensions=${MOZ_EXTENSIONS}
+
+.if defined(WITH_JAVASCRIPT_DEBUGGER)
+CONFIGURE_ARGS+= --enable-jsd \
+ --enable-dtd-debug
+.else
+CONFIGURE_ARGS+= --disable-jsd \
+ --disable-dtd-debug
+.endif
+
+.if defined(WITH_CALENDAR)
+CONFIGURE_ARGS+= --enable-calendar
+.endif
+
+.if defined(WITHOUT_COMPOSER)
+CONFIGURE_ARGS+= --disable-composer
+.endif
+
+MAKE_ENV= LD_LIBRARY_PATH=${WRKSRC}/dist/bin \
+ MOZ_INTERNAL_LIBART_LGPL=1
+ALL_TARGET= default
+FAKEDIR= ${WRKDIR}/fake
+
+#.if ${ARCH} == "i386"
+#CONFIGURE_ARGS+= --enable-reorder
+#.endif
+
+.if ${OSVERSION} < 500035 && !defined(WITH_CAIRO_RENDER)
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-nsSVGLibartGlyphMetricsFT.cpp
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp
+.endif
+
+.if defined(WITH_SMB)
+USE_GNOME+= gnomevfs2
+.else
+CONFIGURE_ARGS+=--disable-gnomevfs
+.endif
+
+.if defined(WITH_OPTIMIZED_CFLAGS)
+CFLAGS+= -O2
+CONFIGURE_ARGS+= --enable-optimize=-O2
+.endif
+
+.if defined(WITH_MENU_ENTRY)
+USE_GNOME+= gnomehier
+.endif
+
+.if ${ARCH} == "alpha" && ${OSVERSION} < 500035
+IGNORE= "core dumps on alpha during post-build"
+.endif
+
+.if exists(${LOCALBASE}/include/freetype/freetype.h)
+BROKEN="You must upgrade your freetype port to 1.3.1_2 or higher before installing Mozilla. If you have 1.3.1_2 installed, please remove ${LOCALBASE}/include/freetype, then build Mozilla"
+.endif
+
+pre-everything::
+.if defined(WITH_CALENDAR)
+ @${ECHO_MSG} ""
+ @${ECHO_MSG} "Calendar is still beta software."
+ @${ECHO_MSG} "Use at your own risk."
+ @${ECHO_MSG} "http://mozilla.org/projects/calendar/"
+ @${ECHO_MSG} ""
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/run-mozilla.sh
+ @${REINPLACE_CMD} -e 's|%%MOZILLA%%|${MOZILLA}|g' \
+ -e 's|%%HEADERS_SUFX%%|${MOZ_SUFX}|g' \
+ ${WRKSRC}/config/autoconf.mk.in
+ @${FIND} ${WRKSRC}/other-licenses/libical -name "*.c" | ${XARGS} \
+ ${REINPLACE_CMD} 's|<malloc.h>|<stdlib.h>|g'
+ @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \
+ s|-lpthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/nsprpub/configure
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/nsprpub/configure \
+ ${WRKSRC}/security/coreconf/FreeBSD.mk \
+ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \
+ ${WRKSRC}/js/src/Makefile.in
+ @${REINPLACE_CMD} -E -e 's|libesd\.so\.[0-9]+|${ESD_LIB}|g' \
+ ${WRKSRC}/widget/src/gtk2/nsSound.cpp
+ @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.no|g' \
+ ${WRKSRC}/gfx/src/gtk/nsDeviceContextSpecG.cpp
+ @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/' \
+ ${WRKSRC}/modules/libpref/src/init/all.js
+ @${REINPLACE_CMD} -e 's|<iconv.h>|\"${LOCALBASE}/include/iconv.h\"|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/intl/uconv/native/nsNativeUConvService.cpp \
+ ${WRKSRC}/xpcom/io/nsNativeCharsetUtils.cpp
+ @${REINPLACE_CMD} -E -e 's|libfreetype\.so\.[0-9]+|${FREETYPE_LIB}|g' \
+ ${WRKSRC}/modules/libpref/src/init/all.js
+ @for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|mozilla-xpcom|mozilla-xpcom${MOZ_SUFX}${PKGNAMESUFFIX}|g ; \
+ s|mozilla-nspr|mozilla-nspr${MOZ_SUFX}${PKGNAMESUFFIX}|g' \
+ ${WRKSRC}/build/unix/$${pcfile}.pc.in; \
+ done
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g' \
+ < ${MASTERDIR}/pkg-install.in > ${PKGINSTALL}
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g' \
+ < ${MASTERDIR}/pkg-deinstall.in > ${PKGDEINSTALL}
+ @${SED} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ < ${FILESDIR}/mozilla.desktop.in > \
+ ${WRKDIR}/mozilla.desktop
+
+pre-configure:
+ @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \
+ ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
+ ${FALSE}; \
+ fi
+
+post-build:
+ ${SED} -e "s|%%PREFIX%%|${PREFIX}|g" -e "s|%%MOZILLA%%|${MOZILLA}|g" \
+ ${FILESDIR}/mozilla.sh >${WRKSRC}/${MOZILLA}
+
+pre-install:
+ ${RM} -rf ${FAKEDIR} ${PLIST}
+ ${TOUCH} -f ${PLIST}
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
+ Makefile ${MAKE_ARGS} install
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g' \
+ ${FAKEDIR}/bin/mozilla \
+ ${FAKEDIR}/bin/mozilla-config
+ if [ ! -x ${PREFIX}/bin/mozilla -a ! -L ${PREFIX}/bin/mozilla ]; then \
+ ${ECHO_CMD} bin/mozilla >> ${PLIST} ; \
+ fi
+ if [ "${MOZILLA}" != "mozilla" ]; then \
+ ${ECHO_CMD} bin/${MOZILLA} >> ${PLIST} ; \
+ fi
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${ECHO_CMD} lib/browser_plugins/libjavaplugin_oji.so >> ${PLIST} ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ ${ECHO_CMD} lib/browser_plugins/.${PORTNAME}.keep >> ${PLIST}
+ ${ECHO_CMD} "@unexec ${RMDIR} %D/lib/browser_plugins 2>/dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} lib/${MOZILLA}/mozilla >> ${PLIST}
+ ${ECHO_CMD} lib/${MOZILLA}/mozilla-config >> ${PLIST}
+.if !defined(WITHOUT_MAILNEWS)
+ @${CP} -RL ${WRKSRC}/dist/bin/defaults/isp ${FAKEDIR}/lib/${MOZILLA}/defaults
+.endif
+.if defined(WITH_MENU_ENTRY)
+ ${ECHO_CMD} share/gnome/applications/mozilla.desktop >> ${PLIST}
+.endif
+ cd ${FAKEDIR}/lib/${MOZILLA} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's:^:lib/${MOZILLA}/:' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's:^:@dirrm lib/${MOZILLA}/:' >> ${PLIST}
+ ${ECHO_CMD} @dirrm lib/${MOZILLA} >> ${PLIST}
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${ECHO_CMD} libdata/pkgconfig/$${pcfile}${MOZ_SUFX}${PKGNAMESUFFIX}.pc >> ${PLIST} ; \
+ done
+ cd ${FAKEDIR}/include/mozilla && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's:^:include/${MOZILLA}/:' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's:^:@dirrm include/${MOZILLA}/:' >> ${PLIST}
+ ${ECHO_CMD} @dirrm include/${MOZILLA} >> ${PLIST}
+
+do-install:
+ ${MKDIR} ${PREFIX}/lib/${MOZILLA}
+ ${CHMOD} 755 ${PREFIX}/lib/${MOZILLA}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/mozilla ${PREFIX}/lib/${MOZILLA}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/mozilla-config ${PREFIX}/lib/${MOZILLA}
+ cd ${FAKEDIR}/lib/${MOZILLA} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/lib/${MOZILLA}
+ ${INSTALL_SCRIPT} ${WRKSRC}/${MOZILLA} ${PREFIX}/bin
+ if [ ! -x ${PREFIX}/bin/mozilla -a ! -L ${PREFIX}/bin/mozilla ]; then \
+ ${LN} -sf ${PREFIX}/bin/${MOZILLA} ${PREFIX}/bin/mozilla ; \
+ fi
+ if [ ! -d ${PREFIX}/lib/browser_plugins ]; then \
+ ${MKDIR} ${PREFIX}/lib/browser_plugins ; \
+ fi
+ ${TOUCH} -f ${PREFIX}/lib/browser_plugins/.${PORTNAME}.keep
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${LN} -sf $${jpi} \
+ ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/$${pcfile}.pc; \
+ ${INSTALL_DATA} ${WRKSRC}/build/unix/$${pcfile}.pc \
+ ${PREFIX}/libdata/pkgconfig/$${pcfile}${MOZ_SUFX}${PKGNAMESUFFIX}.pc ; \
+ done
+ -${RM} -fr ${PREFIX}/include/${MOZILLA}
+ ${MKDIR} ${PREFIX}/include/${MOZILLA}
+ ${CHMOD} 755 ${PREFIX}/include/${MOZILLA}
+ cd ${FAKEDIR}/include/mozilla && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/include/${MOZILLA}
+.if defined(WITH_MENU_ENTRY)
+ ${MKDIR} ${PREFIX}/share/gnome/applications
+ ${INSTALL_DATA} ${WRKDIR}/mozilla.desktop \
+ ${PREFIX}/share/gnome/applications
+.endif
+
+post-install:
+ @${CHMOD} -R u-w ${PREFIX}/lib/${MOZILLA}/components
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/www/mozilla/distinfo b/www/mozilla/distinfo
new file mode 100644
index 000000000..a8ffe6243
--- /dev/null
+++ b/www/mozilla/distinfo
@@ -0,0 +1,2 @@
+MD5 (mozilla-source-1.7.5.tar.bz2) = e5994f3e801cd834966367c6a12f8aeb
+SIZE (mozilla-source-1.7.5.tar.bz2) = 30440393
diff --git a/www/mozilla/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp b/www/mozilla/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp
new file mode 100644
index 000000000..758c0146c
--- /dev/null
+++ b/www/mozilla/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp
@@ -0,0 +1,88 @@
+--- layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp.orig Wed Mar 2 12:36:59 2005
++++ layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp Wed Mar 2 12:36:37 2005
+@@ -56,6 +56,13 @@
+ #include "nsArray.h"
+ #include "nsDataHashtable.h"
+
++
++#ifdef HAVE_CPP_2BYTE_WCHAR_T
++ typedef nsDependentString nsLiteralString;
++#else
++ typedef NS_ConvertASCIItoUTF16 nsLiteralString;
++#endif
++
+ /**
+ * \addtogroup libart_renderer Libart Rendering Engine
+ * @{
+@@ -112,7 +119,7 @@
+ nsCOMPtr<nsISVGGlyphMetricsSource> mSource;
+
+ public:
+- static nsDataHashtable<nsStringHashKey,nsDependentString*> sFontAliases;
++ static nsDataHashtable<nsStringHashKey,nsLiteralString*> sFontAliases;
+ };
+
+ /** @} */
+@@ -120,7 +127,7 @@
+ //----------------------------------------------------------------------
+ // nsSVGLibartGlyphMetricsFT implementation:
+
+-nsDataHashtable<nsStringHashKey,nsDependentString*>
++nsDataHashtable<nsStringHashKey,nsLiteralString*>
+ nsSVGLibartGlyphMetricsFT::sFontAliases;
+
+
+@@ -155,15 +162,15 @@
+
+ static NS_NAMED_LITERAL_STRING(arial, "arial");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("helvetica"),
+- &arial);
++ (nsLiteralString *)&arial);
+
+ static NS_NAMED_LITERAL_STRING(courier, "courier new");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("courier"),
+- &courier);
++ (nsLiteralString *)&courier);
+
+ static NS_NAMED_LITERAL_STRING(times, "times new roman");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("times"),
+- &times);
++ (nsLiteralString *)&times);
+ }
+
+ void NS_FreeSVGLibartGlyphMetricsFTGlobals()
+@@ -406,7 +413,7 @@
+ }
+ else {
+ // try alias if there is one:
+- nsDependentString *alias = nsnull;
++ nsLiteralString *alias = nsnull;
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Get(NS_ConvertUTF8toUCS2(family_name),
+ &alias);
+ if (alias) {
+@@ -440,19 +447,19 @@
+ return;
+ }
+
+- FTC_Image_Desc imageDesc;
+- imageDesc.font.face_id=(void*)font_data.font_entry.get(); // XXX do we need to addref?
++ FTC_ImageType imageDesc;
++ imageDesc->face_id = (FTC_FaceID)font_data.font_entry.get(); // XXX do we need to addref?
+ float twipstopixel = GetTwipsToPixels();
+ float scale = GetPixelScale();
+- imageDesc.font.pix_width = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.font.pix_height = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.image_type |= ftc_image_grays;
++ imageDesc->width = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->height = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->flags = 0;
+
+ // get the face
+ nsresult rv;
+ FTC_Manager mgr;
+ nsSVGLibartFreetype::ft2->GetFTCacheManager(&mgr);
+- rv = nsSVGLibartFreetype::ft2->ManagerLookupSize(mgr, &imageDesc.font, &mFace, nsnull);
++ rv = nsSVGLibartFreetype::ft2->ManagerLookupFace(mgr, imageDesc->face_id, &mFace);
+ NS_ASSERTION(mFace, "failed to get face/size");
+ }
+
diff --git a/www/mozilla/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp b/www/mozilla/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp
new file mode 100644
index 000000000..84392bd4a
--- /dev/null
+++ b/www/mozilla/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp
@@ -0,0 +1,50 @@
+$NetBSD: patch-by,v 1.2 2004/07/05 14:22:42 taya Exp $
+
+diff -ru ../Orig/mozilla/layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp ./layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp
+--- ../Orig/mozilla/layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp 2004-03-19 10:36:16.000000000 +0900
++++ ./layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp 2004-07-04 22:59:19.000000000 +0900
+@@ -155,15 +155,15 @@
+
+ static NS_NAMED_LITERAL_STRING(arial, "arial");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("helvetica"),
+- &arial);
++ (nsDependentString *)&arial);
+
+ static NS_NAMED_LITERAL_STRING(courier, "courier new");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("courier"),
+- &courier);
++ (nsDependentString *)&courier);
+
+ static NS_NAMED_LITERAL_STRING(times, "times new roman");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("times"),
+- &times);
++ (nsDependentString *)&times);
+ }
+
+ void NS_FreeSVGLibartGlyphMetricsFTGlobals()
+@@ -440,19 +440,19 @@
+ return;
+ }
+
+- FTC_Image_Desc imageDesc;
+- imageDesc.font.face_id=(void*)font_data.font_entry.get(); // XXX do we need to addref?
++ FTC_ImageType imageDesc;
++ imageDesc->face_id = (FTC_FaceID)font_data.font_entry.get(); // XXX do we need to addref?
+ float twipstopixel = GetTwipsToPixels();
+ float scale = GetPixelScale();
+- imageDesc.font.pix_width = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.font.pix_height = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.image_type |= ftc_image_grays;
++ imageDesc->width = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->height = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->flags = 0;
+
+ // get the face
+ nsresult rv;
+ FTC_Manager mgr;
+ nsSVGLibartFreetype::ft2->GetFTCacheManager(&mgr);
+- rv = nsSVGLibartFreetype::ft2->ManagerLookupSize(mgr, &imageDesc.font, &mFace, nsnull);
++ rv = nsSVGLibartFreetype::ft2->ManagerLookupFace(mgr, imageDesc->face_id, &mFace);
+ NS_ASSERTION(mFace, "failed to get face/size");
+ }
+
diff --git a/www/mozilla/files/mozilla.desktop.in b/www/mozilla/files/mozilla.desktop.in
new file mode 100644
index 000000000..2c0e68dab
--- /dev/null
+++ b/www/mozilla/files/mozilla.desktop.in
@@ -0,0 +1,169 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Mozilla Web Browser
+Name[az]=Mozilla Veb Səyyahı
+Name[bg]=Интернет браузър (Mozilla)
+Name[bs]=Mozilla web preglednik
+Name[ca]=Navegador web Mozilla
+Name[cs]=Prohlížeč WWW Mozilla
+Name[cy]=Y Porwr Gwe Mozilla
+Name[da]=Mozilla - internetbrowser
+Name[de]=Mozilla Webbrowser
+Name[el]=Περιηγητής Διαδικτύου Mozilla
+Name[en_CA]=Mozilla Web Browser
+Name[en_GB]=Mozilla Web Browser
+Name[es]=Navegador Web Mozilla
+Name[et]=Mozilla veebibrauser
+Name[eu]=Mozilla web arakatzailea
+Name[fa]=مرورگر وب Mozilla
+Name[fi]=Mozilla, WWW-selain
+Name[fr]=Navigateur Web Mozilla
+Name[ga]=Brabhsálaí Lín Mozilla
+Name[he]=דפדפן Mozilla
+Name[hr]=Mozilla Web preglednik
+Name[hu]=Mozilla webböngésző
+Name[id]=Web Browser Mozilla
+Name[it]=Browser web Mozilla
+Name[ja]=Mozilla ウェブ・ブラウザ
+Name[ko]=Mozilla 웹 브라우저
+Name[li]=Mozilla Web Browser
+Name[lt]=Mozilla web naršyklė
+Name[mk]=Mozilla Веб Прелистувач
+Name[mn]=Mozilla веб хөтөч
+Name[ms]=Pelungsur Web Mozilla
+Name[nb]=Mozilla nettleser
+Name[nl]=Mozilla webbrowser
+Name[nn]=Mozilla nettlesar
+Name[no]=Mozilla nettleser
+Name[pl]=Przeglądarka WWW Mozilla
+Name[pt]=Navegador Web Mozilla
+Name[pt_BR]=Navegador Web Mozilla
+Name[ro]=Navigatorul Mozilla
+Name[sl]=Spletni brskalnik Mozilla
+Name[sq]=Mozilla - Shfletuesi Web
+Name[sv]=Webbläsaren Mozilla
+Name[tk]=Mozilla Web Ahtarçisi
+Name[tr]=Mozilla Web Tarayıcı
+Name[uk]=Переглядач web Mozilla
+Name[vi]=Trình Duyệt Web Mozilla
+Name[wa]=Betchteu waibe mozilla
+Name[zh_CN]=Mozilla Web 浏览器
+Name[zh_TW]=Mozilla 網頁瀏覽器
+GenericName=Mozilla Web Browser
+GenericName[az]=Mozilla Veb Səyyahı
+GenericName[bg]=Интернет браузър (Mozilla)
+GenericName[bs]=Mozilla web preglednik
+GenericName[ca]=Navegador web Mozilla
+GenericName[cs]=Prohlížeč WWW Mozilla
+GenericName[cy]=Y Porwr Gwe Mozilla
+GenericName[da]=Mozilla - internetbrowser
+GenericName[de]=Mozilla Webbrowser
+GenericName[el]=Περιηγητής Διαδικτύου Mozilla
+GenericName[en_CA]=Mozilla Web Browser
+GenericName[en_GB]=Mozilla Web Browser
+GenericName[es]=Navegador Web Mozilla
+GenericName[et]=Mozilla veebibrauser
+GenericName[eu]=Mozilla web arakatzailea
+GenericName[fa]=مرورگر وب Mozilla
+GenericName[fi]=Mozilla, WWW-selain
+GenericName[fr]=Navigateur Web Mozilla
+GenericName[ga]=Brabhsálaí Lín Mozilla
+GenericName[he]=דפדפן Mozilla
+GenericName[hr]=Mozilla Web preglednik
+GenericName[hu]=Mozilla webböngésző
+GenericName[id]=Web Browser Mozilla
+GenericName[it]=Browser web Mozilla
+GenericName[ja]=Mozilla ウェブ・ブラウザ
+GenericName[ko]=Mozilla 웹 브라우저
+GenericName[li]=Mozilla Web Browser
+GenericName[lt]=Mozilla web naršyklė
+GenericName[mk]=Mozilla Веб Прелистувач
+GenericName[mn]=Mozilla веб хөтөч
+GenericName[ms]=Pelungsur Web Mozilla
+GenericName[nb]=Mozilla nettleser
+GenericName[nl]=Mozilla webbrowser
+GenericName[nn]=Mozilla nettlesar
+GenericName[no]=Mozilla nettleser
+GenericName[pl]=Przeglądarka WWW Mozilla
+GenericName[pt]=Navegador Web Mozilla
+GenericName[pt_BR]=Navegador Web Mozilla
+GenericName[ro]=Navigatorul Mozilla
+GenericName[sl]=Spletni brskalnik Mozilla
+GenericName[sq]=Mozilla - Shfletuesi Web
+GenericName[sv]=Webbläsaren Mozilla
+GenericName[tk]=Mozilla Web Ahtarçisi
+GenericName[tr]=Mozilla Web Tarayıcı
+GenericName[uk]=Переглядач web Mozilla
+GenericName[vi]=Trình Duyệt Web Mozilla
+GenericName[wa]=Betchteu waibe mozilla
+GenericName[zh_CN]=Mozilla Web 浏览器
+GenericName[zh_TW]=Mozilla 網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Benyt internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fa]=مرور وب
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте го вебот
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Программа для просмотра веб-страниц
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ Mozilla
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=mozilla %U
+StartupNotify=true
+Terminal=false
+Type=Application
+Icon=%%PREFIX%%/lib/mozilla/chrome/icons/default/default.xpm
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;
diff --git a/www/mozilla/files/mozilla.sh b/www/mozilla/files/mozilla.sh
new file mode 100644
index 000000000..870b74e8c
--- /dev/null
+++ b/www/mozilla/files/mozilla.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+MOZILLA_DIR="%%PREFIX%%/lib/%%MOZILLA%%"
+MOZILLA_EXEC="./mozilla"
+MOZILLA_REMOTE_EXEC="${MOZILLA_EXEC} -remote"
+APPLICATION_ID="mozilla"
+
+LOCATION='new-tab'
+#MOZILLA_UILOCALE="en-US"
+#MOZILLA_UIREGION="US"
+#MOZILLA_DSP="auto"
+
+cd $MOZILLA_DIR || exit 1
+
+# LANG, MOZILLA_UILOCALE, MOZILLA_UIREGION
+if [ -n "$LANG" -a ! -n "${MOZILLA_UILOCALE}" ]; then
+ _locale="${LANG%%.*}"
+ if [ "${_locale}" != "en_US" -a "${_locale}" != "C" ]; then
+ _region="${_locale##*_}"
+ _locale="${_locale%_*}"
+ [ -r chrome/${_locale}-${_region}.jar ] && \
+ MOZILLA_EXEC="${MOZILLA_EXEC} -UILocale ${_locale}-${_region}"
+ fi
+elif [ -n "${MOZILLA_UILOCALE}" ]; then
+ MOZILLA_EXEC="${MOZILLA_EXEC} -UILocale ${MOZILLA_UILOCALE}"
+ if [ -n "${MOZILLA_UIREGION}" ]; then
+ MOZILLA_EXEC="${MOZILLA_EXEC} -UIRegion ${MOZILLA_UIREGION}"
+ fi
+fi
+
+# find a /dev/dsp handler
+case "${MOZILLA_DSP}" in
+# [Ee][Ss][Dd]|esddsp) # Use the esd dsp wrapper
+# MOZILLA_DSP="esddsp"
+# ;;
+ [Aa][Rr][Tt][Ss]|artsdsp) # Use the arts dsp wrapper
+ MOZILLA_DSP="artsdsp"
+ ;;
+ [Nn][Oo][Nn][Ee]) # Direct dsp output
+ MOZILLA_DSP=""
+ ;;
+ *) # Guest one (auto)
+ if [ -n "${KDE_FULL_SESSION}" ]; then
+ MOZILLA_DSP="artsdsp"
+# elif [ -r ${HOME}/.esd_auth ]; then
+# MOZILLA_DSP="esddsp"
+ else
+ MOZILLA_DSP=""
+ fi
+ ;;
+esac
+
+if [ -n "${MOZILLA_DSP}" ] && type "${MOZILLA_DSP}" > /dev/null 2>&1; then
+ MOZILLA_EXEC="${MOZILLA_DSP} ${MOZILLA_EXEC}"
+fi
+
+case $1 in
+ -browser)
+ REMOTE_COMMAND="xfeDoCommand (openBrowser)"
+ ;;
+ -mail)
+ REMOTE_COMMAND="xfeDoCommand (openInbox)"
+ ;;
+ -compose)
+ REMOTE_COMMAND="xfeDoCommand (composeMessage)"
+ ;;
+ -*)
+ exec ${MOZILLA_EXEC} "$@"
+ ;;
+ *)
+ if [ -n "${LOCATION}" ]; then
+ REMOTE_COMMAND="openURL($@,$LOCATION)"
+ else
+ REMOTE_COMMAND="openURL($@)"
+ fi
+ ;;
+esac
+
+# process found
+${MOZILLA_REMOTE_EXEC} "ping()" >/dev/null 2>&1 &&
+${MOZILLA_REMOTE_EXEC} "${REMOTE_COMMAND}" && exit 0
+
+# no existing process
+exec ${MOZILLA_EXEC} "$@"
+
diff --git a/www/mozilla/files/patch-Double.cpp b/www/mozilla/files/patch-Double.cpp
new file mode 100644
index 000000000..5cd13e4ff
--- /dev/null
+++ b/www/mozilla/files/patch-Double.cpp
@@ -0,0 +1,59 @@
+--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
+@@ -51,10 +51,10 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
+-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+-#else
++#if defined(__i386__)
+ fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
++#else
++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #endif
+ fp_except_t oldmask = fpsetmask(~allmask);
+ #endif
+@@ -75,22 +75,31 @@
+ #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
+ #define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+
++union ui32dun {
++ PRUint32 i[2];
++ double d;
++};
++
+ //-- Initialize Double related constants
+ #ifdef IS_BIG_ENDIAN
+-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+- 0xffffffff};
+-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
+-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
++const union ui32dun nanMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}};
++const union ui32dun infMask =
++ {{TX_DOUBLE_HI32_EXPMASK, 0}};
++const union ui32dun negInfMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}};
+ #else
+-const PRUint32 nanMask[2] = {0xffffffff,
+- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
+-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
+-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
++const union ui32dun nanMask =
++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}};
++const union ui32dun infMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK}};
++const union ui32dun negInfMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}};
+ #endif
+
+-const double Double::NaN = *((double*)nanMask);
+-const double Double::POSITIVE_INFINITY = *((double*)infMask);
+-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
++const double Double::NaN = nanMask.d;
++const double Double::POSITIVE_INFINITY = infMask.d;
++const double Double::NEGATIVE_INFINITY = negInfMask.d;
+
+ /*
+ * Determines whether the given double represents positive or negative
diff --git a/www/mozilla/files/patch-Makefile.in b/www/mozilla/files/patch-Makefile.in
new file mode 100644
index 000000000..5480cb799
--- /dev/null
+++ b/www/mozilla/files/patch-Makefile.in
@@ -0,0 +1,22 @@
+--- Makefile.in.orig Fri Aug 29 20:20:58 2003
++++ Makefile.in Sat Oct 18 15:34:15 2003
+@@ -67,8 +67,7 @@
+ $(tier_2_dirs) \
+ $(tier_9_dirs) \
+ $(tier_40_dirs) \
+- $(tier_50_dirs) \
+- $(NULL)
++ $(tier_50_dirs)
+
+ ifdef GC_LEAK_DETECTOR
+ DIRS += gc/boehm
+@@ -87,7 +86,8 @@
+ DIRS += $(tier_98_dirs)
+ endif
+
+-DIRS += $(tier_99_dirs)
++DIRS += $(tier_99_dirs) \
++ $(NULL)
+
+ #
+ # tier 0 - base build config dirs
diff --git a/www/mozilla/files/patch-bugzilla149334 b/www/mozilla/files/patch-bugzilla149334
new file mode 100644
index 000000000..fe1be5bc8
--- /dev/null
+++ b/www/mozilla/files/patch-bugzilla149334
@@ -0,0 +1,342 @@
+Index: gfx/idl/nsIFreeType2.idl
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/idl/nsIFreeType2.idl,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsIFreeType2.idl
+--- gfx/idl/nsIFreeType2.idl 15 Apr 2004 23:30:02 -0000 1.10
++++ gfx/idl/nsIFreeType2.idl 26 May 2004 10:00:54 -0000
+@@ -76,10 +76,11 @@ native FT_Pointer(FT_Pointer);
+ native FT_Sfnt_Tag(FT_Sfnt_Tag);
+ native FT_Size(FT_Size);
+
+-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
++[ptr] native FTC_ImageType_p(FTC_ImageType);
+ native FTC_Face_Requester(FTC_Face_Requester);
+ native FTC_Font(FTC_Font);
+-native FTC_Image_Cache(FTC_Image_Cache);
++native FTC_FaceID(FTC_FaceID);
++native FTC_ImageCache(FTC_ImageCache);
+ native FTC_Manager(FTC_Manager);
+
+ // #ifdef MOZ_SVG
+@@ -99,7 +100,7 @@ interface nsIFreeType2 : nsISupports
+
+ readonly attribute FT_Library library;
+ readonly attribute FTC_Manager FTCacheManager;
+- readonly attribute FTC_Image_Cache ImageCache;
++ readonly attribute FTC_ImageCache ImageCache;
+
+ void doneFace(in FT_Face face);
+ void doneFreeType(in FT_Library lib);
+@@ -115,16 +116,16 @@ interface nsIFreeType2 : nsISupports
+ void outlineDecompose(in FT_Outline_p outline,
+ in const_FT_Outline_Funcs_p funcs, in voidPtr p);
+ void setCharmap(in FT_Face face, in FT_CharMap charmap);
+- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
++ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
+ in FT_UInt gindex, out FT_Glyph glyph);
+- void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
+- out FT_Face face, out FT_Size size);
++ void managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
++ out FT_Face face);
+ void managerDone(in FTC_Manager manager);
+ void managerNew(in FT_Library lib, in FT_UInt max_faces,
+ in FT_UInt max_sizes, in FT_ULong max_bytes,
+ in FTC_Face_Requester requester, in FT_Pointer req_data,
+ out FTC_Manager manager);
+- void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
++ void imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
+ /* #ifdef MOZ_SVG */
+ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
+ in FT_Vector_p delta);
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 17 Apr 2004 21:52:29 -0000 1.25
++++ gfx/src/freetype/nsFreeType.cpp 26 May 2004 10:00:54 -0000
+@@ -110,11 +110,11 @@ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
+ {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
+ {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
+- {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
+- {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
++ {"FTC_ImageCache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
++ {"FTC_Manager_LookupFace", NS_FT2_OFFSET(nsFTC_Manager_LookupFace), PR_TRUE},
+ {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
+ {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
+- {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
++ {"FTC_ImageCache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
+ // #ifdef MOZ_SVG
+ {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
+ {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
+@@ -282,7 +282,7 @@ nsFreeType2::SetCharmap(FT_Face face, FT
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
++nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
+ FT_UInt glyphID, FT_Glyph *glyph)
+ {
+ // call the FreeType2 function via the function pointer
+@@ -291,11 +291,11 @@ nsFreeType2::ImageCacheLookup(FTC_Image_
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
+- FT_Face *face, FT_Size *size)
++nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
++ FT_Face *face)
+ {
+ // call the FreeType2 function via the function pointer
+- FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
++ FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
+ return error ? NS_ERROR_FAILURE : NS_OK;
+ }
+
+@@ -320,7 +320,7 @@ nsFreeType2::ManagerNew(FT_Library libra
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
++nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
+ {
+ // call the FreeType2 function via the function pointer
+ FT_Error error = nsFTC_Image_Cache_New(manager, cache);
+@@ -389,7 +389,7 @@ nsFreeType2::SupportsExtFunc(PRBool *res
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
++nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
+ {
+ *aCache = mImageCache;
+ return NS_OK;
+Index: gfx/src/freetype/nsFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.h,v
+retrieving revision 1.17
+diff -u -3 -p -r1.17 nsFreeType.h
+--- gfx/src/freetype/nsFreeType.h 17 Apr 2004 21:52:29 -0000 1.17
++++ gfx/src/freetype/nsFreeType.h 26 May 2004 10:00:54 -0000
+@@ -120,13 +120,13 @@ typedef FT_Error (*FT_Outline_Decompose_
+ typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
+ typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
+ typedef FT_Error (*FTC_Image_Cache_Lookup_t)
+- (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
+-typedef FT_Error (*FTC_Manager_Lookup_Size_t)
+- (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
++ (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
++typedef FT_Error (*FTC_Manager_LookupFace_t)
++ (FTC_Manager, FTC_FaceID, FT_Face*);
+ typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
+ typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
+ FTC_Face_Requester, FT_Pointer, FTC_Manager*);
+-typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
++typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
+ // #ifdef MOZ_SVG
+ typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
+ typedef FT_Error (*FT_Get_Kerning_t)
+@@ -181,7 +181,7 @@ protected:
+ FT_Outline_Decompose_t nsFT_Outline_Decompose;
+ FT_Set_Charmap_t nsFT_Set_Charmap;
+ FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
+- FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
++ FTC_Manager_LookupFace_t nsFTC_Manager_LookupFace;
+ FTC_Manager_Done_t nsFTC_Manager_Done;
+ FTC_Manager_New_t nsFTC_Manager_New;
+ FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
+@@ -229,7 +229,7 @@ protected:
+ PRLibrary *mSharedLib;
+ FT_Library mFreeTypeLibrary;
+ FTC_Manager mFTCacheManager;
+- FTC_Image_Cache mImageCache;
++ FTC_ImageCache mImageCache;
+
+ static nsHashtable *sFontFamilies;
+ static nsHashtable *sRange1CharSetNames;
+Index: gfx/src/ps/nsFontMetricsPS.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v
+retrieving revision 1.43
+diff -u -3 -p -r1.43 nsFontMetricsPS.cpp
+--- gfx/src/ps/nsFontMetricsPS.cpp 17 Apr 2004 21:52:31 -0000 1.43
++++ gfx/src/ps/nsFontMetricsPS.cpp 26 May 2004 10:01:03 -0000
+@@ -1140,10 +1140,10 @@ nsFontPSFreeType::Init(nsITrueTypeFontCa
+
+ mPixelSize = NSToIntRound(app2dev * mFont->size);
+
+- mImageDesc.font.face_id = (void*)mEntry;
+- mImageDesc.font.pix_width = mPixelSize;
+- mImageDesc.font.pix_height = mPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
++ mImageDesc->width = mPixelSize;
++ mImageDesc->height = mPixelSize;
++ mImageDesc->flags = 0;
+
+ nsresult rv;
+ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
+@@ -1189,7 +1189,7 @@ nsFontPSFreeType::GetWidth(const PRUnich
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache iCache;
++ FTC_ImageCache iCache;
+ nsresult rv = mFt2->GetImageCache(&iCache);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Failed to get Image Cache");
+@@ -1227,8 +1227,8 @@ nsFontPSFreeType::getFTFace()
+
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ NS_ASSERTION(rv==0, "failed to get face/size");
+ if (rv)
+ return nsnull;
+@@ -1621,16 +1621,16 @@ void nsFT2Type8Generator::GeneratePSFont
+ mEntry->GetFamilyName(fontName);
+ mEntry->GetStyleName(styleName);
+
+- mImageDesc.font.face_id = (void*)mEntry;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
+ // TT glyph has no relation to size
+- mImageDesc.font.pix_width = 16;
+- mImageDesc.font.pix_height = 16;
+- mImageDesc.image_type = 0;
++ mImageDesc->width = 16;
++ mImageDesc->height = 16;
++ mImageDesc->flags = 0;
+ FT_Face face = nsnull;
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ if (NS_FAILED(rv))
+ return;
+
+Index: gfx/src/ps/nsFontMetricsPS.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFontMetricsPS.h
+--- gfx/src/ps/nsFontMetricsPS.h 17 Apr 2004 21:52:31 -0000 1.25
++++ gfx/src/ps/nsFontMetricsPS.h 26 May 2004 10:01:03 -0000
+@@ -319,7 +319,7 @@ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+
+
+ static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
+@@ -362,7 +362,7 @@ public:
+ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
+ nsCOMPtr<nsIFreeType2> mFt2;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ };
+ #endif
+
+Index: gfx/src/x11shared/nsFontFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.cpp,v
+retrieving revision 1.14
+diff -u -3 -p -r1.14 nsFontFreeType.cpp
+--- gfx/src/x11shared/nsFontFreeType.cpp 17 Apr 2004 21:52:34 -0000 1.14
++++ gfx/src/x11shared/nsFontFreeType.cpp 26 May 2004 10:01:03 -0000
+@@ -177,7 +177,7 @@ nsFreeTypeFont::getFTFace()
+ FTC_Manager mgr;
+ nsresult rv;
+ mFt2->GetFTCacheManager(&mgr);
+- rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
++ rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
+ if (NS_FAILED(rv))
+ return nsnull;
+@@ -191,22 +191,15 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ PRBool embedded_bimap = PR_FALSE;
+ mFaceID = aFaceID;
+ mPixelSize = aPixelSize;
+- mImageDesc.font.face_id = (void*)mFaceID;
+- mImageDesc.font.pix_width = aPixelSize;
+- mImageDesc.font.pix_height = aPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mFaceID;
++ mImageDesc->width = aPixelSize;
++ mImageDesc->height = aPixelSize;
++ mImageDesc->flags = 0;
+
+ if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+- mImageDesc.image_type |= ftc_image_mono;
+ anti_alias = PR_FALSE;
+ }
+
+- if (nsFreeType2::gFreeType2Autohinted)
+- mImageDesc.image_type |= ftc_image_flag_autohinted;
+-
+- if (nsFreeType2::gFreeType2Unhinted)
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+-
+ PRUint32 num_embedded_bitmaps, i;
+ PRInt32* embedded_bitmapheights;
+ mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
+@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ if (embedded_bitmapheights[i] == aPixelSize) {
+ embedded_bimap = PR_TRUE;
+ // unhinted must be set for embedded bitmaps to be used
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+ break;
+ }
+ }
+@@ -312,7 +304,7 @@ nsFreeTypeFont::doGetBoundingMetrics(con
+ if (!face)
+ return NS_ERROR_FAILURE;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return NS_ERROR_FAILURE;
+@@ -401,7 +393,7 @@ nsFreeTypeFont::GetWidth(const PRUnichar
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+@@ -723,7 +715,7 @@ nsFreeTypeXImage::DrawString(nsRendering
+ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
+ #endif
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+Index: gfx/src/x11shared/nsFontFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.h,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsFontFreeType.h
+--- gfx/src/x11shared/nsFontFreeType.h 17 Apr 2004 21:52:34 -0000 1.10
++++ gfx/src/x11shared/nsFontFreeType.h 26 May 2004 10:01:03 -0000
+@@ -110,7 +110,7 @@ protected:
+ XImage *GetXImage(PRUint32 width, PRUint32 height);
+ nsITrueTypeFontCatalogEntry *mFaceID;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ };
+
diff --git a/www/mozilla/files/patch-build_unix_run-mozilla.sh b/www/mozilla/files/patch-build_unix_run-mozilla.sh
new file mode 100644
index 000000000..cf08afee8
--- /dev/null
+++ b/www/mozilla/files/patch-build_unix_run-mozilla.sh
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/mozilla/files/patch-build_unix_run-mozilla.sh,v 1.5 2004/11/07 22:24:21 marcus Exp $
+
+--- build/unix/run-mozilla.sh.orig Mon Dec 15 12:27:28 2003
++++ build/unix/run-mozilla.sh Wed Feb 11 14:24:17 2004
+@@ -355,7 +355,7 @@
+ fi
+ ##
+ ## Set LD_LIBRARY_PATH
+-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
++LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+ if [ -n "$LD_LIBRARYN32_PATH" ]
+ then
+ LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
+@@ -442,6 +442,9 @@
+ #
+ export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
+ export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
++
++MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
++export MOZ_PLUGIN_PATH
+
+ if [ $moz_debug -eq 1 ]
+ then
diff --git a/www/mozilla/files/patch-config-mkdepend-imakemdep.h b/www/mozilla/files/patch-config-mkdepend-imakemdep.h
new file mode 100644
index 000000000..b688e6644
--- /dev/null
+++ b/www/mozilla/files/patch-config-mkdepend-imakemdep.h
@@ -0,0 +1,10 @@
+--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998
++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003
+@@ -278,4 +278,7 @@
+ "-D__i386__",
+ # endif
++# if defined(__amd64__) || defined(__x86_64__)
++ "-D__amd64__ -D__x86_64__",
++# endif
+ # ifdef __GNUC__
+ "-traditional",
diff --git a/www/mozilla/files/patch-config::mkdepend::Makefile.in b/www/mozilla/files/patch-config::mkdepend::Makefile.in
new file mode 100644
index 000000000..bace012a2
--- /dev/null
+++ b/www/mozilla/files/patch-config::mkdepend::Makefile.in
@@ -0,0 +1,10 @@
+--- config/mkdepend/Makefile.in.orig Sun Dec 12 07:36:57 2004
++++ config/mkdepend/Makefile.in Sun Dec 12 07:37:55 2004
+@@ -57,6 +57,7 @@
+ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\"
++HOST_CFLAGS += $(XCFLAGS)
+
+ ifdef GNU_CC
+ _GCCDIR = $(shell $(CC) -print-file-name=include)
diff --git a/www/mozilla/files/patch-config::rules.mk b/www/mozilla/files/patch-config::rules.mk
new file mode 100644
index 000000000..16cb6ae11
--- /dev/null
+++ b/www/mozilla/files/patch-config::rules.mk
@@ -0,0 +1,14 @@
+--- config/rules.mk.orig Sun May 18 16:10:18 2003
++++ config/rules.mk Sun Jul 20 18:07:26 2003
+@@ -448,7 +448,11 @@
+
+ ifeq ($(OS_ARCH),FreeBSD)
+ ifdef IS_COMPONENT
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
++else
+ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
++endif
+ endif
+ endif
+
diff --git a/www/mozilla/files/patch-config_autoconf.mk.in b/www/mozilla/files/patch-config_autoconf.mk.in
new file mode 100644
index 000000000..9c7c471be
--- /dev/null
+++ b/www/mozilla/files/patch-config_autoconf.mk.in
@@ -0,0 +1,18 @@
+--- config/autoconf.mk.in.orig Mon Mar 15 22:56:25 2004
++++ config/autoconf.mk.in Fri Mar 19 15:17:50 2004
+@@ -31,13 +31,13 @@
+ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+ bindir = @bindir@
+-includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++includedir = @includedir@/mozilla%%HEADERS_SUFX%%
+ libdir = @libdir@
+ datadir = @datadir@
+ mandir = @mandir@
+ idldir = @datadir@/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+
+-mozappdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++mozappdir = $(libdir)/%%MOZILLA%%
+ mredir = $(libdir)/mre/mre-$(MOZ_APP_VERSION)
+ mrelibdir = $(mredir)/lib
+
diff --git a/www/mozilla/files/patch-extensions_negotiateauth_Makefile.in b/www/mozilla/files/patch-extensions_negotiateauth_Makefile.in
new file mode 100644
index 000000000..6c938617f
--- /dev/null
+++ b/www/mozilla/files/patch-extensions_negotiateauth_Makefile.in
@@ -0,0 +1,20 @@
+--- extensions/negotiateauth/Makefile.in.orig Mon Jul 12 15:18:06 2004
++++ extensions/negotiateauth/Makefile.in Sat Dec 18 16:10:49 2004
+@@ -64,7 +64,6 @@
+ $(NULL)
+
+ EXTRA_DSO_LDOPTS = \
+- $(MOZ_COMPONENT_LIBS) \
+ $(NULL)
+
+ ifneq (,$(GSSAPI_LIBS))
+@@ -81,6 +80,9 @@
+ # to install GSSAPI libraries in order to use the rest of mozilla ;-)
+ FORCE_SHARED_LIB = 1
+ endif
++
++EXTRA_DSO_LDOPTS = \
++ $(MOZ_COMPONENT_LIBS)
+
+ ifeq ($(OS_ARCH),WINNT)
+ LOCAL_INCLUDES = -DUSE_SSPI
diff --git a/www/mozilla/files/patch-nsprpub-pr-include-md-_pth.h b/www/mozilla/files/patch-nsprpub-pr-include-md-_pth.h
new file mode 100644
index 000000000..1f8159c70
--- /dev/null
+++ b/www/mozilla/files/patch-nsprpub-pr-include-md-_pth.h
@@ -0,0 +1,11 @@
+--- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004
++++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004
+@@ -90,7 +90,7 @@
+ #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
+ #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
+ #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
+-#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
++#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
+ #if defined(DARWIN)
+ #define _PT_PTHREAD_CONDATTR_INIT(x) 0
+ #else
diff --git a/www/mozilla/files/patch-nsprpub-pr-src-io-prprf.c b/www/mozilla/files/patch-nsprpub-pr-src-io-prprf.c
new file mode 100644
index 000000000..f9949d6d9
--- /dev/null
+++ b/www/mozilla/files/patch-nsprpub-pr-src-io-prprf.c
@@ -0,0 +1,14 @@
+--- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004
++++ nsprpub/pr/src/io/prprf.c Fri Mar 19 15:26:55 2004
+@@ -51,7 +51,10 @@
+ ** Note: on some platforms va_list is defined as an array,
+ ** and requires array notation.
+ */
+-#if (defined(LINUX) && defined(__x86_64__))
++#if defined(__amd64__)
++#include <stdarg.h>
++#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar))
++#elif (defined(LINUX) && defined(__x86_64__))
+ #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar))
+ #elif (defined(LINUX) && defined(__powerpc__)) || \
+ (defined(LINUX) && defined(__s390__)) || \
diff --git a/www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.cfg b/www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.cfg
new file mode 100644
index 000000000..b66fea57c
--- /dev/null
+++ b/www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.cfg
@@ -0,0 +1,124 @@
+--- nsprpub/pr/include/md/_freebsd.cfg.orig Sat Nov 15 15:36:12 2003
++++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 13:36:44 2004
+@@ -91,7 +91,7 @@
+ #define PR_ALIGN_OF_DOUBLE 4
+ #define PR_ALIGN_OF_POINTER 4
+
+-#elif defined(__alpha)
++#elif defined(__alpha__)
+
+ #define IS_LITTLE_ENDIAN 1
+ #undef IS_BIG_ENDIAN
+@@ -138,8 +138,7 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
+-#elif defined(__sparc__)
+-
++#elif defined(__sparc64__)
+ #undef IS_LITTLE_ENDIAN
+ #define IS_BIG_ENDIAN 1
+ #define HAVE_LONG_LONG
+@@ -185,6 +184,102 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
++#elif defined(__ia64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#elif defined(__amd64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
+ #else
+
+ #error "Unknown CPU architecture"
diff --git a/www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.h b/www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.h
new file mode 100644
index 000000000..fca34102f
--- /dev/null
+++ b/www/mozilla/files/patch-nsprpub::pr::include::md::_freebsd.h
@@ -0,0 +1,13 @@
+--- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 18:36:13 2003
++++ nsprpub/pr/include/md/_freebsd.h Sun Dec 14 11:40:08 2003
+@@ -50,6 +50,10 @@
+ #define _PR_SI_ARCHITECTURE "alpha"
+ #elif defined(__sparc__)
+ #define _PR_SI_ARCHITECTURE "sparc"
++#elif defined(__ia64__)
++#define _PR_SI_ARCHITECTURE "ia64"
++#elif defined(__amd64__)
++#define _PR_SI_ARCHITECTURE "amd64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
diff --git a/www/mozilla/files/patch-nsprpub::pr::src::pthreads::ptio.c b/www/mozilla/files/patch-nsprpub::pr::src::pthreads::ptio.c
new file mode 100644
index 000000000..08346f235
--- /dev/null
+++ b/www/mozilla/files/patch-nsprpub::pr::src::pthreads::ptio.c
@@ -0,0 +1,29 @@
+--- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 17:59:47 2003
++++ nsprpub/pr/src/pthreads/ptio.c Fri Aug 29 15:39:46 2003
+@@ -189,7 +189,7 @@
+ #endif
+ #endif
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ static PRBool _pr_ipv6_v6only_on_by_default;
+ /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */
+ #ifndef IPV6_V6ONLY
+@@ -1154,7 +1154,7 @@
+ _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE);
+ PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr);
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option
+ * is turned on by default, contrary to what RFC 3493, Section
+ * 5.3 says. So we have to turn it off. Find out whether we
+@@ -3462,7 +3462,7 @@
+ if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno);
+ else
+ {
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default)
+ {
+ int on = 0;
diff --git a/www/mozilla/files/patch-qt b/www/mozilla/files/patch-qt
new file mode 100644
index 000000000..6b72f3f00
--- /dev/null
+++ b/www/mozilla/files/patch-qt
@@ -0,0 +1,50 @@
+--- configure.orig Tue Apr 20 21:39:17 2004
++++ configure Thu Apr 29 14:01:52 2004
+@@ -9362,7 +9362,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9368 "configure"
+ #include "confdefs.h"
+@@ -9393,7 +9393,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
+@@ -9403,7 +9403,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9409 "configure"
+ #include "confdefs.h"
+@@ -9434,7 +9434,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ fi
+@@ -12298,9 +12298,9 @@
+
+
+
+-MOZ_EXTENSIONS_DEFAULT=" cookie wallet content-packs xml-rpc xmlextras help p3p pref transformiix venkman inspector irc universalchardet typeaheadfind webservices spellcheck gnomevfs negotiateauth"
++MOZ_EXTENSIONS_DEFAULT=" cookie wallet content-packs xml-rpc xmlextras help p3p pref transformiix venkman inspector universalchardet typeaheadfind webservices spellcheck gnomevfs negotiateauth"
+
+-MOZ_EXTENSIONS_ALL="$MOZ_EXTENSIONS_DEFAULT xmlterm datetime finger cview layout-debug tasks"
++MOZ_EXTENSIONS_ALL="$MOZ_EXTENSIONS_DEFAULT irc xmlterm datetime finger cview layout-debug tasks"
+
+ # Check whether --enable-extensions or --disable-extensions was given.
+ if test "${enable_extensions+set}" = set; then
diff --git a/www/mozilla/files/patch-security::coreconf::FreeBSD.mk b/www/mozilla/files/patch-security::coreconf::FreeBSD.mk
new file mode 100644
index 000000000..5c76b5af5
--- /dev/null
+++ b/www/mozilla/files/patch-security::coreconf::FreeBSD.mk
@@ -0,0 +1,37 @@
+--- security/coreconf/FreeBSD.mk.orig Wed Mar 26 20:17:25 2003
++++ security/coreconf/FreeBSD.mk Thu Jul 8 12:56:24 2004
+@@ -35,16 +35,18 @@
+
+ include $(CORE_DEPTH)/coreconf/UNIX.mk
+
+-DEFAULT_COMPILER = gcc
+-CC = gcc
+-CCC = g++
++CCC = ${CXX}
+ RANLIB = ranlib
+
+ ifeq ($(OS_TEST),alpha)
+ CPU_ARCH = alpha
+ else
++ifeq ($(OS_TEST),amd64)
++CPU_ARCH = amd64
++else
+ CPU_ARCH = x86
+ endif
++endif
+
+ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
+
+@@ -71,7 +73,11 @@
+ DLL_SUFFIX = so.1.0
+ endif
+
+-MKSHLIB = $(CC) $(DSO_LDOPTS)
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@
++else
++MKSHLIB = $(CC) -Wl,-Bsymbolic $(DSO_LDOPTS) -o $@
++endif
+ ifdef MAPFILE
+ # Add LD options to restrict exported symbols to those in the map file
+ endif
diff --git a/www/mozilla/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/www/mozilla/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
new file mode 100644
index 000000000..7f8e55f53
--- /dev/null
+++ b/www/mozilla/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
@@ -0,0 +1,29 @@
+--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004
++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004
+@@ -143,7 +143,7 @@
+ PR_END_MACRO
+
+ // Attempt to open libgconf
+- gconfLib = LoadVersionedLibrary("gconf-2", ".4");
++ gconfLib = PR_LoadLibrary("libgconf-2.so");
+ ENSURE_LIB(gconfLib);
+
+ GET_LIB_FUNCTION(gconf, gconf_client_get_default);
+@@ -151,7 +151,7 @@
+ GET_LIB_FUNCTION(gconf, gconf_client_get_bool);
+
+ // Attempt to open libgnome
+- gnomeLib = LoadVersionedLibrary("gnome-2", ".0");
++ gnomeLib = PR_LoadLibrary("libgnome-2.so");
+ ENSURE_LIB(gnomeLib);
+
+ GET_LIB_FUNCTION(gnome, gnome_url_show);
+@@ -160,7 +160,7 @@
+ GET_LIB_FUNCTION(gnome, gnome_program_get);
+
+ // Attempt to open libgnomevfs
+- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0");
++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so");
+ ENSURE_LIB(vfsLib);
+
+ GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name);
diff --git a/www/mozilla/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc b/www/mozilla/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc
new file mode 100644
index 000000000..ebe5474ca
--- /dev/null
+++ b/www/mozilla/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004
++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Fri Mar 19 15:58:14 2004
+@@ -8,7 +8,7 @@
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
diff --git a/www/mozilla/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in b/www/mozilla/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in
new file mode 100644
index 000000000..dbdc47b6f
--- /dev/null
+++ b/www/mozilla/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in
@@ -0,0 +1,56 @@
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 14:31:25 2004
+@@ -49,6 +49,9 @@
+ ifeq (86,$(findstring 86,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
+ endif
++ifeq (amd64,$(OS_TEST))
++CPPSRCS := xptcinvoke_amd64_freebsd.cpp xptcstubs_amd64_freebsd.cpp
++endif
+ endif
+ #
+ # New code for Linux, et. al., with gcc
+@@ -59,8 +62,8 @@
+ CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
+ endif
+ endif
+-# IA64 Linux
+-ifneq (,$(filter Linux,$(OS_ARCH)))
++# IA64 Linux & FreeBSD
++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
+ ifneq (,$(findstring ia64,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
+ ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
+@@ -106,9 +109,15 @@
+ ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
+ endif
+ #
++# FreeBSD/Alpha
++#
++ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
++CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
++endif
++#
+ # Linux/Alpha
+ #
+-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
++ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
+ endif
+ #
+@@ -294,6 +303,15 @@
+ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
+ CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# FreeBSD/SPARC64
++#
++ifeq ($(OS_ARCH),FreeBSD)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
++endif
+ endif
+ #
+ # Solaris/SPARC
diff --git a/www/mozilla/files/patch-xptcall-alpha b/www/mozilla/files/patch-xptcall-alpha
new file mode 100644
index 000000000..29631a98e
--- /dev/null
+++ b/www/mozilla/files/patch-xptcall-alpha
@@ -0,0 +1,459 @@
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
+@@ -0,0 +1,184 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++__asm__("invoke_copy_to_stack") __attribute__((unused));
++
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
++ {
++ if(s->IsPtrData())
++ {
++ *d = (PRUint64)s->ptr;
++ continue;
++ }
++ switch(s->type)
++ {
++ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
++ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
++ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
++ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
++ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
++ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
++ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
++ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // convert floats to doubles if they are to be passed
++ // via registers so we can just deal with doubles later
++ union { PRUint64 u64; double d; } t;
++ t.d = (double)s->val.f;
++ *d = t.u64;
++ }
++ else
++ // otherwise copy to stack normally
++ *d = (PRUint64)s->val.u32;
++ break;
++ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
++ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
++ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
++ default:
++ // all the others are plain pointer types
++ *d = (PRUint64)s->val.p;
++ break;
++ }
++ }
++}
++
++/*
++ * XPTC_PUBLIC_API(nsresult)
++ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
++ */
++__asm__(
++ "#### XPTC_InvokeByIndex ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".globl XPTC_InvokeByIndex\n\t"
++ ".ent XPTC_InvokeByIndex\n"
++"XPTC_InvokeByIndex:\n\t"
++ ".frame $15,32,$26,0\n\t"
++ ".mask 0x4008000,-32\n\t"
++ "ldgp $29,0($27)\n"
++"$XPTC_InvokeByIndex..ng:\n\t"
++ "subq $30,32,$30\n\t"
++ "stq $26,0($30)\n\t"
++ "stq $15,8($30)\n\t"
++ "bis $30,$30,$15\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
++ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
++ * is required for storage of those passed via registers.
++ */
++
++ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
++ "cmplt $2,$18,$1\n\t"
++ "cmovne $1,$18,$2\n\t"
++ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
++ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
++ "subq $30,$1,$30\n\t"
++
++ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
++ "stq $17,16($15)\n\t" /* save "methodIndex" */
++
++ "addq $30,8,$16\n\t" /* pass stack pointer */
++ "bis $18,$18,$17\n\t" /* pass "paramCount" */
++ "bis $19,$19,$18\n\t" /* pass "params" */
++ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
++
++ /*
++ * Copy the first 6 parameters to registers and remove from stack frame.
++ * Both the integer and floating point registers are set for each parameter
++ * except the first which is the "this" pointer. (integer only)
++ * The floating point registers are all set as doubles since the
++ * invoke_copy_to_stack function should have converted the floats.
++ */
++ "ldq $16,0($30)\n\t" /* integer registers */
++ "ldq $17,8($30)\n\t"
++ "ldq $18,16($30)\n\t"
++ "ldq $19,24($30)\n\t"
++ "ldq $20,32($30)\n\t"
++ "ldq $21,40($30)\n\t"
++ "ldt $f17,8($30)\n\t" /* floating point registers */
++ "ldt $f18,16($30)\n\t"
++ "ldt $f19,24($30)\n\t"
++ "ldt $f20,32($30)\n\t"
++ "ldt $f21,40($30)\n\t"
++
++ "addq $30,48,$30\n\t" /* remove params from stack */
++
++ /*
++ * Call the virtual function with the constructed stack frame.
++ */
++ "bis $16,$16,$1\n\t" /* load "this" */
++ "ldq $2,16($15)\n\t" /* load "methodIndex" */
++ "ldq $1,0($1)\n\t" /* load vtable */
++#if 0
++ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
++#else
++ "mulq $2, 8, $2\n\t"
++ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
++#endif
++ "addq $1,$2,$1\n\t"
++ "ldq $27,0($1)\n\t" /* load address of function */
++ "jsr $26,($27),0\n\t" /* call virtual function */
++ "ldgp $29,0($26)\n\t"
++
++ "bis $15,$15,$30\n\t"
++ "ldq $26,0($30)\n\t"
++ "ldq $15,8($30)\n\t"
++ "addq $30,32,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end XPTC_InvokeByIndex"
++ );
++
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
+@@ -0,0 +1,269 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Implement shared vtbl methods. */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include <sys/types.h>
++#include <machine/cpu.h>
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++__asm__("PrepareAndDispatch") __attribute__((unused));
++
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++{
++ const PRUint8 PARAM_BUFFER_COUNT = 16;
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ // args[0] to args[NUM_ARG_REGS] hold floating point register values
++ PRUint64* ap = args + NUM_ARG_REGS;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
++ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
++ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
++ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
++ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
++ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
++ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
++ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // floats passed via registers are stored as doubles
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (PRUint64) args[i];
++ dp->val.f = (float) dp->val.d; // convert double to float
++ }
++ else
++ dp->val.u32 = (PRUint32) *ap;
++ break;
++ case nsXPTType::T_DOUBLE :
++ // doubles passed via registers are also stored
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
++ break;
++ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
++ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
++ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++/*
++ * SharedStub()
++ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
++ * passed to this function via $1 to preserve the argument registers.
++ */
++__asm__(
++ "#### SharedStub ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".ent SharedStub\n"
++"SharedStub:\n\t"
++ ".frame $30,96,$26,0\n\t"
++ ".mask 0x4000000,-96\n\t"
++ "ldgp $29,0($27)\n"
++"$SharedStub..ng:\n\t"
++ "subq $30,96,$30\n\t"
++ "stq $26,0($30)\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Store arguments passed via registers to the stack.
++ * Floating point registers are stored as doubles and converted
++ * to floats in PrepareAndDispatch if necessary.
++ */
++ "stt $f17,16($30)\n\t" /* floating point registers */
++ "stt $f18,24($30)\n\t"
++ "stt $f19,32($30)\n\t"
++ "stt $f20,40($30)\n\t"
++ "stt $f21,48($30)\n\t"
++ "stq $17,56($30)\n\t" /* integer registers */
++ "stq $18,64($30)\n\t"
++ "stq $19,72($30)\n\t"
++ "stq $20,80($30)\n\t"
++ "stq $21,88($30)\n\t"
++
++ /*
++ * Call PrepareAndDispatch function.
++ */
++ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
++ "addq $30,16,$18\n\t" /* pass "args" */
++ "bsr $26,$PrepareAndDispatch..ng\n\t"
++
++ "ldq $26,0($30)\n\t"
++ "addq $30,96,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end SharedStub"
++ );
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
++ );
++#else
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ nsresult result; \
++__asm__ __volatile__( \
++ "ldah $29,0($27)\n\t" \
++ "lda $29,0($29)\n\t" \
++ "lda $1, "#n"\n\t" \
++ "br $31, $SharedStub..ng\n\t" \
++ "mov $0, %0\n\t" \
++ : "=r" (result) \
++ ); \
++ return result; \
++}
++#endif
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
diff --git a/www/mozilla/files/patch-xptcall-amd64 b/www/mozilla/files/patch-xptcall-amd64
new file mode 100644
index 000000000..3227cad02
--- /dev/null
+++ b/www/mozilla/files/patch-xptcall-amd64
@@ -0,0 +1,386 @@
+--- /dev/null Wed Dec 31 16:00:00 1969
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_freebsd.cpp Thu Oct 16 22:59:43 2003
+@@ -0,0 +1,174 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++// Platform specific code to invoke XPCOM methods on native objects
++
++#include "xptcprivate.h"
++
++// 6 integral parameters are passed in registers
++const PRUint32 GPR_COUNT = 6;
++
++// 8 floating point parameters are passed in SSE registers
++const PRUint32 FPR_COUNT = 8;
++
++// Remember that these 'words' are 64-bit long
++static inline void
++invoke_count_words(PRUint32 paramCount, nsXPTCVariant * s,
++ PRUint32 & nr_gpr, PRUint32 & nr_fpr, PRUint32 & nr_stack)
++{
++ nr_gpr = 1; // skip one GP register for 'that'
++ nr_fpr = 0;
++ nr_stack = 0;
++
++ /* Compute number of eightbytes of class MEMORY. */
++ for (uint32 i = 0; i < paramCount; i++, s++) {
++ if (!s->IsPtrData()
++ && (s->type == nsXPTType::T_FLOAT || s->type == nsXPTType::T_DOUBLE)) {
++ if (nr_fpr < FPR_COUNT)
++ nr_fpr++;
++ else
++ nr_stack++;
++ }
++ else {
++ if (nr_gpr < GPR_COUNT)
++ nr_gpr++;
++ else
++ nr_stack++;
++ }
++ }
++}
++
++static void
++invoke_copy_to_stack(PRUint64 * d, PRUint32 paramCount, nsXPTCVariant * s,
++ PRUint64 * gpregs, double * fpregs)
++{
++ PRUint32 nr_gpr = 1; // skip one GP register for 'that'
++ PRUint32 nr_fpr = 0;
++ PRUint64 value;
++
++ for (uint32 i = 0; i < paramCount; i++, s++) {
++ if (s->IsPtrData())
++ value = (PRUint64) s->ptr;
++ else {
++ switch (s->type) {
++ case nsXPTType::T_FLOAT: break;
++ case nsXPTType::T_DOUBLE: break;
++ case nsXPTType::T_I8: value = s->val.i8; break;
++ case nsXPTType::T_I16: value = s->val.i16; break;
++ case nsXPTType::T_I32: value = s->val.i32; break;
++ case nsXPTType::T_I64: value = s->val.i64; break;
++ case nsXPTType::T_U8: value = s->val.u8; break;
++ case nsXPTType::T_U16: value = s->val.u16; break;
++ case nsXPTType::T_U32: value = s->val.u32; break;
++ case nsXPTType::T_U64: value = s->val.u64; break;
++ case nsXPTType::T_BOOL: value = s->val.b; break;
++ case nsXPTType::T_CHAR: value = s->val.c; break;
++ case nsXPTType::T_WCHAR: value = s->val.wc; break;
++ default: value = (PRUint64) s->val.p; break;
++ }
++ }
++
++ if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
++ if (nr_fpr < FPR_COUNT)
++ fpregs[nr_fpr++] = s->val.d;
++ else {
++ *((double *)d) = s->val.d;
++ d++;
++ }
++ }
++ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
++ if (nr_fpr < FPR_COUNT)
++ // The value in %xmm register is already prepared to
++ // be retrieved as a float. Therefore, we pass the
++ // value verbatim, as a double without conversion.
++ fpregs[nr_fpr++] = s->val.d;
++ else {
++ *((float *)d) = s->val.f;
++ d++;
++ }
++ }
++ else {
++ if (nr_gpr < GPR_COUNT)
++ gpregs[nr_gpr++] = value;
++ else
++ *d++ = value;
++ }
++ }
++}
++
++extern "C"
++XPTC_PUBLIC_API(nsresult)
++XPTC_InvokeByIndex(nsISupports * that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant * params)
++{
++ PRUint32 nr_gpr, nr_fpr, nr_stack;
++ invoke_count_words(paramCount, params, nr_gpr, nr_fpr, nr_stack);
++
++ // Stack, if used, must be 16-bytes aligned
++ if (nr_stack)
++ nr_stack = (nr_stack + 1) & ~1;
++
++ // Load parameters to stack, if necessary
++ PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8);
++ PRUint64 gpregs[GPR_COUNT];
++ double fpregs[FPR_COUNT];
++ invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs);
++
++ // Load FPR registers from fpregs[]
++ register double d0 asm("xmm0");
++ register double d1 asm("xmm1");
++ register double d2 asm("xmm2");
++ register double d3 asm("xmm3");
++ register double d4 asm("xmm4");
++ register double d5 asm("xmm5");
++ register double d6 asm("xmm6");
++ register double d7 asm("xmm7");
++
++ switch (nr_fpr) {
++#define ARG_FPR(N) \
++ case N+1: d##N = fpregs[N];
++ ARG_FPR(7);
++ ARG_FPR(6);
++ ARG_FPR(5);
++ ARG_FPR(4);
++ ARG_FPR(3);
++ ARG_FPR(2);
++ ARG_FPR(1);
++ ARG_FPR(0);
++ case 0:;
++#undef ARG_FPR
++ }
++
++ // Load GPR registers from gpregs[]
++ register PRUint64 a0 asm("rdi");
++ register PRUint64 a1 asm("rsi");
++ register PRUint64 a2 asm("rdx");
++ register PRUint64 a3 asm("rcx");
++ register PRUint64 a4 asm("r8");
++ register PRUint64 a5 asm("r9");
++
++ switch (nr_gpr) {
++#define ARG_GPR(N) \
++ case N+1: a##N = gpregs[N];
++ ARG_GPR(5);
++ ARG_GPR(4);
++ ARG_GPR(3);
++ ARG_GPR(2);
++ ARG_GPR(1);
++ case 1: a0 = (PRUint64) that;
++ case 0:;
++#undef ARG_GPR
++ }
++
++ // Ensure that assignments to SSE registers won't be optimized away
++ asm("" ::
++ "x" (d0), "x" (d1), "x" (d2), "x" (d3),
++ "x" (d4), "x" (d5), "x" (d6), "x" (d7));
++
++ // Get pointer to method
++ PRUint64 methodAddress = *((PRUint64 *)that);
++ methodAddress += 8 * methodIndex;
++ methodAddress = *((PRUint64 *)methodAddress);
++
++ typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64);
++ PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5);
++ return result;
++}
+--- /dev/null Wed Dec 31 16:00:00 1969
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_freebsd.cpp Thu Oct 16 23:01:08 2003
+@@ -0,0 +1,206 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++
++// Implement shared vtbl methods.
++
++#include "xptcprivate.h"
++
++// The Linux/x86-64 ABI passes the first 6 integral parameters and the
++// first 8 floating point parameters in registers (rdi, rsi, rdx, rcx,
++// r8, r9 and xmm0-xmm7), no stack space is allocated for these by the
++// caller. The rest of the parameters are passed in the callers stack
++// area.
++
++const PRUint32 PARAM_BUFFER_COUNT = 16;
++const PRUint32 GPR_COUNT = 6;
++const PRUint32 FPR_COUNT = 8;
++
++// PrepareAndDispatch() is called by SharedStub() and calls the actual method.
++//
++// - 'args[]' contains the arguments passed on stack
++// - 'gpregs[]' contains the arguments passed in integer registers
++// - 'fpregs[]' contains the arguments passed in floating point registers
++//
++// The parameters are mapped into an array of type 'nsXPTCMiniVariant'
++// and then the method gets called.
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase * self, PRUint32 methodIndex,
++ PRUint64 * args, PRUint64 * gpregs, double *fpregs)
++{
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint32 paramCount;
++ PRUint32 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++ if (! iface_info)
++ return NS_ERROR_UNEXPECTED;
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
++ if (! info)
++ return NS_ERROR_UNEXPECTED;
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++
++ NS_ASSERTION(dispatchParams,"no place for params");
++ if (! dispatchParams)
++ return NS_ERROR_OUT_OF_MEMORY;
++
++ PRUint64* ap = args;
++ PRUint32 nr_gpr = 1; // skip one GPR register for 'that'
++ PRUint32 nr_fpr = 0;
++ PRUint64 value;
++
++ for(i = 0; i < paramCount; i++) {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if (!param.IsOut() && type == nsXPTType::T_DOUBLE) {
++ if (nr_fpr < FPR_COUNT)
++ dp->val.d = fpregs[nr_fpr++];
++ else
++ dp->val.d = *(double*) ap++;
++ continue;
++ }
++ else if (!param.IsOut() && type == nsXPTType::T_FLOAT) {
++ if (nr_fpr < FPR_COUNT)
++ // The value in %xmm register is already prepared to
++ // be retrieved as a float. Therefore, we pass the
++ // value verbatim, as a double without conversion.
++ dp->val.d = *(double*) ap++;
++ else
++ dp->val.f = *(float*) ap++;
++ continue;
++ }
++ else {
++ if (nr_gpr < GPR_COUNT)
++ value = gpregs[nr_gpr++];
++ else
++ value = *ap++;
++ }
++
++ if (param.IsOut() || !type.IsArithmetic()) {
++ dp->val.p = (void*) value;
++ continue;
++ }
++
++ switch (type) {
++ case nsXPTType::T_I8: dp->val.i8 = (PRInt8) value; break;
++ case nsXPTType::T_I16: dp->val.i16 = (PRInt16) value; break;
++ case nsXPTType::T_I32: dp->val.i32 = (PRInt32) value; break;
++ case nsXPTType::T_I64: dp->val.i64 = (PRInt64) value; break;
++ case nsXPTType::T_U8: dp->val.u8 = (PRUint8) value; break;
++ case nsXPTType::T_U16: dp->val.u16 = (PRUint16) value; break;
++ case nsXPTType::T_U32: dp->val.u32 = (PRUint32) value; break;
++ case nsXPTType::T_U64: dp->val.u64 = (PRUint64) value; break;
++ case nsXPTType::T_BOOL: dp->val.b = (PRBool) value; break;
++ case nsXPTType::T_CHAR: dp->val.c = (char) value; break;
++ case nsXPTType::T_WCHAR: dp->val.wc = (wchar_t) value; break;
++
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16) methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if (dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++// Linux/x86-64 uses gcc >= 3.1
++#define STUB_ENTRY(n) \
++asm(".section \".text\"\n\t" \
++ ".align 2\n\t" \
++ ".if " #n " < 10\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \
++ ".type _ZN14nsXPTCStubBase5Stub" #n "Ev,@function\n" \
++ "_ZN14nsXPTCStubBase5Stub" #n "Ev:\n\t" \
++ ".elseif " #n " < 100\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \
++ ".type _ZN14nsXPTCStubBase6Stub" #n "Ev,@function\n" \
++ "_ZN14nsXPTCStubBase6Stub" #n "Ev:\n\t" \
++ ".elseif " #n " < 1000\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \
++ ".type _ZN14nsXPTCStubBase7Stub" #n "Ev,@function\n" \
++ "_ZN14nsXPTCStubBase7Stub" #n "Ev:\n\t" \
++ ".else\n\t" \
++ ".err \"stub number " #n " >= 1000 not yet supported\"\n\t" \
++ ".endif\n\t" \
++ "movl $" #n ", %eax\n\t" \
++ "jmp SharedStub\n\t" \
++ ".if " #n " < 10\n\t" \
++ ".size _ZN14nsXPTCStubBase5Stub" #n "Ev,.-_ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \
++ ".elseif " #n " < 100\n\t" \
++ ".size _ZN14nsXPTCStubBase6Stub" #n "Ev,.-_ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \
++ ".else\n\t" \
++ ".size _ZN14nsXPTCStubBase7Stub" #n "Ev,.-_ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \
++ ".endif");
++
++// static nsresult SharedStub(PRUint32 methodIndex)
++asm(".section \".text\"\n\t"
++ ".align 2\n\t"
++ ".type SharedStub,@function\n\t"
++ "SharedStub:\n\t"
++ // make room for gpregs (48), fpregs (64)
++ "pushq %rbp\n\t"
++ "movq %rsp,%rbp\n\t"
++ "subq $112,%rsp\n\t"
++ // save GP registers
++ "movq %rdi,-112(%rbp)\n\t"
++ "movq %rsi,-104(%rbp)\n\t"
++ "movq %rdx, -96(%rbp)\n\t"
++ "movq %rcx, -88(%rbp)\n\t"
++ "movq %r8 , -80(%rbp)\n\t"
++ "movq %r9 , -72(%rbp)\n\t"
++ "leaq -112(%rbp),%rcx\n\t"
++ // save FP registers
++ "movsd %xmm0,-64(%rbp)\n\t"
++ "movsd %xmm1,-56(%rbp)\n\t"
++ "movsd %xmm2,-48(%rbp)\n\t"
++ "movsd %xmm3,-40(%rbp)\n\t"
++ "movsd %xmm4,-32(%rbp)\n\t"
++ "movsd %xmm5,-24(%rbp)\n\t"
++ "movsd %xmm6,-16(%rbp)\n\t"
++ "movsd %xmm7, -8(%rbp)\n\t"
++ "leaq -64(%rbp),%r8\n\t"
++ // rdi has the 'self' pointer already
++ "movl %eax,%esi\n\t"
++ "leaq 16(%rbp),%rdx\n\t"
++ "call PrepareAndDispatch\n\t"
++ "leave\n\t"
++ "ret\n\t"
++ ".size SharedStub,.-SharedStub");
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#else
++#error "can't find a compiler to use"
++#endif /* __GNUC__ */
diff --git a/www/mozilla/files/patch-xptcall-ia64 b/www/mozilla/files/patch-xptcall-ia64
new file mode 100644
index 000000000..9cd07f7dd
--- /dev/null
+++ b/www/mozilla/files/patch-xptcall-ia64
@@ -0,0 +1,38 @@
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003
+@@ -8,6 +8,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'XPTC_InvokeByIndex'
++ .global XPTC_InvokeByIndex
+ .proc XPTC_InvokeByIndex
+ // manual bundling
+ .explicit
+@@ -24,7 +25,7 @@
+
+ // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ // PRUint32 paramCount, nsXPTCVariant* params);
+-XPTC_InvokeByIndex::
++XPTC_InvokeByIndex:
+ .prologue
+ .save ar.pfs, r37
+ // allocate 4 input args, 6 local args, and 8 output args
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003
+@@ -6,6 +6,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'SharedStub'
++ .global SharedStub
+ .proc SharedStub
+ // manual bundling
+ .explicit
+@@ -14,7 +15,7 @@
+ // .exclass PrepareAndDispatch, @fullyvisible
+ .type PrepareAndDispatch,@function
+
+-SharedStub::
++SharedStub:
+ // 9 arguments, first 8 are the input arguments of previous
+ // function call. The last one is methodIndex, and is passed in memory
+ .prologue
diff --git a/www/mozilla/files/patch-xptcall-sparc64 b/www/mozilla/files/patch-xptcall-sparc64
new file mode 100755
index 000000000..9599a8a71
--- /dev/null
+++ b/www/mozilla/files/patch-xptcall-sparc64
@@ -0,0 +1,327 @@
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
+@@ -0,0 +1,123 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ */
++
++/* Implement shared vtbl methods. */
++
++#include "xptcprivate.h"
++
++#if defined(sparc) || defined(__sparc__)
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
++{
++
++#define PARAM_BUFFER_COUNT 16
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ PRUint64* ap = args;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++extern "C" int SharedStub(int, int*);
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ int dummy; /* defeat tail-call optimization */ \
++ return SharedStub(n, &dummy); \
++}
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#endif /* sparc || __sparc__ */
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
+@@ -0,0 +1,104 @@
++/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++/*
++ Platform specific code to invoke XPCOM methods on native objects
++ for sparcv9 Solaris.
++
++ See the SPARC Compliance Definition (SCD) Chapter 3
++ for more information about what is going on here, including
++ the use of BIAS (0x7ff).
++ The SCD is available from http://www.sparc.com/.
++*/
++
++ .global XPTC_InvokeByIndex
++ .type XPTC_InvokeByIndex, #function
++
++/*
++ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant* params);
++
++*/
++XPTC_InvokeByIndex:
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++ sll %i2,4,%l0 ! assume the worst case
++ ! paramCount * 2 * 8 bytes
++ cmp %l0, 0 ! are there any args? If not,
++ be .invoke ! no need to copy args to stack
++ nop
++
++ sub %sp,%l0,%sp ! create the additional stack space
++ add %sp,0x7ff+136,%o0 ! step past the register window, the
++ ! struct result pointer and the 'this' slot
++ mov %i2,%o1 ! paramCount
++ call invoke_copy_to_stack
++ mov %i3,%o2 ! params
++
++!
++! load arguments from stack into the outgoing registers
++! BIAS is 0x7ff (2047)
++!
++
++! load the %o1..5 64bit (extended word) output registers registers
++ ldx [%sp + 0x7ff + 136],%o1 ! %i1
++ ldx [%sp + 0x7ff + 144],%o2 ! %i2
++ ldx [%sp + 0x7ff + 152],%o3 ! %i3
++ ldx [%sp + 0x7ff + 160],%o4 ! %i4
++ ldx [%sp + 0x7ff + 168],%o5 ! %i5
++
++! load the even number double registers starting with %d2
++ ldd [%sp + 0x7ff + 136],%f2
++ ldd [%sp + 0x7ff + 144],%f4
++ ldd [%sp + 0x7ff + 152],%f6
++ ldd [%sp + 0x7ff + 160],%f8
++ ldd [%sp + 0x7ff + 168],%f10
++ ldd [%sp + 0x7ff + 176],%f12
++ ldd [%sp + 0x7ff + 184],%f14
++ ldd [%sp + 0x7ff + 192],%f16
++ ldd [%sp + 0x7ff + 200],%f18
++ ldd [%sp + 0x7ff + 208],%f20
++ ldd [%sp + 0x7ff + 216],%f22
++ ldd [%sp + 0x7ff + 224],%f24
++ ldd [%sp + 0x7ff + 232],%f26
++ ldd [%sp + 0x7ff + 240],%f28
++ ldd [%sp + 0x7ff + 248],%f30
++
++!
++! calculate the target address from the vtable
++!
++.invoke:
++ sll %i1,3,%l0 ! index *= 8
++! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
++ ldx [%i0],%l1 ! *that --> address of vtable
++ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> address
++
++ jmpl %l0,%o7 ! call the routine
++ mov %i0,%o0 ! move 'this' pointer to out register
++
++ mov %o0,%i0 ! propagate return value
++ ret
++ restore
++
++ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
+--- /dev/null Mon May 26 14:00:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
+@@ -0,0 +1,91 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc) && !defined(__sparc__)
++#error "This code is for Sparc only"
++#endif
++
++/* Prototype specifies unmangled function name */
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
++
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/www/mozilla/pkg-deinstall.in b/www/mozilla/pkg-deinstall.in
new file mode 100644
index 000000000..05ebb05e9
--- /dev/null
+++ b/www/mozilla/pkg-deinstall.in
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/mozilla/pkg-deinstall.in,v 1.2 2004/11/07 22:24:21 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components/*.dat
+
+exit 0
diff --git a/www/mozilla/pkg-descr b/www/mozilla/pkg-descr
new file mode 100644
index 000000000..d91ac6c1d
--- /dev/null
+++ b/www/mozilla/pkg-descr
@@ -0,0 +1,13 @@
+This is the current release of the Mozilla open source web browser. It should
+be fully compliant with all W3C standards, including HTML, CSS, XML, XSL,
+JavaScript, MathML, SVG and RDF. This version also supports SSL encryption,
+and Java with the use of the FreeBSD native Java plug-in.
+
+This is the latest release of the Mozilla browser. It contains all the
+bugfixes and security enhancements from the mozilla port as well as
+new new features.
+
+This version has been built with GTK+-2 bindings for use with applications
+such as Galeon 2.
+
+WWW: http://www.mozilla.org/
diff --git a/www/mozilla/pkg-install.in b/www/mozilla/pkg-install.in
new file mode 100644
index 000000000..167657b1c
--- /dev/null
+++ b/www/mozilla/pkg-install.in
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/mozilla/pkg-install.in,v 1.3 2004/12/04 09:47:25 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+
+echo "===> Building Chrome's registry..."
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+
+cd ${MOZDIR} || exit 1
+./run-mozilla.sh ${REGXPCOM} || true
+./run-mozilla.sh ${REGCHROME} || true
+
+if [ ! -d %%PREFIX%%/lib/browser_plugins ]; then
+ mkdir -p %%PREFIX%%/lib/browser_plugins
+fi
+
+exit 0
diff --git a/www/seamonkey/Makefile b/www/seamonkey/Makefile
new file mode 100644
index 000000000..5140c1dd7
--- /dev/null
+++ b/www/seamonkey/Makefile
@@ -0,0 +1,382 @@
+# New ports collection makefile for: mozilla
+# Date created: 31 Mar 1998
+# Whom: eivind/dima/jseger
+#
+# $FreeBSD: ports/www/mozilla/Makefile,v 1.186 2005/02/13 07:20:57 marcus Exp $
+#
+
+PORTNAME?= mozilla
+PORTVERSION= 1.7.5
+PORTREVISION?= 1
+PORTEPOCH?= 2
+CATEGORIES?= www
+MASTER_SITES= ${MASTER_SITE_MOZILLA} \
+ ${MASTER_SITE_LOCAL:S/$/:local/}
+MASTER_SITE_SUBDIR= mozilla/releases/${PORTNAME}${PORTVERSION}/source \
+ adamw/:local
+DISTFILES= ${PORTNAME}-source-${PORTVERSION}${EXTRACT_SUFX}
+#.if !defined(WITH_CAIRO_RENDER)
+#DISTFILES+= libart_lgpl${EXTRACT_SUFX}:local
+#.endif
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= The open source, standards compliant web browser
+
+BUILD_DEPENDS= zip:${PORTSDIR}/archivers/zip \
+ freetype-config:${PORTSDIR}/print/freetype2
+LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
+ png.5:${PORTSDIR}/graphics/png \
+ mng.1:${PORTSDIR}/graphics/libmng \
+ freetype.9:${PORTSDIR}/print/freetype2 \
+ nspr4.1:${PORTSDIR}/devel/nspr
+
+WRKSRC= ${WRKDIR}/${PORTNAME}
+
+MOZILLA?= mozilla
+MOZ_SUFX?=
+
+USE_GNOME= gtk20 libidl
+
+LATEST_LINK= ${MOZILLA}
+EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude */CVS/* \
+ --exclude */macbuild/*\
+ --exclude */package/* \
+ --exclude .cvsignore \
+ --exclude makefile.win \
+ --exclude MANIFEST
+USE_BZIP2= yes
+USE_X_PREFIX= yes
+USE_PERL5= yes
+USE_ICONV= yes
+USE_GMAKE= yes
+WANT_GNOME= yes
+USE_REINPLACE= yes
+HAS_CONFIGURE= yes
+CONFIGURE_ARGS= \
+ --disable-auto-deps \
+ --enable-chrome-format=jar \
+ --disable-cpp-exceptions \
+ --disable-cpp-rtti \
+ --enable-crypto \
+ --disable-gtktest \
+ --disable-freetypetest \
+ --disable-installer \
+ --disable-glibtest \
+ --enable-double-buffer \
+ --enable-mathml \
+ --disable-md \
+ --disable-pedantic \
+ --disable-bidi \
+ --disable-plaintext-editor-only \
+ --enable-svg \
+ --disable-tests \
+ --disable-xterm-updates \
+ --enable-xinerama \
+ --with-system-zlib \
+ --with-system-jpeg=${LOCALBASE} \
+ --with-system-mng=${LOCALBASE} \
+ --with-system-png=${LOCALBASE} \
+ --with-gssapi=/usr \
+ --prefix=${FAKEDIR} \
+ --with-pthreads
+
+PLIST= ${WRKDIR}/pkg-plist
+MOZ_EXTENSIONS= default
+CONFIGURE_ENV= LOCALBASE=${LOCALBASE}
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+CONFIGURE_ARGS+= --enable-default-toolkit=gtk2
+
+ESD_LIB= libesd.so.2
+FREETYPE_LIB= libfreetype.so.9
+PKGCONFIG_FILES=mozilla-gtkmozembed mozilla-js mozilla-xpcom \
+ mozilla-nspr mozilla-nss mozilla-plugin
+
+# JPI stuff. List paths to Java Plug-ins here in the order to try.
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.1/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so \
+ ${LOCALBASE}/diablo-jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.3.1/jre/plugin/${ARCH}/ns600/libjavaplugin_oji.so
+
+OPTIONS=XFT "Enable Xft font anti-aliasing" on \
+ CALENDAR "Enable the Calendar module" off \
+ MAILNEWS "Enable Mail and News modules" on \
+ COMPOSER "Enable the HTML Composer module" on \
+ DEBUG "Enable debugging (i.e. gdb) support" off \
+ LDAP "Enable LDAP support for Mailnews" on \
+ CHATZILLA "Enable the Chatzilla IRC module" on \
+ XMLTERM "Enable the XMLTerm module" on \
+ JAVASCRIPT_DEBUGGER "Enable the DTD and JavaScript debuggers" off \
+ OPTIMIZED_CFLAGS "Enable -O2 optimizations" off \
+ SMB "Enable smb:// URI support using gnomevfs" off \
+ MENU_ENTRY "Add mozilla to the GNOME menu" on
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_CAIRO_RENDER)
+LIB_DEPENDS+= svg-cairo.1:${PORTSDIR}/graphics/libsvg-cairo
+
+CONFIGURE_ARGS+= --enable-svg-renderer-cairo \
+ --disable-svg-renderer-libart
+CONFIGURE_ENV+= MOZ_SVG_RENDERER_CAIRO=1
+.else
+CONFIGURE_ARGS+= --enable-svg-renderer-libart \
+ --disable-svg-renderer-cairo
+CONFIGURE_ENV+= MOZ_INTERNAL_LIBART_LGPL=1
+.endif
+
+.if !defined(WITHOUT_XFT)
+LIB_DEPENDS+= Xft.2:${PORTSDIR}/x11-fonts/libXft
+CONFIGURE_ARGS+=--enable-xft
+.if exists(${X11BASE}/lib/X11/fonts/mozilla/fonts.dir)
+BROKEN= Mozilla${MOZ_SUFX} and Xft2 render the mozilla-fonts \
+ illegibly. Please remove the mozilla-fonts package.
+.endif
+.else
+CONFIGURE_ARGS+=--disable-xft
+.endif
+
+.if defined(WITH_DEBUG)
+CONFIGURE_ARGS+=--enable-debug \
+ --disable-strip
+.else
+CONFIGURE_ARGS+=--disable-debug \
+ --enable-strip
+.endif
+
+.if defined(WITH_CALENDAR) && (defined(WITHOUT_MAILNEWS) || \
+ defined(WITHOUT_COMPOSER))
+BROKEN= "Calendar requires Composer and Mailnews support."
+.endif
+
+# LDAP is only used by mail and news so disable both together
+.if defined(WITHOUT_MAILNEWS)
+CONFIGURE_ARGS+= --disable-ldap --disable-mailnews
+.else
+# mail and news desired, but not LDAP
+.if defined(WITHOUT_LDAP)
+CONFIGURE_ARGS+= --disable-ldap --enable-mailnews
+.else
+CONFIGURE_ARGS+= --enable-ldap --enable-mailnews
+.endif
+.endif
+.if !defined(WITHOUT_CHATZILLA)
+MOZ_EXTENSIONS:= ${MOZ_EXTENSIONS},irc
+.endif
+.if !defined(WITHOUT_XMLTERM)
+MOZ_EXTENSIONS:= ${MOZ_EXTENSIONS},xmlterm
+.endif
+CONFIGURE_ARGS+= --enable-extensions=${MOZ_EXTENSIONS}
+
+.if defined(WITH_JAVASCRIPT_DEBUGGER)
+CONFIGURE_ARGS+= --enable-jsd \
+ --enable-dtd-debug
+.else
+CONFIGURE_ARGS+= --disable-jsd \
+ --disable-dtd-debug
+.endif
+
+.if defined(WITH_CALENDAR)
+CONFIGURE_ARGS+= --enable-calendar
+.endif
+
+.if defined(WITHOUT_COMPOSER)
+CONFIGURE_ARGS+= --disable-composer
+.endif
+
+MAKE_ENV= LD_LIBRARY_PATH=${WRKSRC}/dist/bin \
+ MOZ_INTERNAL_LIBART_LGPL=1
+ALL_TARGET= default
+FAKEDIR= ${WRKDIR}/fake
+
+#.if ${ARCH} == "i386"
+#CONFIGURE_ARGS+= --enable-reorder
+#.endif
+
+.if ${OSVERSION} < 500035 && !defined(WITH_CAIRO_RENDER)
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-nsSVGLibartGlyphMetricsFT.cpp
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp
+.endif
+
+.if defined(WITH_SMB)
+USE_GNOME+= gnomevfs2
+.else
+CONFIGURE_ARGS+=--disable-gnomevfs
+.endif
+
+.if defined(WITH_OPTIMIZED_CFLAGS)
+CFLAGS+= -O2
+CONFIGURE_ARGS+= --enable-optimize=-O2
+.endif
+
+.if defined(WITH_MENU_ENTRY)
+USE_GNOME+= gnomehier
+.endif
+
+.if ${ARCH} == "alpha" && ${OSVERSION} < 500035
+IGNORE= "core dumps on alpha during post-build"
+.endif
+
+.if exists(${LOCALBASE}/include/freetype/freetype.h)
+BROKEN="You must upgrade your freetype port to 1.3.1_2 or higher before installing Mozilla. If you have 1.3.1_2 installed, please remove ${LOCALBASE}/include/freetype, then build Mozilla"
+.endif
+
+pre-everything::
+.if defined(WITH_CALENDAR)
+ @${ECHO_MSG} ""
+ @${ECHO_MSG} "Calendar is still beta software."
+ @${ECHO_MSG} "Use at your own risk."
+ @${ECHO_MSG} "http://mozilla.org/projects/calendar/"
+ @${ECHO_MSG} ""
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/run-mozilla.sh
+ @${REINPLACE_CMD} -e 's|%%MOZILLA%%|${MOZILLA}|g' \
+ -e 's|%%HEADERS_SUFX%%|${MOZ_SUFX}|g' \
+ ${WRKSRC}/config/autoconf.mk.in
+ @${FIND} ${WRKSRC}/other-licenses/libical -name "*.c" | ${XARGS} \
+ ${REINPLACE_CMD} 's|<malloc.h>|<stdlib.h>|g'
+ @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \
+ s|-lpthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/nsprpub/configure
+ @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g' \
+ ${WRKSRC}/nsprpub/configure \
+ ${WRKSRC}/security/coreconf/FreeBSD.mk \
+ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \
+ ${WRKSRC}/js/src/Makefile.in
+ @${REINPLACE_CMD} -E -e 's|libesd\.so\.[0-9]+|${ESD_LIB}|g' \
+ ${WRKSRC}/widget/src/gtk2/nsSound.cpp
+ @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.no|g' \
+ ${WRKSRC}/gfx/src/gtk/nsDeviceContextSpecG.cpp
+ @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/' \
+ ${WRKSRC}/modules/libpref/src/init/all.js
+ @${REINPLACE_CMD} -e 's|<iconv.h>|\"${LOCALBASE}/include/iconv.h\"|g' \
+ ${WRKSRC}/configure \
+ ${WRKSRC}/intl/uconv/native/nsNativeUConvService.cpp \
+ ${WRKSRC}/xpcom/io/nsNativeCharsetUtils.cpp
+ @${REINPLACE_CMD} -E -e 's|libfreetype\.so\.[0-9]+|${FREETYPE_LIB}|g' \
+ ${WRKSRC}/modules/libpref/src/init/all.js
+ @for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|mozilla-xpcom|mozilla-xpcom${MOZ_SUFX}${PKGNAMESUFFIX}|g ; \
+ s|mozilla-nspr|mozilla-nspr${MOZ_SUFX}${PKGNAMESUFFIX}|g' \
+ ${WRKSRC}/build/unix/$${pcfile}.pc.in; \
+ done
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g ; \
+ s|%%PREFIX%%|${PREFIX}|g' \
+ < ${MASTERDIR}/pkg-install.in > ${PKGINSTALL}
+ @${SED} -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g' \
+ < ${MASTERDIR}/pkg-deinstall.in > ${PKGDEINSTALL}
+ @${SED} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ < ${FILESDIR}/mozilla.desktop.in > \
+ ${WRKDIR}/mozilla.desktop
+
+pre-configure:
+ @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \
+ ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \
+ ${FALSE}; \
+ fi
+
+post-build:
+ ${SED} -e "s|%%PREFIX%%|${PREFIX}|g" -e "s|%%MOZILLA%%|${MOZILLA}|g" \
+ ${FILESDIR}/mozilla.sh >${WRKSRC}/${MOZILLA}
+
+pre-install:
+ ${RM} -rf ${FAKEDIR} ${PLIST}
+ ${TOUCH} -f ${PLIST}
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
+ Makefile ${MAKE_ARGS} install
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g' \
+ ${FAKEDIR}/bin/mozilla \
+ ${FAKEDIR}/bin/mozilla-config
+ if [ ! -x ${PREFIX}/bin/mozilla -a ! -L ${PREFIX}/bin/mozilla ]; then \
+ ${ECHO_CMD} bin/mozilla >> ${PLIST} ; \
+ fi
+ if [ "${MOZILLA}" != "mozilla" ]; then \
+ ${ECHO_CMD} bin/${MOZILLA} >> ${PLIST} ; \
+ fi
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${ECHO_CMD} lib/browser_plugins/libjavaplugin_oji.so >> ${PLIST} ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ ${ECHO_CMD} lib/browser_plugins/.${PORTNAME}.keep >> ${PLIST}
+ ${ECHO_CMD} "@unexec ${RMDIR} %D/lib/browser_plugins 2>/dev/null || ${TRUE}" >> ${PLIST}
+ ${ECHO_CMD} lib/${MOZILLA}/mozilla >> ${PLIST}
+ ${ECHO_CMD} lib/${MOZILLA}/mozilla-config >> ${PLIST}
+.if !defined(WITHOUT_MAILNEWS)
+ @${CP} -RL ${WRKSRC}/dist/bin/defaults/isp ${FAKEDIR}/lib/${MOZILLA}/defaults
+.endif
+.if defined(WITH_MENU_ENTRY)
+ ${ECHO_CMD} share/gnome/applications/mozilla.desktop >> ${PLIST}
+.endif
+ cd ${FAKEDIR}/lib/${MOZILLA} && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's:^:lib/${MOZILLA}/:' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's:^:@dirrm lib/${MOZILLA}/:' >> ${PLIST}
+ ${ECHO_CMD} @dirrm lib/${MOZILLA} >> ${PLIST}
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${ECHO_CMD} libdata/pkgconfig/$${pcfile}${MOZ_SUFX}${PKGNAMESUFFIX}.pc >> ${PLIST} ; \
+ done
+ cd ${FAKEDIR}/include/mozilla && ${FIND} -s * -type f -o -type l | \
+ ${SED} -e 's:^:include/${MOZILLA}/:' >> ${PLIST} \
+ && ${FIND} -d * -type d | \
+ ${SED} -e 's:^:@dirrm include/${MOZILLA}/:' >> ${PLIST}
+ ${ECHO_CMD} @dirrm include/${MOZILLA} >> ${PLIST}
+
+do-install:
+ ${MKDIR} ${PREFIX}/lib/${MOZILLA}
+ ${CHMOD} 755 ${PREFIX}/lib/${MOZILLA}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/mozilla ${PREFIX}/lib/${MOZILLA}
+ ${INSTALL_SCRIPT} ${FAKEDIR}/bin/mozilla-config ${PREFIX}/lib/${MOZILLA}
+ cd ${FAKEDIR}/lib/${MOZILLA} && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/lib/${MOZILLA}
+ ${INSTALL_SCRIPT} ${WRKSRC}/${MOZILLA} ${PREFIX}/bin
+ if [ ! -x ${PREFIX}/bin/mozilla -a ! -L ${PREFIX}/bin/mozilla ]; then \
+ ${LN} -sf ${PREFIX}/bin/${MOZILLA} ${PREFIX}/bin/mozilla ; \
+ fi
+ if [ ! -d ${PREFIX}/lib/browser_plugins ]; then \
+ ${MKDIR} ${PREFIX}/lib/browser_plugins ; \
+ fi
+ ${TOUCH} -f ${PREFIX}/lib/browser_plugins/.${PORTNAME}.keep
+ if [ ! -L ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ]; then \
+ for jpi in ${JPI_LIST}; do \
+ if [ -f $${jpi} ]; then \
+ ${LN} -sf $${jpi} \
+ ${PREFIX}/lib/browser_plugins/libjavaplugin_oji.so ; \
+ break; \
+ fi; \
+ done; \
+ fi
+ for pcfile in ${PKGCONFIG_FILES}; do \
+ ${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g' \
+ ${WRKSRC}/build/unix/$${pcfile}.pc; \
+ ${INSTALL_DATA} ${WRKSRC}/build/unix/$${pcfile}.pc \
+ ${PREFIX}/libdata/pkgconfig/$${pcfile}${MOZ_SUFX}${PKGNAMESUFFIX}.pc ; \
+ done
+ -${RM} -fr ${PREFIX}/include/${MOZILLA}
+ ${MKDIR} ${PREFIX}/include/${MOZILLA}
+ ${CHMOD} 755 ${PREFIX}/include/${MOZILLA}
+ cd ${FAKEDIR}/include/mozilla && ${FIND} . | \
+ ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/include/${MOZILLA}
+.if defined(WITH_MENU_ENTRY)
+ ${MKDIR} ${PREFIX}/share/gnome/applications
+ ${INSTALL_DATA} ${WRKDIR}/mozilla.desktop \
+ ${PREFIX}/share/gnome/applications
+.endif
+
+post-install:
+ @${CHMOD} -R u-w ${PREFIX}/lib/${MOZILLA}/components
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/www/seamonkey/distinfo b/www/seamonkey/distinfo
new file mode 100644
index 000000000..a8ffe6243
--- /dev/null
+++ b/www/seamonkey/distinfo
@@ -0,0 +1,2 @@
+MD5 (mozilla-source-1.7.5.tar.bz2) = e5994f3e801cd834966367c6a12f8aeb
+SIZE (mozilla-source-1.7.5.tar.bz2) = 30440393
diff --git a/www/seamonkey/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp b/www/seamonkey/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp
new file mode 100644
index 000000000..758c0146c
--- /dev/null
+++ b/www/seamonkey/files/extra-patch-nsSVGLibartGlyphMetricsFT.cpp
@@ -0,0 +1,88 @@
+--- layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp.orig Wed Mar 2 12:36:59 2005
++++ layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp Wed Mar 2 12:36:37 2005
+@@ -56,6 +56,13 @@
+ #include "nsArray.h"
+ #include "nsDataHashtable.h"
+
++
++#ifdef HAVE_CPP_2BYTE_WCHAR_T
++ typedef nsDependentString nsLiteralString;
++#else
++ typedef NS_ConvertASCIItoUTF16 nsLiteralString;
++#endif
++
+ /**
+ * \addtogroup libart_renderer Libart Rendering Engine
+ * @{
+@@ -112,7 +119,7 @@
+ nsCOMPtr<nsISVGGlyphMetricsSource> mSource;
+
+ public:
+- static nsDataHashtable<nsStringHashKey,nsDependentString*> sFontAliases;
++ static nsDataHashtable<nsStringHashKey,nsLiteralString*> sFontAliases;
+ };
+
+ /** @} */
+@@ -120,7 +127,7 @@
+ //----------------------------------------------------------------------
+ // nsSVGLibartGlyphMetricsFT implementation:
+
+-nsDataHashtable<nsStringHashKey,nsDependentString*>
++nsDataHashtable<nsStringHashKey,nsLiteralString*>
+ nsSVGLibartGlyphMetricsFT::sFontAliases;
+
+
+@@ -155,15 +162,15 @@
+
+ static NS_NAMED_LITERAL_STRING(arial, "arial");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("helvetica"),
+- &arial);
++ (nsLiteralString *)&arial);
+
+ static NS_NAMED_LITERAL_STRING(courier, "courier new");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("courier"),
+- &courier);
++ (nsLiteralString *)&courier);
+
+ static NS_NAMED_LITERAL_STRING(times, "times new roman");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("times"),
+- &times);
++ (nsLiteralString *)&times);
+ }
+
+ void NS_FreeSVGLibartGlyphMetricsFTGlobals()
+@@ -406,7 +413,7 @@
+ }
+ else {
+ // try alias if there is one:
+- nsDependentString *alias = nsnull;
++ nsLiteralString *alias = nsnull;
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Get(NS_ConvertUTF8toUCS2(family_name),
+ &alias);
+ if (alias) {
+@@ -440,19 +447,19 @@
+ return;
+ }
+
+- FTC_Image_Desc imageDesc;
+- imageDesc.font.face_id=(void*)font_data.font_entry.get(); // XXX do we need to addref?
++ FTC_ImageType imageDesc;
++ imageDesc->face_id = (FTC_FaceID)font_data.font_entry.get(); // XXX do we need to addref?
+ float twipstopixel = GetTwipsToPixels();
+ float scale = GetPixelScale();
+- imageDesc.font.pix_width = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.font.pix_height = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.image_type |= ftc_image_grays;
++ imageDesc->width = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->height = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->flags = 0;
+
+ // get the face
+ nsresult rv;
+ FTC_Manager mgr;
+ nsSVGLibartFreetype::ft2->GetFTCacheManager(&mgr);
+- rv = nsSVGLibartFreetype::ft2->ManagerLookupSize(mgr, &imageDesc.font, &mFace, nsnull);
++ rv = nsSVGLibartFreetype::ft2->ManagerLookupFace(mgr, imageDesc->face_id, &mFace);
+ NS_ASSERTION(mFace, "failed to get face/size");
+ }
+
diff --git a/www/seamonkey/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp b/www/seamonkey/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp
new file mode 100644
index 000000000..84392bd4a
--- /dev/null
+++ b/www/seamonkey/files/extra-patch2-nsSVGLibartGlyphMetricsFT.cpp
@@ -0,0 +1,50 @@
+$NetBSD: patch-by,v 1.2 2004/07/05 14:22:42 taya Exp $
+
+diff -ru ../Orig/mozilla/layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp ./layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp
+--- ../Orig/mozilla/layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp 2004-03-19 10:36:16.000000000 +0900
++++ ./layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp 2004-07-04 22:59:19.000000000 +0900
+@@ -155,15 +155,15 @@
+
+ static NS_NAMED_LITERAL_STRING(arial, "arial");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("helvetica"),
+- &arial);
++ (nsDependentString *)&arial);
+
+ static NS_NAMED_LITERAL_STRING(courier, "courier new");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("courier"),
+- &courier);
++ (nsDependentString *)&courier);
+
+ static NS_NAMED_LITERAL_STRING(times, "times new roman");
+ nsSVGLibartGlyphMetricsFT::sFontAliases.Put(NS_LITERAL_STRING("times"),
+- &times);
++ (nsDependentString *)&times);
+ }
+
+ void NS_FreeSVGLibartGlyphMetricsFTGlobals()
+@@ -440,19 +440,19 @@
+ return;
+ }
+
+- FTC_Image_Desc imageDesc;
+- imageDesc.font.face_id=(void*)font_data.font_entry.get(); // XXX do we need to addref?
++ FTC_ImageType imageDesc;
++ imageDesc->face_id = (FTC_FaceID)font_data.font_entry.get(); // XXX do we need to addref?
+ float twipstopixel = GetTwipsToPixels();
+ float scale = GetPixelScale();
+- imageDesc.font.pix_width = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.font.pix_height = (int)((float)(font_data.font.size)*twipstopixel/scale);
+- imageDesc.image_type |= ftc_image_grays;
++ imageDesc->width = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->height = (int)((float)(font_data.font.size)*twipstopixel/scale);
++ imageDesc->flags = 0;
+
+ // get the face
+ nsresult rv;
+ FTC_Manager mgr;
+ nsSVGLibartFreetype::ft2->GetFTCacheManager(&mgr);
+- rv = nsSVGLibartFreetype::ft2->ManagerLookupSize(mgr, &imageDesc.font, &mFace, nsnull);
++ rv = nsSVGLibartFreetype::ft2->ManagerLookupFace(mgr, imageDesc->face_id, &mFace);
+ NS_ASSERTION(mFace, "failed to get face/size");
+ }
+
diff --git a/www/seamonkey/files/mozilla.desktop.in b/www/seamonkey/files/mozilla.desktop.in
new file mode 100644
index 000000000..2c0e68dab
--- /dev/null
+++ b/www/seamonkey/files/mozilla.desktop.in
@@ -0,0 +1,169 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Mozilla Web Browser
+Name[az]=Mozilla Veb Səyyahı
+Name[bg]=Интернет браузър (Mozilla)
+Name[bs]=Mozilla web preglednik
+Name[ca]=Navegador web Mozilla
+Name[cs]=Prohlížeč WWW Mozilla
+Name[cy]=Y Porwr Gwe Mozilla
+Name[da]=Mozilla - internetbrowser
+Name[de]=Mozilla Webbrowser
+Name[el]=Περιηγητής Διαδικτύου Mozilla
+Name[en_CA]=Mozilla Web Browser
+Name[en_GB]=Mozilla Web Browser
+Name[es]=Navegador Web Mozilla
+Name[et]=Mozilla veebibrauser
+Name[eu]=Mozilla web arakatzailea
+Name[fa]=مرورگر وب Mozilla
+Name[fi]=Mozilla, WWW-selain
+Name[fr]=Navigateur Web Mozilla
+Name[ga]=Brabhsálaí Lín Mozilla
+Name[he]=דפדפן Mozilla
+Name[hr]=Mozilla Web preglednik
+Name[hu]=Mozilla webböngésző
+Name[id]=Web Browser Mozilla
+Name[it]=Browser web Mozilla
+Name[ja]=Mozilla ウェブ・ブラウザ
+Name[ko]=Mozilla 웹 브라우저
+Name[li]=Mozilla Web Browser
+Name[lt]=Mozilla web naršyklė
+Name[mk]=Mozilla Веб Прелистувач
+Name[mn]=Mozilla веб хөтөч
+Name[ms]=Pelungsur Web Mozilla
+Name[nb]=Mozilla nettleser
+Name[nl]=Mozilla webbrowser
+Name[nn]=Mozilla nettlesar
+Name[no]=Mozilla nettleser
+Name[pl]=Przeglądarka WWW Mozilla
+Name[pt]=Navegador Web Mozilla
+Name[pt_BR]=Navegador Web Mozilla
+Name[ro]=Navigatorul Mozilla
+Name[sl]=Spletni brskalnik Mozilla
+Name[sq]=Mozilla - Shfletuesi Web
+Name[sv]=Webbläsaren Mozilla
+Name[tk]=Mozilla Web Ahtarçisi
+Name[tr]=Mozilla Web Tarayıcı
+Name[uk]=Переглядач web Mozilla
+Name[vi]=Trình Duyệt Web Mozilla
+Name[wa]=Betchteu waibe mozilla
+Name[zh_CN]=Mozilla Web 浏览器
+Name[zh_TW]=Mozilla 網頁瀏覽器
+GenericName=Mozilla Web Browser
+GenericName[az]=Mozilla Veb Səyyahı
+GenericName[bg]=Интернет браузър (Mozilla)
+GenericName[bs]=Mozilla web preglednik
+GenericName[ca]=Navegador web Mozilla
+GenericName[cs]=Prohlížeč WWW Mozilla
+GenericName[cy]=Y Porwr Gwe Mozilla
+GenericName[da]=Mozilla - internetbrowser
+GenericName[de]=Mozilla Webbrowser
+GenericName[el]=Περιηγητής Διαδικτύου Mozilla
+GenericName[en_CA]=Mozilla Web Browser
+GenericName[en_GB]=Mozilla Web Browser
+GenericName[es]=Navegador Web Mozilla
+GenericName[et]=Mozilla veebibrauser
+GenericName[eu]=Mozilla web arakatzailea
+GenericName[fa]=مرورگر وب Mozilla
+GenericName[fi]=Mozilla, WWW-selain
+GenericName[fr]=Navigateur Web Mozilla
+GenericName[ga]=Brabhsálaí Lín Mozilla
+GenericName[he]=דפדפן Mozilla
+GenericName[hr]=Mozilla Web preglednik
+GenericName[hu]=Mozilla webböngésző
+GenericName[id]=Web Browser Mozilla
+GenericName[it]=Browser web Mozilla
+GenericName[ja]=Mozilla ウェブ・ブラウザ
+GenericName[ko]=Mozilla 웹 브라우저
+GenericName[li]=Mozilla Web Browser
+GenericName[lt]=Mozilla web naršyklė
+GenericName[mk]=Mozilla Веб Прелистувач
+GenericName[mn]=Mozilla веб хөтөч
+GenericName[ms]=Pelungsur Web Mozilla
+GenericName[nb]=Mozilla nettleser
+GenericName[nl]=Mozilla webbrowser
+GenericName[nn]=Mozilla nettlesar
+GenericName[no]=Mozilla nettleser
+GenericName[pl]=Przeglądarka WWW Mozilla
+GenericName[pt]=Navegador Web Mozilla
+GenericName[pt_BR]=Navegador Web Mozilla
+GenericName[ro]=Navigatorul Mozilla
+GenericName[sl]=Spletni brskalnik Mozilla
+GenericName[sq]=Mozilla - Shfletuesi Web
+GenericName[sv]=Webbläsaren Mozilla
+GenericName[tk]=Mozilla Web Ahtarçisi
+GenericName[tr]=Mozilla Web Tarayıcı
+GenericName[uk]=Переглядач web Mozilla
+GenericName[vi]=Trình Duyệt Web Mozilla
+GenericName[wa]=Betchteu waibe mozilla
+GenericName[zh_CN]=Mozilla Web 浏览器
+GenericName[zh_TW]=Mozilla 網頁瀏覽器
+Comment=Browse the web
+Comment[ar]=تصفح الانترنت
+Comment[az]=Vebi gəzin
+Comment[be]=Вандраваць па павуціньню
+Comment[bg]=Сърфиране в интернет
+Comment[bn]=ওয়েব ব্রাউজ করুন
+Comment[bs]=Pregledaj na internetu
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížet WWW
+Comment[cy]=Pori'r we
+Comment[da]=Benyt internettet
+Comment[de]=Im Web surfen
+Comment[el]=Περιήγηση στον παγκόσμιο ιστό
+Comment[en_CA]=Browse the web
+Comment[en_GB]=Browse the web
+Comment[es]=Navegar por la web
+Comment[et]=Sirvi veebi
+Comment[eu]=Arakatu web-a
+Comment[fa]=مرور وب
+Comment[fi]=Selaa WWW:tä
+Comment[fr]=Naviguer sur Internet
+Comment[ga]=Brabhsáil an Líon
+Comment[gu]=વેબમાં શોધો
+Comment[he]=גלוש ברשת
+Comment[hi]=वेब ब्राउज़ करें
+Comment[hr]=Pregledaj Web
+Comment[hu]=A világháló böngészése
+Comment[id]=Jelajah web
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[li]=Blajere op internet
+Comment[lt]=Naršyti internete
+Comment[mk]=Прелистувајте го вебот
+Comment[ml]=വലക്കെട്ട് തിരയുക
+Comment[mn]=Веб броузе хийх
+Comment[ms]=Layari web
+Comment[nb]=Surf på nettet
+Comment[nl]=Websurfen
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pa]=ਵੈਬ ਬਰਾਊਜ਼
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegar na web
+Comment[pt_BR]=Navegar na web
+Comment[ro]=Navigare Internet
+Comment[ru]=Программа для просмотра веб-страниц
+Comment[sk]=Prehliadať internet
+Comment[sl]=Brskaj po spletu
+Comment[sq]=Eksploro web-in
+Comment[sr]=Прегледај веб
+Comment[sr@Latn]=Pregledaj veb
+Comment[sv]=Surfa på nätet
+Comment[ta]=வலையில் உலாவு
+Comment[th]=ใช้งานเว็บบราวเซอร์ Mozilla
+Comment[tk]=Webi Ahtar
+Comment[tr]=Web'e Gözat
+Comment[uk]=Програма перегляду web-сторінок
+Comment[vi]=Duyệt web
+Comment[wa]=Naivyî avå les waibes
+Comment[zh_CN]=浏览 Web
+Comment[zh_TW]=瀏覽網頁
+Exec=mozilla %U
+StartupNotify=true
+Terminal=false
+Type=Application
+Icon=%%PREFIX%%/lib/mozilla/chrome/icons/default/default.xpm
+Categories=Application;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;
diff --git a/www/seamonkey/files/mozilla.sh b/www/seamonkey/files/mozilla.sh
new file mode 100644
index 000000000..870b74e8c
--- /dev/null
+++ b/www/seamonkey/files/mozilla.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+MOZILLA_DIR="%%PREFIX%%/lib/%%MOZILLA%%"
+MOZILLA_EXEC="./mozilla"
+MOZILLA_REMOTE_EXEC="${MOZILLA_EXEC} -remote"
+APPLICATION_ID="mozilla"
+
+LOCATION='new-tab'
+#MOZILLA_UILOCALE="en-US"
+#MOZILLA_UIREGION="US"
+#MOZILLA_DSP="auto"
+
+cd $MOZILLA_DIR || exit 1
+
+# LANG, MOZILLA_UILOCALE, MOZILLA_UIREGION
+if [ -n "$LANG" -a ! -n "${MOZILLA_UILOCALE}" ]; then
+ _locale="${LANG%%.*}"
+ if [ "${_locale}" != "en_US" -a "${_locale}" != "C" ]; then
+ _region="${_locale##*_}"
+ _locale="${_locale%_*}"
+ [ -r chrome/${_locale}-${_region}.jar ] && \
+ MOZILLA_EXEC="${MOZILLA_EXEC} -UILocale ${_locale}-${_region}"
+ fi
+elif [ -n "${MOZILLA_UILOCALE}" ]; then
+ MOZILLA_EXEC="${MOZILLA_EXEC} -UILocale ${MOZILLA_UILOCALE}"
+ if [ -n "${MOZILLA_UIREGION}" ]; then
+ MOZILLA_EXEC="${MOZILLA_EXEC} -UIRegion ${MOZILLA_UIREGION}"
+ fi
+fi
+
+# find a /dev/dsp handler
+case "${MOZILLA_DSP}" in
+# [Ee][Ss][Dd]|esddsp) # Use the esd dsp wrapper
+# MOZILLA_DSP="esddsp"
+# ;;
+ [Aa][Rr][Tt][Ss]|artsdsp) # Use the arts dsp wrapper
+ MOZILLA_DSP="artsdsp"
+ ;;
+ [Nn][Oo][Nn][Ee]) # Direct dsp output
+ MOZILLA_DSP=""
+ ;;
+ *) # Guest one (auto)
+ if [ -n "${KDE_FULL_SESSION}" ]; then
+ MOZILLA_DSP="artsdsp"
+# elif [ -r ${HOME}/.esd_auth ]; then
+# MOZILLA_DSP="esddsp"
+ else
+ MOZILLA_DSP=""
+ fi
+ ;;
+esac
+
+if [ -n "${MOZILLA_DSP}" ] && type "${MOZILLA_DSP}" > /dev/null 2>&1; then
+ MOZILLA_EXEC="${MOZILLA_DSP} ${MOZILLA_EXEC}"
+fi
+
+case $1 in
+ -browser)
+ REMOTE_COMMAND="xfeDoCommand (openBrowser)"
+ ;;
+ -mail)
+ REMOTE_COMMAND="xfeDoCommand (openInbox)"
+ ;;
+ -compose)
+ REMOTE_COMMAND="xfeDoCommand (composeMessage)"
+ ;;
+ -*)
+ exec ${MOZILLA_EXEC} "$@"
+ ;;
+ *)
+ if [ -n "${LOCATION}" ]; then
+ REMOTE_COMMAND="openURL($@,$LOCATION)"
+ else
+ REMOTE_COMMAND="openURL($@)"
+ fi
+ ;;
+esac
+
+# process found
+${MOZILLA_REMOTE_EXEC} "ping()" >/dev/null 2>&1 &&
+${MOZILLA_REMOTE_EXEC} "${REMOTE_COMMAND}" && exit 0
+
+# no existing process
+exec ${MOZILLA_EXEC} "$@"
+
diff --git a/www/seamonkey/files/patch-Double.cpp b/www/seamonkey/files/patch-Double.cpp
new file mode 100644
index 000000000..5cd13e4ff
--- /dev/null
+++ b/www/seamonkey/files/patch-Double.cpp
@@ -0,0 +1,59 @@
+--- extensions/transformiix/source/base/Double.cpp.orig Thu Jan 30 09:26:46 2003
++++ extensions/transformiix/source/base/Double.cpp Sun Nov 16 01:46:42 2003
+@@ -51,10 +51,10 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
+-fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+-#else
++#if defined(__i386__)
+ fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
++#else
++fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #endif
+ fp_except_t oldmask = fpsetmask(~allmask);
+ #endif
+@@ -75,22 +75,31 @@
+ #define TX_DOUBLE_HI32_EXPMASK 0x7ff00000
+ #define TX_DOUBLE_HI32_MANTMASK 0x000fffff
+
++union ui32dun {
++ PRUint32 i[2];
++ double d;
++};
++
+ //-- Initialize Double related constants
+ #ifdef IS_BIG_ENDIAN
+-const PRUint32 nanMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+- 0xffffffff};
+-const PRUint32 infMask[2] = {TX_DOUBLE_HI32_EXPMASK, 0};
+-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
++const union ui32dun nanMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK, 0xffffffff}};
++const union ui32dun infMask =
++ {{TX_DOUBLE_HI32_EXPMASK, 0}};
++const union ui32dun negInfMask =
++ {{TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0}};
+ #else
+-const PRUint32 nanMask[2] = {0xffffffff,
+- TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
+-const PRUint32 infMask[2] = {0, TX_DOUBLE_HI32_EXPMASK};
+-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
++const union ui32dun nanMask =
++ {{0xffffffff, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK}};
++const union ui32dun infMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK}};
++const union ui32dun negInfMask =
++ {{0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT}};
+ #endif
+
+-const double Double::NaN = *((double*)nanMask);
+-const double Double::POSITIVE_INFINITY = *((double*)infMask);
+-const double Double::NEGATIVE_INFINITY = *((double*)negInfMask);
++const double Double::NaN = nanMask.d;
++const double Double::POSITIVE_INFINITY = infMask.d;
++const double Double::NEGATIVE_INFINITY = negInfMask.d;
+
+ /*
+ * Determines whether the given double represents positive or negative
diff --git a/www/seamonkey/files/patch-Makefile.in b/www/seamonkey/files/patch-Makefile.in
new file mode 100644
index 000000000..5480cb799
--- /dev/null
+++ b/www/seamonkey/files/patch-Makefile.in
@@ -0,0 +1,22 @@
+--- Makefile.in.orig Fri Aug 29 20:20:58 2003
++++ Makefile.in Sat Oct 18 15:34:15 2003
+@@ -67,8 +67,7 @@
+ $(tier_2_dirs) \
+ $(tier_9_dirs) \
+ $(tier_40_dirs) \
+- $(tier_50_dirs) \
+- $(NULL)
++ $(tier_50_dirs)
+
+ ifdef GC_LEAK_DETECTOR
+ DIRS += gc/boehm
+@@ -87,7 +86,8 @@
+ DIRS += $(tier_98_dirs)
+ endif
+
+-DIRS += $(tier_99_dirs)
++DIRS += $(tier_99_dirs) \
++ $(NULL)
+
+ #
+ # tier 0 - base build config dirs
diff --git a/www/seamonkey/files/patch-bugzilla149334 b/www/seamonkey/files/patch-bugzilla149334
new file mode 100644
index 000000000..fe1be5bc8
--- /dev/null
+++ b/www/seamonkey/files/patch-bugzilla149334
@@ -0,0 +1,342 @@
+Index: gfx/idl/nsIFreeType2.idl
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/idl/nsIFreeType2.idl,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsIFreeType2.idl
+--- gfx/idl/nsIFreeType2.idl 15 Apr 2004 23:30:02 -0000 1.10
++++ gfx/idl/nsIFreeType2.idl 26 May 2004 10:00:54 -0000
+@@ -76,10 +76,11 @@ native FT_Pointer(FT_Pointer);
+ native FT_Sfnt_Tag(FT_Sfnt_Tag);
+ native FT_Size(FT_Size);
+
+-[ptr] native FTC_Image_Desc_p(FTC_Image_Desc);
++[ptr] native FTC_ImageType_p(FTC_ImageType);
+ native FTC_Face_Requester(FTC_Face_Requester);
+ native FTC_Font(FTC_Font);
+-native FTC_Image_Cache(FTC_Image_Cache);
++native FTC_FaceID(FTC_FaceID);
++native FTC_ImageCache(FTC_ImageCache);
+ native FTC_Manager(FTC_Manager);
+
+ // #ifdef MOZ_SVG
+@@ -99,7 +100,7 @@ interface nsIFreeType2 : nsISupports
+
+ readonly attribute FT_Library library;
+ readonly attribute FTC_Manager FTCacheManager;
+- readonly attribute FTC_Image_Cache ImageCache;
++ readonly attribute FTC_ImageCache ImageCache;
+
+ void doneFace(in FT_Face face);
+ void doneFreeType(in FT_Library lib);
+@@ -115,16 +116,16 @@ interface nsIFreeType2 : nsISupports
+ void outlineDecompose(in FT_Outline_p outline,
+ in const_FT_Outline_Funcs_p funcs, in voidPtr p);
+ void setCharmap(in FT_Face face, in FT_CharMap charmap);
+- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
++ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
+ in FT_UInt gindex, out FT_Glyph glyph);
+- void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
+- out FT_Face face, out FT_Size size);
++ void managerLookupFace(in FTC_Manager manager, in FTC_FaceID face_id,
++ out FT_Face face);
+ void managerDone(in FTC_Manager manager);
+ void managerNew(in FT_Library lib, in FT_UInt max_faces,
+ in FT_UInt max_sizes, in FT_ULong max_bytes,
+ in FTC_Face_Requester requester, in FT_Pointer req_data,
+ out FTC_Manager manager);
+- void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
++ void imageCacheNew(in FTC_Manager manager, out FTC_ImageCache cache);
+ /* #ifdef MOZ_SVG */
+ void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
+ in FT_Vector_p delta);
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 17 Apr 2004 21:52:29 -0000 1.25
++++ gfx/src/freetype/nsFreeType.cpp 26 May 2004 10:00:54 -0000
+@@ -110,11 +110,11 @@ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
+ {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
+ {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
+- {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
+- {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
++ {"FTC_ImageCache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
++ {"FTC_Manager_LookupFace", NS_FT2_OFFSET(nsFTC_Manager_LookupFace), PR_TRUE},
+ {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
+ {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
+- {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
++ {"FTC_ImageCache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
+ // #ifdef MOZ_SVG
+ {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
+ {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
+@@ -282,7 +282,7 @@ nsFreeType2::SetCharmap(FT_Face face, FT
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
++nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
+ FT_UInt glyphID, FT_Glyph *glyph)
+ {
+ // call the FreeType2 function via the function pointer
+@@ -291,11 +291,11 @@ nsFreeType2::ImageCacheLookup(FTC_Image_
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
+- FT_Face *face, FT_Size *size)
++nsFreeType2::ManagerLookupFace(FTC_Manager manager, FTC_FaceID face_id,
++ FT_Face *face)
+ {
+ // call the FreeType2 function via the function pointer
+- FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
++ FT_Error error = nsFTC_Manager_LookupFace(manager, face_id, face);
+ return error ? NS_ERROR_FAILURE : NS_OK;
+ }
+
+@@ -320,7 +320,7 @@ nsFreeType2::ManagerNew(FT_Library libra
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
++nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_ImageCache *cache)
+ {
+ // call the FreeType2 function via the function pointer
+ FT_Error error = nsFTC_Image_Cache_New(manager, cache);
+@@ -389,7 +389,7 @@ nsFreeType2::SupportsExtFunc(PRBool *res
+ }
+
+ NS_IMETHODIMP
+-nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
++nsFreeType2::GetImageCache(FTC_ImageCache *aCache)
+ {
+ *aCache = mImageCache;
+ return NS_OK;
+Index: gfx/src/freetype/nsFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.h,v
+retrieving revision 1.17
+diff -u -3 -p -r1.17 nsFreeType.h
+--- gfx/src/freetype/nsFreeType.h 17 Apr 2004 21:52:29 -0000 1.17
++++ gfx/src/freetype/nsFreeType.h 26 May 2004 10:00:54 -0000
+@@ -120,13 +120,13 @@ typedef FT_Error (*FT_Outline_Decompose_
+ typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
+ typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
+ typedef FT_Error (*FTC_Image_Cache_Lookup_t)
+- (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
+-typedef FT_Error (*FTC_Manager_Lookup_Size_t)
+- (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
++ (FTC_ImageCache, FTC_ImageType*, FT_UInt, FT_Glyph*);
++typedef FT_Error (*FTC_Manager_LookupFace_t)
++ (FTC_Manager, FTC_FaceID, FT_Face*);
+ typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
+ typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
+ FTC_Face_Requester, FT_Pointer, FTC_Manager*);
+-typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
++typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_ImageCache*);
+ // #ifdef MOZ_SVG
+ typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
+ typedef FT_Error (*FT_Get_Kerning_t)
+@@ -181,7 +181,7 @@ protected:
+ FT_Outline_Decompose_t nsFT_Outline_Decompose;
+ FT_Set_Charmap_t nsFT_Set_Charmap;
+ FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
+- FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
++ FTC_Manager_LookupFace_t nsFTC_Manager_LookupFace;
+ FTC_Manager_Done_t nsFTC_Manager_Done;
+ FTC_Manager_New_t nsFTC_Manager_New;
+ FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
+@@ -229,7 +229,7 @@ protected:
+ PRLibrary *mSharedLib;
+ FT_Library mFreeTypeLibrary;
+ FTC_Manager mFTCacheManager;
+- FTC_Image_Cache mImageCache;
++ FTC_ImageCache mImageCache;
+
+ static nsHashtable *sFontFamilies;
+ static nsHashtable *sRange1CharSetNames;
+Index: gfx/src/ps/nsFontMetricsPS.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v
+retrieving revision 1.43
+diff -u -3 -p -r1.43 nsFontMetricsPS.cpp
+--- gfx/src/ps/nsFontMetricsPS.cpp 17 Apr 2004 21:52:31 -0000 1.43
++++ gfx/src/ps/nsFontMetricsPS.cpp 26 May 2004 10:01:03 -0000
+@@ -1140,10 +1140,10 @@ nsFontPSFreeType::Init(nsITrueTypeFontCa
+
+ mPixelSize = NSToIntRound(app2dev * mFont->size);
+
+- mImageDesc.font.face_id = (void*)mEntry;
+- mImageDesc.font.pix_width = mPixelSize;
+- mImageDesc.font.pix_height = mPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
++ mImageDesc->width = mPixelSize;
++ mImageDesc->height = mPixelSize;
++ mImageDesc->flags = 0;
+
+ nsresult rv;
+ mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
+@@ -1189,7 +1189,7 @@ nsFontPSFreeType::GetWidth(const PRUnich
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache iCache;
++ FTC_ImageCache iCache;
+ nsresult rv = mFt2->GetImageCache(&iCache);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Failed to get Image Cache");
+@@ -1227,8 +1227,8 @@ nsFontPSFreeType::getFTFace()
+
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ NS_ASSERTION(rv==0, "failed to get face/size");
+ if (rv)
+ return nsnull;
+@@ -1621,16 +1621,16 @@ void nsFT2Type8Generator::GeneratePSFont
+ mEntry->GetFamilyName(fontName);
+ mEntry->GetStyleName(styleName);
+
+- mImageDesc.font.face_id = (void*)mEntry;
++ mImageDesc->face_id = (FTC_FaceID)&mEntry;
+ // TT glyph has no relation to size
+- mImageDesc.font.pix_width = 16;
+- mImageDesc.font.pix_height = 16;
+- mImageDesc.image_type = 0;
++ mImageDesc->width = 16;
++ mImageDesc->height = 16;
++ mImageDesc->flags = 0;
+ FT_Face face = nsnull;
+ FTC_Manager cManager;
+ mFt2->GetFTCacheManager(&cManager);
+- nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
+- &face, nsnull);
++ nsresult rv = mFt2->ManagerLookupFace(cManager, mImageDesc->face_id,
++ &face);
+ if (NS_FAILED(rv))
+ return;
+
+Index: gfx/src/ps/nsFontMetricsPS.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v
+retrieving revision 1.25
+diff -u -3 -p -r1.25 nsFontMetricsPS.h
+--- gfx/src/ps/nsFontMetricsPS.h 17 Apr 2004 21:52:31 -0000 1.25
++++ gfx/src/ps/nsFontMetricsPS.h 26 May 2004 10:01:03 -0000
+@@ -319,7 +319,7 @@ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+
+
+ static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
+@@ -362,7 +362,7 @@ public:
+ protected:
+ nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
+ nsCOMPtr<nsIFreeType2> mFt2;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ };
+ #endif
+
+Index: gfx/src/x11shared/nsFontFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.cpp,v
+retrieving revision 1.14
+diff -u -3 -p -r1.14 nsFontFreeType.cpp
+--- gfx/src/x11shared/nsFontFreeType.cpp 17 Apr 2004 21:52:34 -0000 1.14
++++ gfx/src/x11shared/nsFontFreeType.cpp 26 May 2004 10:01:03 -0000
+@@ -177,7 +177,7 @@ nsFreeTypeFont::getFTFace()
+ FTC_Manager mgr;
+ nsresult rv;
+ mFt2->GetFTCacheManager(&mgr);
+- rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
++ rv = mFt2->ManagerLookupFace(mgr, mImageDesc->face_id, &face);
+ NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
+ if (NS_FAILED(rv))
+ return nsnull;
+@@ -191,22 +191,15 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ PRBool embedded_bimap = PR_FALSE;
+ mFaceID = aFaceID;
+ mPixelSize = aPixelSize;
+- mImageDesc.font.face_id = (void*)mFaceID;
+- mImageDesc.font.pix_width = aPixelSize;
+- mImageDesc.font.pix_height = aPixelSize;
+- mImageDesc.image_type = 0;
++ mImageDesc->face_id = (FTC_FaceID)&mFaceID;
++ mImageDesc->width = aPixelSize;
++ mImageDesc->height = aPixelSize;
++ mImageDesc->flags = 0;
+
+ if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
+- mImageDesc.image_type |= ftc_image_mono;
+ anti_alias = PR_FALSE;
+ }
+
+- if (nsFreeType2::gFreeType2Autohinted)
+- mImageDesc.image_type |= ftc_image_flag_autohinted;
+-
+- if (nsFreeType2::gFreeType2Unhinted)
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+-
+ PRUint32 num_embedded_bitmaps, i;
+ PRInt32* embedded_bitmapheights;
+ mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
+@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
+ if (embedded_bitmapheights[i] == aPixelSize) {
+ embedded_bimap = PR_TRUE;
+ // unhinted must be set for embedded bitmaps to be used
+- mImageDesc.image_type |= ftc_image_flag_unhinted;
+ break;
+ }
+ }
+@@ -312,7 +304,7 @@ nsFreeTypeFont::doGetBoundingMetrics(con
+ if (!face)
+ return NS_ERROR_FAILURE;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return NS_ERROR_FAILURE;
+@@ -401,7 +393,7 @@ nsFreeTypeFont::GetWidth(const PRUnichar
+ if (!face)
+ return 0;
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+@@ -723,7 +715,7 @@ nsFreeTypeXImage::DrawString(nsRendering
+ if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
+ #endif
+
+- FTC_Image_Cache icache;
++ FTC_ImageCache icache;
+ mFt2->GetImageCache(&icache);
+ if (!icache)
+ return 0;
+Index: gfx/src/x11shared/nsFontFreeType.h
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/x11shared/nsFontFreeType.h,v
+retrieving revision 1.10
+diff -u -3 -p -r1.10 nsFontFreeType.h
+--- gfx/src/x11shared/nsFontFreeType.h 17 Apr 2004 21:52:34 -0000 1.10
++++ gfx/src/x11shared/nsFontFreeType.h 26 May 2004 10:01:03 -0000
+@@ -110,7 +110,7 @@ protected:
+ XImage *GetXImage(PRUint32 width, PRUint32 height);
+ nsITrueTypeFontCatalogEntry *mFaceID;
+ PRUint16 mPixelSize;
+- FTC_Image_Desc mImageDesc;
++ FTC_ImageType mImageDesc;
+ nsCOMPtr<nsIFreeType2> mFt2;
+ };
+
diff --git a/www/seamonkey/files/patch-build_unix_run-mozilla.sh b/www/seamonkey/files/patch-build_unix_run-mozilla.sh
new file mode 100644
index 000000000..cf08afee8
--- /dev/null
+++ b/www/seamonkey/files/patch-build_unix_run-mozilla.sh
@@ -0,0 +1,23 @@
+$FreeBSD: ports/www/mozilla/files/patch-build_unix_run-mozilla.sh,v 1.5 2004/11/07 22:24:21 marcus Exp $
+
+--- build/unix/run-mozilla.sh.orig Mon Dec 15 12:27:28 2003
++++ build/unix/run-mozilla.sh Wed Feb 11 14:24:17 2004
+@@ -355,7 +355,7 @@
+ fi
+ ##
+ ## Set LD_LIBRARY_PATH
+-LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
++LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:%%PREFIX%%/lib/browser_plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
+ if [ -n "$LD_LIBRARYN32_PATH" ]
+ then
+ LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
+@@ -442,6 +442,9 @@
+ #
+ export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
+ export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
++
++MOZ_PLUGIN_PATH=%%PREFIX%%/lib/browser_plugins
++export MOZ_PLUGIN_PATH
+
+ if [ $moz_debug -eq 1 ]
+ then
diff --git a/www/seamonkey/files/patch-config-mkdepend-imakemdep.h b/www/seamonkey/files/patch-config-mkdepend-imakemdep.h
new file mode 100644
index 000000000..b688e6644
--- /dev/null
+++ b/www/seamonkey/files/patch-config-mkdepend-imakemdep.h
@@ -0,0 +1,10 @@
+--- config/mkdepend/imakemdep.h Fri Sep 4 21:22:25 1998
++++ config/mkdepend/imakemdep.h Thu Oct 16 22:43:25 2003
+@@ -278,4 +278,7 @@
+ "-D__i386__",
+ # endif
++# if defined(__amd64__) || defined(__x86_64__)
++ "-D__amd64__ -D__x86_64__",
++# endif
+ # ifdef __GNUC__
+ "-traditional",
diff --git a/www/seamonkey/files/patch-config::mkdepend::Makefile.in b/www/seamonkey/files/patch-config::mkdepend::Makefile.in
new file mode 100644
index 000000000..bace012a2
--- /dev/null
+++ b/www/seamonkey/files/patch-config::mkdepend::Makefile.in
@@ -0,0 +1,10 @@
+--- config/mkdepend/Makefile.in.orig Sun Dec 12 07:36:57 2004
++++ config/mkdepend/Makefile.in Sun Dec 12 07:37:55 2004
+@@ -57,6 +57,7 @@
+ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\"
++HOST_CFLAGS += $(XCFLAGS)
+
+ ifdef GNU_CC
+ _GCCDIR = $(shell $(CC) -print-file-name=include)
diff --git a/www/seamonkey/files/patch-config::rules.mk b/www/seamonkey/files/patch-config::rules.mk
new file mode 100644
index 000000000..16cb6ae11
--- /dev/null
+++ b/www/seamonkey/files/patch-config::rules.mk
@@ -0,0 +1,14 @@
+--- config/rules.mk.orig Sun May 18 16:10:18 2003
++++ config/rules.mk Sun Jul 20 18:07:26 2003
+@@ -448,7 +448,11 @@
+
+ ifeq ($(OS_ARCH),FreeBSD)
+ ifdef IS_COMPONENT
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
++else
+ EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
++endif
+ endif
+ endif
+
diff --git a/www/seamonkey/files/patch-config_autoconf.mk.in b/www/seamonkey/files/patch-config_autoconf.mk.in
new file mode 100644
index 000000000..9c7c471be
--- /dev/null
+++ b/www/seamonkey/files/patch-config_autoconf.mk.in
@@ -0,0 +1,18 @@
+--- config/autoconf.mk.in.orig Mon Mar 15 22:56:25 2004
++++ config/autoconf.mk.in Fri Mar 19 15:17:50 2004
+@@ -31,13 +31,13 @@
+ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+ bindir = @bindir@
+-includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++includedir = @includedir@/mozilla%%HEADERS_SUFX%%
+ libdir = @libdir@
+ datadir = @datadir@
+ mandir = @mandir@
+ idldir = @datadir@/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+
+-mozappdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++mozappdir = $(libdir)/%%MOZILLA%%
+ mredir = $(libdir)/mre/mre-$(MOZ_APP_VERSION)
+ mrelibdir = $(mredir)/lib
+
diff --git a/www/seamonkey/files/patch-extensions_negotiateauth_Makefile.in b/www/seamonkey/files/patch-extensions_negotiateauth_Makefile.in
new file mode 100644
index 000000000..6c938617f
--- /dev/null
+++ b/www/seamonkey/files/patch-extensions_negotiateauth_Makefile.in
@@ -0,0 +1,20 @@
+--- extensions/negotiateauth/Makefile.in.orig Mon Jul 12 15:18:06 2004
++++ extensions/negotiateauth/Makefile.in Sat Dec 18 16:10:49 2004
+@@ -64,7 +64,6 @@
+ $(NULL)
+
+ EXTRA_DSO_LDOPTS = \
+- $(MOZ_COMPONENT_LIBS) \
+ $(NULL)
+
+ ifneq (,$(GSSAPI_LIBS))
+@@ -81,6 +80,9 @@
+ # to install GSSAPI libraries in order to use the rest of mozilla ;-)
+ FORCE_SHARED_LIB = 1
+ endif
++
++EXTRA_DSO_LDOPTS = \
++ $(MOZ_COMPONENT_LIBS)
+
+ ifeq ($(OS_ARCH),WINNT)
+ LOCAL_INCLUDES = -DUSE_SSPI
diff --git a/www/seamonkey/files/patch-nsprpub-pr-include-md-_pth.h b/www/seamonkey/files/patch-nsprpub-pr-include-md-_pth.h
new file mode 100644
index 000000000..1f8159c70
--- /dev/null
+++ b/www/seamonkey/files/patch-nsprpub-pr-include-md-_pth.h
@@ -0,0 +1,11 @@
+--- nsprpub/pr/include/md/_pth.h.orig Mon Jul 26 07:23:42 2004
++++ nsprpub/pr/include/md/_pth.h Mon Jul 26 07:18:37 2004
+@@ -90,7 +90,7 @@
+ #define _PT_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init
+ #define _PT_PTHREAD_MUTEXATTR_DESTROY pthread_mutexattr_destroy
+ #define _PT_PTHREAD_MUTEX_INIT(m, a) pthread_mutex_init(&(m), &(a))
+-#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (EBUSY == pthread_mutex_trylock(&(m)))
++#define _PT_PTHREAD_MUTEX_IS_LOCKED(m) (0 != pthread_mutex_trylock(&(m)))
+ #if defined(DARWIN)
+ #define _PT_PTHREAD_CONDATTR_INIT(x) 0
+ #else
diff --git a/www/seamonkey/files/patch-nsprpub-pr-src-io-prprf.c b/www/seamonkey/files/patch-nsprpub-pr-src-io-prprf.c
new file mode 100644
index 000000000..f9949d6d9
--- /dev/null
+++ b/www/seamonkey/files/patch-nsprpub-pr-src-io-prprf.c
@@ -0,0 +1,14 @@
+--- nsprpub/pr/src/io/prprf.c.orig Mon Mar 8 22:18:19 2004
++++ nsprpub/pr/src/io/prprf.c Fri Mar 19 15:26:55 2004
+@@ -51,7 +51,10 @@
+ ** Note: on some platforms va_list is defined as an array,
+ ** and requires array notation.
+ */
+-#if (defined(LINUX) && defined(__x86_64__))
++#if defined(__amd64__)
++#include <stdarg.h>
++#define VARARGS_ASSIGN(foo, bar) va_copy((foo), (bar))
++#elif (defined(LINUX) && defined(__x86_64__))
+ #define VARARGS_ASSIGN(foo, bar) __va_copy((foo), (bar))
+ #elif (defined(LINUX) && defined(__powerpc__)) || \
+ (defined(LINUX) && defined(__s390__)) || \
diff --git a/www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.cfg b/www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.cfg
new file mode 100644
index 000000000..b66fea57c
--- /dev/null
+++ b/www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.cfg
@@ -0,0 +1,124 @@
+--- nsprpub/pr/include/md/_freebsd.cfg.orig Sat Nov 15 15:36:12 2003
++++ nsprpub/pr/include/md/_freebsd.cfg Sun Feb 1 13:36:44 2004
+@@ -91,7 +91,7 @@
+ #define PR_ALIGN_OF_DOUBLE 4
+ #define PR_ALIGN_OF_POINTER 4
+
+-#elif defined(__alpha)
++#elif defined(__alpha__)
+
+ #define IS_LITTLE_ENDIAN 1
+ #undef IS_BIG_ENDIAN
+@@ -138,8 +138,7 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
+-#elif defined(__sparc__)
+-
++#elif defined(__sparc64__)
+ #undef IS_LITTLE_ENDIAN
+ #define IS_BIG_ENDIAN 1
+ #define HAVE_LONG_LONG
+@@ -185,6 +184,102 @@
+ #define PR_ALIGN_OF_DOUBLE 8
+ #define PR_ALIGN_OF_POINTER 8
+
++#elif defined(__ia64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#elif defined(__amd64__)
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
++#define HAVE_LONG_LONG
++#define HAVE_ALIGNED_DOUBLES
++#define HAVE_ALIGNED_LONGLONGS
+ #else
+
+ #error "Unknown CPU architecture"
diff --git a/www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.h b/www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.h
new file mode 100644
index 000000000..fca34102f
--- /dev/null
+++ b/www/seamonkey/files/patch-nsprpub::pr::include::md::_freebsd.h
@@ -0,0 +1,13 @@
+--- nsprpub/pr/include/md/_freebsd.h.orig Sat Nov 15 18:36:13 2003
++++ nsprpub/pr/include/md/_freebsd.h Sun Dec 14 11:40:08 2003
+@@ -50,6 +50,10 @@
+ #define _PR_SI_ARCHITECTURE "alpha"
+ #elif defined(__sparc__)
+ #define _PR_SI_ARCHITECTURE "sparc"
++#elif defined(__ia64__)
++#define _PR_SI_ARCHITECTURE "ia64"
++#elif defined(__amd64__)
++#define _PR_SI_ARCHITECTURE "amd64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
diff --git a/www/seamonkey/files/patch-nsprpub::pr::src::pthreads::ptio.c b/www/seamonkey/files/patch-nsprpub::pr::src::pthreads::ptio.c
new file mode 100644
index 000000000..08346f235
--- /dev/null
+++ b/www/seamonkey/files/patch-nsprpub::pr::src::pthreads::ptio.c
@@ -0,0 +1,29 @@
+--- nsprpub/pr/src/pthreads/ptio.c.orig Mon Jul 14 17:59:47 2003
++++ nsprpub/pr/src/pthreads/ptio.c Fri Aug 29 15:39:46 2003
+@@ -189,7 +189,7 @@
+ #endif
+ #endif
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ static PRBool _pr_ipv6_v6only_on_by_default;
+ /* The IPV6_V6ONLY socket option is not defined on Mac OS X 10.1. */
+ #ifndef IPV6_V6ONLY
+@@ -1154,7 +1154,7 @@
+ _pr_stderr = pt_SetMethods(2, PR_DESC_FILE, PR_FALSE, PR_TRUE);
+ PR_ASSERT(_pr_stdin && _pr_stdout && _pr_stderr);
+
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ /* In Mac OS X v10.3 Panther Beta the IPV6_V6ONLY socket option
+ * is turned on by default, contrary to what RFC 3493, Section
+ * 5.3 says. So we have to turn it off. Find out whether we
+@@ -3462,7 +3462,7 @@
+ if (osfd == -1) pt_MapError(_PR_MD_MAP_SOCKET_ERROR, errno);
+ else
+ {
+-#ifdef DARWIN
++#if defined(DARWIN) || defined(FREEBSD)
+ if ((domain == AF_INET6) && _pr_ipv6_v6only_on_by_default)
+ {
+ int on = 0;
diff --git a/www/seamonkey/files/patch-qt b/www/seamonkey/files/patch-qt
new file mode 100644
index 000000000..6b72f3f00
--- /dev/null
+++ b/www/seamonkey/files/patch-qt
@@ -0,0 +1,50 @@
+--- configure.orig Tue Apr 20 21:39:17 2004
++++ configure Thu Apr 29 14:01:52 2004
+@@ -9362,7 +9362,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9368 "configure"
+ #include "confdefs.h"
+@@ -9393,7 +9393,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6
+@@ -9403,7 +9403,7 @@
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_save_LIBS="$LIBS"
+-LIBS="-liconv $LIBS"
++LIBS="-L$LOCALBASE/lib -liconv $LIBS"
+ cat > conftest.$ac_ext <<EOF
+ #line 9409 "configure"
+ #include "confdefs.h"
+@@ -9434,7 +9434,7 @@
+ fi
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+- _ICONV_LIBS="$_ICONV_LIBS -liconv"
++ _ICONV_LIBS="$_ICONV_LIBS -L$LOCALBASE/lib -liconv"
+ else
+ echo "$ac_t""no" 1>&6
+ fi
+@@ -12298,9 +12298,9 @@
+
+
+
+-MOZ_EXTENSIONS_DEFAULT=" cookie wallet content-packs xml-rpc xmlextras help p3p pref transformiix venkman inspector irc universalchardet typeaheadfind webservices spellcheck gnomevfs negotiateauth"
++MOZ_EXTENSIONS_DEFAULT=" cookie wallet content-packs xml-rpc xmlextras help p3p pref transformiix venkman inspector universalchardet typeaheadfind webservices spellcheck gnomevfs negotiateauth"
+
+-MOZ_EXTENSIONS_ALL="$MOZ_EXTENSIONS_DEFAULT xmlterm datetime finger cview layout-debug tasks"
++MOZ_EXTENSIONS_ALL="$MOZ_EXTENSIONS_DEFAULT irc xmlterm datetime finger cview layout-debug tasks"
+
+ # Check whether --enable-extensions or --disable-extensions was given.
+ if test "${enable_extensions+set}" = set; then
diff --git a/www/seamonkey/files/patch-security::coreconf::FreeBSD.mk b/www/seamonkey/files/patch-security::coreconf::FreeBSD.mk
new file mode 100644
index 000000000..5c76b5af5
--- /dev/null
+++ b/www/seamonkey/files/patch-security::coreconf::FreeBSD.mk
@@ -0,0 +1,37 @@
+--- security/coreconf/FreeBSD.mk.orig Wed Mar 26 20:17:25 2003
++++ security/coreconf/FreeBSD.mk Thu Jul 8 12:56:24 2004
+@@ -35,16 +35,18 @@
+
+ include $(CORE_DEPTH)/coreconf/UNIX.mk
+
+-DEFAULT_COMPILER = gcc
+-CC = gcc
+-CCC = g++
++CCC = ${CXX}
+ RANLIB = ranlib
+
+ ifeq ($(OS_TEST),alpha)
+ CPU_ARCH = alpha
+ else
++ifeq ($(OS_TEST),amd64)
++CPU_ARCH = amd64
++else
+ CPU_ARCH = x86
+ endif
++endif
+
+ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
+
+@@ -71,7 +73,11 @@
+ DLL_SUFFIX = so.1.0
+ endif
+
+-MKSHLIB = $(CC) $(DSO_LDOPTS)
++ifneq (,$(filter alpha ia64,$(OS_TEST)))
++MKSHLIB = $(CC) -Wl,-Bsymbolic -lc $(DSO_LDOPTS) -o $@
++else
++MKSHLIB = $(CC) -Wl,-Bsymbolic $(DSO_LDOPTS) -o $@
++endif
+ ifdef MAPFILE
+ # Add LD options to restrict exported symbols to those in the map file
+ endif
diff --git a/www/seamonkey/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp b/www/seamonkey/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
new file mode 100644
index 000000000..7f8e55f53
--- /dev/null
+++ b/www/seamonkey/files/patch-uriloader_exthandler_unix_nsGNOMERegistry.cpp
@@ -0,0 +1,29 @@
+--- uriloader/exthandler/unix/nsGNOMERegistry.cpp.orig Fri Dec 24 04:30:00 2004
++++ uriloader/exthandler/unix/nsGNOMERegistry.cpp Fri Dec 24 04:34:05 2004
+@@ -143,7 +143,7 @@
+ PR_END_MACRO
+
+ // Attempt to open libgconf
+- gconfLib = LoadVersionedLibrary("gconf-2", ".4");
++ gconfLib = PR_LoadLibrary("libgconf-2.so");
+ ENSURE_LIB(gconfLib);
+
+ GET_LIB_FUNCTION(gconf, gconf_client_get_default);
+@@ -151,7 +151,7 @@
+ GET_LIB_FUNCTION(gconf, gconf_client_get_bool);
+
+ // Attempt to open libgnome
+- gnomeLib = LoadVersionedLibrary("gnome-2", ".0");
++ gnomeLib = PR_LoadLibrary("libgnome-2.so");
+ ENSURE_LIB(gnomeLib);
+
+ GET_LIB_FUNCTION(gnome, gnome_url_show);
+@@ -160,7 +160,7 @@
+ GET_LIB_FUNCTION(gnome, gnome_program_get);
+
+ // Attempt to open libgnomevfs
+- vfsLib = LoadVersionedLibrary("gnomevfs-2", ".0");
++ vfsLib = PR_LoadLibrary("libgnomevfs-2.so");
+ ENSURE_LIB(vfsLib);
+
+ GET_LIB_FUNCTION(vfs, gnome_vfs_mime_type_from_name);
diff --git a/www/seamonkey/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc b/www/seamonkey/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc
new file mode 100644
index 000000000..ebe5474ca
--- /dev/null
+++ b/www/seamonkey/files/patch-xpcom::reflect::xptcall::public::xptcstubsdecl.inc
@@ -0,0 +1,11 @@
+--- xpcom/reflect/xptcall/public/xptcstubsdecl.inc.orig Tue Mar 16 03:07:25 2004
++++ xpcom/reflect/xptcall/public/xptcstubsdecl.inc Fri Mar 19 15:58:14 2004
+@@ -8,7 +8,7 @@
+ * 1 is AddRef
+ * 2 is Release
+ */
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ NS_IMETHOD Stub3();
+ NS_IMETHOD Stub4();
+ NS_IMETHOD Stub5();
diff --git a/www/seamonkey/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in b/www/seamonkey/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in
new file mode 100644
index 000000000..dbdc47b6f
--- /dev/null
+++ b/www/seamonkey/files/patch-xpcom::reflect::xptcall::src::md::unix::Makefile.in
@@ -0,0 +1,56 @@
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Thu Aug 14 21:00:23 2003
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Feb 1 14:31:25 2004
+@@ -49,6 +49,9 @@
+ ifeq (86,$(findstring 86,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
+ endif
++ifeq (amd64,$(OS_TEST))
++CPPSRCS := xptcinvoke_amd64_freebsd.cpp xptcstubs_amd64_freebsd.cpp
++endif
+ endif
+ #
+ # New code for Linux, et. al., with gcc
+@@ -59,8 +62,8 @@
+ CPPSRCS := xptcinvoke_gcc_x86_unix.cpp xptcstubs_gcc_x86_unix.cpp
+ endif
+ endif
+-# IA64 Linux
+-ifneq (,$(filter Linux,$(OS_ARCH)))
++# IA64 Linux & FreeBSD
++ifneq (,$(filter Linux FreeBSD,$(OS_ARCH)))
+ ifneq (,$(findstring ia64,$(OS_TEST)))
+ CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
+ ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
+@@ -106,9 +109,15 @@
+ ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
+ endif
+ #
++# FreeBSD/Alpha
++#
++ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDalpha)
++CPPSRCS := xptcinvoke_freebsd_alpha.cpp xptcstubs_freebsd_alpha.cpp
++endif
++#
+ # Linux/Alpha
+ #
+-ifneq (,$(filter Linuxalpha FreeBSDalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
++ifneq (,$(filter Linuxalpha NetBSDalpha,$(OS_ARCH)$(OS_TEST)))
+ CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
+ endif
+ #
+@@ -294,6 +303,15 @@
+ ifeq ($(OS_ARCH)$(OS_TEST),NetBSDsparc)
+ CPPSRCS := xptcinvoke_sparc_netbsd.cpp xptcstubs_sparc_netbsd.cpp
+ ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
++endif
++#
++# FreeBSD/SPARC64
++#
++ifeq ($(OS_ARCH),FreeBSD)
++ifneq (,$(findstring sparc,$(OS_TEST)))
++CPPSRCS := xptcinvoke_sparc64_freebsd.cpp xptcstubs_sparc64_freebsd.cpp
++ASFILES := xptcinvoke_asm_sparc64_freebsd.s xptcstubs_asm_sparcv9_solaris.s
++endif
+ endif
+ #
+ # Solaris/SPARC
diff --git a/www/seamonkey/files/patch-xptcall-alpha b/www/seamonkey/files/patch-xptcall-alpha
new file mode 100644
index 000000000..29631a98e
--- /dev/null
+++ b/www/seamonkey/files/patch-xptcall-alpha
@@ -0,0 +1,459 @@
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp.orig Tue May 27 01:37:25 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_freebsd_alpha.cpp Tue May 27 01:37:00 2003
+@@ -0,0 +1,184 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++__asm__("invoke_copy_to_stack") __attribute__((unused));
++
++static void
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
++ {
++ if(s->IsPtrData())
++ {
++ *d = (PRUint64)s->ptr;
++ continue;
++ }
++ switch(s->type)
++ {
++ case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
++ case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
++ case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
++ case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
++ case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
++ case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
++ case nsXPTType::T_U32 : *d = (PRUint64)s->val.u32; break;
++ case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // convert floats to doubles if they are to be passed
++ // via registers so we can just deal with doubles later
++ union { PRUint64 u64; double d; } t;
++ t.d = (double)s->val.f;
++ *d = t.u64;
++ }
++ else
++ // otherwise copy to stack normally
++ *d = (PRUint64)s->val.u32;
++ break;
++ case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
++ case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
++ case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
++ case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
++ default:
++ // all the others are plain pointer types
++ *d = (PRUint64)s->val.p;
++ break;
++ }
++ }
++}
++
++/*
++ * XPTC_PUBLIC_API(nsresult)
++ * XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ * PRUint32 paramCount, nsXPTCVariant* params, void* vt)
++ */
++__asm__(
++ "#### XPTC_InvokeByIndex ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".globl XPTC_InvokeByIndex\n\t"
++ ".ent XPTC_InvokeByIndex\n"
++"XPTC_InvokeByIndex:\n\t"
++ ".frame $15,32,$26,0\n\t"
++ ".mask 0x4008000,-32\n\t"
++ "ldgp $29,0($27)\n"
++"$XPTC_InvokeByIndex..ng:\n\t"
++ "subq $30,32,$30\n\t"
++ "stq $26,0($30)\n\t"
++ "stq $15,8($30)\n\t"
++ "bis $30,$30,$15\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Allocate enough stack space to hold the greater of 6 or "paramCount"+1
++ * parameters. (+1 for "this" pointer) Room for at least 6 parameters
++ * is required for storage of those passed via registers.
++ */
++
++ "bis $31,5,$2\n\t" /* count = MAX(5, "paramCount") */
++ "cmplt $2,$18,$1\n\t"
++ "cmovne $1,$18,$2\n\t"
++ "s8addq $2,16,$1\n\t" /* room for count+1 params (8 bytes each) */
++ "bic $1,15,$1\n\t" /* stack space is rounded up to 0 % 16 */
++ "subq $30,$1,$30\n\t"
++
++ "stq $16,0($30)\n\t" /* save "that" (as "this" pointer) */
++ "stq $17,16($15)\n\t" /* save "methodIndex" */
++
++ "addq $30,8,$16\n\t" /* pass stack pointer */
++ "bis $18,$18,$17\n\t" /* pass "paramCount" */
++ "bis $19,$19,$18\n\t" /* pass "params" */
++ "bsr $26,$invoke_copy_to_stack..ng\n\t" /* call invoke_copy_to_stack */
++
++ /*
++ * Copy the first 6 parameters to registers and remove from stack frame.
++ * Both the integer and floating point registers are set for each parameter
++ * except the first which is the "this" pointer. (integer only)
++ * The floating point registers are all set as doubles since the
++ * invoke_copy_to_stack function should have converted the floats.
++ */
++ "ldq $16,0($30)\n\t" /* integer registers */
++ "ldq $17,8($30)\n\t"
++ "ldq $18,16($30)\n\t"
++ "ldq $19,24($30)\n\t"
++ "ldq $20,32($30)\n\t"
++ "ldq $21,40($30)\n\t"
++ "ldt $f17,8($30)\n\t" /* floating point registers */
++ "ldt $f18,16($30)\n\t"
++ "ldt $f19,24($30)\n\t"
++ "ldt $f20,32($30)\n\t"
++ "ldt $f21,40($30)\n\t"
++
++ "addq $30,48,$30\n\t" /* remove params from stack */
++
++ /*
++ * Call the virtual function with the constructed stack frame.
++ */
++ "bis $16,$16,$1\n\t" /* load "this" */
++ "ldq $2,16($15)\n\t" /* load "methodIndex" */
++ "ldq $1,0($1)\n\t" /* load vtable */
++#if 0
++ "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */
++#else
++ "mulq $2, 8, $2\n\t"
++ "addq $2, 0, $2\n\t" /* vtable index = "methodIndex" * 16 + 24 */
++#endif
++ "addq $1,$2,$1\n\t"
++ "ldq $27,0($1)\n\t" /* load address of function */
++ "jsr $26,($27),0\n\t" /* call virtual function */
++ "ldgp $29,0($26)\n\t"
++
++ "bis $15,$15,$30\n\t"
++ "ldq $26,0($30)\n\t"
++ "ldq $15,8($30)\n\t"
++ "addq $30,32,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end XPTC_InvokeByIndex"
++ );
++
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp.orig Tue May 27 01:37:30 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_freebsd_alpha.cpp Tue May 27 01:37:04 2003
+@@ -0,0 +1,269 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Netscape Public License
++ * Version 1.1 (the "License"); you may not use this file except in
++ * compliance with the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/NPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the NPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the NPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/* Implement shared vtbl methods. */
++
++/* contributed by Glen Nakamura <glen.nakamura@usa.net> */
++
++#include <sys/types.h>
++#include <machine/cpu.h>
++#include "xptcprivate.h"
++
++/* Prototype specifies unmangled function name and disables unused warning */
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++__asm__("PrepareAndDispatch") __attribute__((unused));
++
++static nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
++{
++ const PRUint8 PARAM_BUFFER_COUNT = 16;
++ const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ // args[0] to args[NUM_ARG_REGS] hold floating point register values
++ PRUint64* ap = args + NUM_ARG_REGS;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
++ case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
++ case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
++ case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
++ case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
++ case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
++ case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
++ case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
++ case nsXPTType::T_FLOAT :
++ if(i < NUM_ARG_REGS)
++ {
++ // floats passed via registers are stored as doubles
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (PRUint64) args[i];
++ dp->val.f = (float) dp->val.d; // convert double to float
++ }
++ else
++ dp->val.u32 = (PRUint32) *ap;
++ break;
++ case nsXPTType::T_DOUBLE :
++ // doubles passed via registers are also stored
++ // in the first NUM_ARG_REGS entries in args
++ dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
++ break;
++ case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
++ case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
++ case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++/*
++ * SharedStub()
++ * Collects arguments and calls PrepareAndDispatch. The "methodIndex" is
++ * passed to this function via $1 to preserve the argument registers.
++ */
++__asm__(
++ "#### SharedStub ####\n"
++".text\n\t"
++ ".align 5\n\t"
++ ".ent SharedStub\n"
++"SharedStub:\n\t"
++ ".frame $30,96,$26,0\n\t"
++ ".mask 0x4000000,-96\n\t"
++ "ldgp $29,0($27)\n"
++"$SharedStub..ng:\n\t"
++ "subq $30,96,$30\n\t"
++ "stq $26,0($30)\n\t"
++ ".prologue 1\n\t"
++
++ /*
++ * Store arguments passed via registers to the stack.
++ * Floating point registers are stored as doubles and converted
++ * to floats in PrepareAndDispatch if necessary.
++ */
++ "stt $f17,16($30)\n\t" /* floating point registers */
++ "stt $f18,24($30)\n\t"
++ "stt $f19,32($30)\n\t"
++ "stt $f20,40($30)\n\t"
++ "stt $f21,48($30)\n\t"
++ "stq $17,56($30)\n\t" /* integer registers */
++ "stq $18,64($30)\n\t"
++ "stq $19,72($30)\n\t"
++ "stq $20,80($30)\n\t"
++ "stq $21,88($30)\n\t"
++
++ /*
++ * Call PrepareAndDispatch function.
++ */
++ "bis $1,$1,$17\n\t" /* pass "methodIndex" */
++ "addq $30,16,$18\n\t" /* pass "args" */
++ "bsr $26,$PrepareAndDispatch..ng\n\t"
++
++ "ldq $26,0($30)\n\t"
++ "addq $30,96,$30\n\t"
++ "ret $31,($26),1\n\t"
++ ".end SharedStub"
++ );
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase5Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase5Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase5Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase5Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase6Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase6Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase6Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase6Stub"#n"Ev" \
++ ); \
++__asm__( \
++ "#### Stub"#n" ####\n" \
++".text\n\t" \
++ ".align 5\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev\n\t" \
++ ".ent _ZN14nsXPTCStubBase7Stub"#n"Ev\n" \
++"_ZN14nsXPTCStubBase7Stub"#n"Ev:\n\t" \
++ ".frame $30,0,$26,0\n\t" \
++ "ldgp $29,0($27)\n" \
++"$_ZN14nsXPTCStubBase7Stub"#n"Ev..ng:\n\t" \
++ ".prologue 1\n\t" \
++ "lda $1,"#n"\n\t" \
++ "br $31,$SharedStub..ng\n\t" \
++ ".end _ZN14nsXPTCStubBase7Stub"#n"Ev" \
++ );
++#else
++/*
++ * nsresult nsXPTCStubBase::Stub##n()
++ * Sets register $1 to "methodIndex" and jumps to SharedStub.
++ */
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ nsresult result; \
++__asm__ __volatile__( \
++ "ldah $29,0($27)\n\t" \
++ "lda $29,0($29)\n\t" \
++ "lda $1, "#n"\n\t" \
++ "br $31, $SharedStub..ng\n\t" \
++ "mov $0, %0\n\t" \
++ : "=r" (result) \
++ ); \
++ return result; \
++}
++#endif
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
diff --git a/www/seamonkey/files/patch-xptcall-amd64 b/www/seamonkey/files/patch-xptcall-amd64
new file mode 100644
index 000000000..3227cad02
--- /dev/null
+++ b/www/seamonkey/files/patch-xptcall-amd64
@@ -0,0 +1,386 @@
+--- /dev/null Wed Dec 31 16:00:00 1969
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_freebsd.cpp Thu Oct 16 22:59:43 2003
+@@ -0,0 +1,174 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++// Platform specific code to invoke XPCOM methods on native objects
++
++#include "xptcprivate.h"
++
++// 6 integral parameters are passed in registers
++const PRUint32 GPR_COUNT = 6;
++
++// 8 floating point parameters are passed in SSE registers
++const PRUint32 FPR_COUNT = 8;
++
++// Remember that these 'words' are 64-bit long
++static inline void
++invoke_count_words(PRUint32 paramCount, nsXPTCVariant * s,
++ PRUint32 & nr_gpr, PRUint32 & nr_fpr, PRUint32 & nr_stack)
++{
++ nr_gpr = 1; // skip one GP register for 'that'
++ nr_fpr = 0;
++ nr_stack = 0;
++
++ /* Compute number of eightbytes of class MEMORY. */
++ for (uint32 i = 0; i < paramCount; i++, s++) {
++ if (!s->IsPtrData()
++ && (s->type == nsXPTType::T_FLOAT || s->type == nsXPTType::T_DOUBLE)) {
++ if (nr_fpr < FPR_COUNT)
++ nr_fpr++;
++ else
++ nr_stack++;
++ }
++ else {
++ if (nr_gpr < GPR_COUNT)
++ nr_gpr++;
++ else
++ nr_stack++;
++ }
++ }
++}
++
++static void
++invoke_copy_to_stack(PRUint64 * d, PRUint32 paramCount, nsXPTCVariant * s,
++ PRUint64 * gpregs, double * fpregs)
++{
++ PRUint32 nr_gpr = 1; // skip one GP register for 'that'
++ PRUint32 nr_fpr = 0;
++ PRUint64 value;
++
++ for (uint32 i = 0; i < paramCount; i++, s++) {
++ if (s->IsPtrData())
++ value = (PRUint64) s->ptr;
++ else {
++ switch (s->type) {
++ case nsXPTType::T_FLOAT: break;
++ case nsXPTType::T_DOUBLE: break;
++ case nsXPTType::T_I8: value = s->val.i8; break;
++ case nsXPTType::T_I16: value = s->val.i16; break;
++ case nsXPTType::T_I32: value = s->val.i32; break;
++ case nsXPTType::T_I64: value = s->val.i64; break;
++ case nsXPTType::T_U8: value = s->val.u8; break;
++ case nsXPTType::T_U16: value = s->val.u16; break;
++ case nsXPTType::T_U32: value = s->val.u32; break;
++ case nsXPTType::T_U64: value = s->val.u64; break;
++ case nsXPTType::T_BOOL: value = s->val.b; break;
++ case nsXPTType::T_CHAR: value = s->val.c; break;
++ case nsXPTType::T_WCHAR: value = s->val.wc; break;
++ default: value = (PRUint64) s->val.p; break;
++ }
++ }
++
++ if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
++ if (nr_fpr < FPR_COUNT)
++ fpregs[nr_fpr++] = s->val.d;
++ else {
++ *((double *)d) = s->val.d;
++ d++;
++ }
++ }
++ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
++ if (nr_fpr < FPR_COUNT)
++ // The value in %xmm register is already prepared to
++ // be retrieved as a float. Therefore, we pass the
++ // value verbatim, as a double without conversion.
++ fpregs[nr_fpr++] = s->val.d;
++ else {
++ *((float *)d) = s->val.f;
++ d++;
++ }
++ }
++ else {
++ if (nr_gpr < GPR_COUNT)
++ gpregs[nr_gpr++] = value;
++ else
++ *d++ = value;
++ }
++ }
++}
++
++extern "C"
++XPTC_PUBLIC_API(nsresult)
++XPTC_InvokeByIndex(nsISupports * that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant * params)
++{
++ PRUint32 nr_gpr, nr_fpr, nr_stack;
++ invoke_count_words(paramCount, params, nr_gpr, nr_fpr, nr_stack);
++
++ // Stack, if used, must be 16-bytes aligned
++ if (nr_stack)
++ nr_stack = (nr_stack + 1) & ~1;
++
++ // Load parameters to stack, if necessary
++ PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8);
++ PRUint64 gpregs[GPR_COUNT];
++ double fpregs[FPR_COUNT];
++ invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs);
++
++ // Load FPR registers from fpregs[]
++ register double d0 asm("xmm0");
++ register double d1 asm("xmm1");
++ register double d2 asm("xmm2");
++ register double d3 asm("xmm3");
++ register double d4 asm("xmm4");
++ register double d5 asm("xmm5");
++ register double d6 asm("xmm6");
++ register double d7 asm("xmm7");
++
++ switch (nr_fpr) {
++#define ARG_FPR(N) \
++ case N+1: d##N = fpregs[N];
++ ARG_FPR(7);
++ ARG_FPR(6);
++ ARG_FPR(5);
++ ARG_FPR(4);
++ ARG_FPR(3);
++ ARG_FPR(2);
++ ARG_FPR(1);
++ ARG_FPR(0);
++ case 0:;
++#undef ARG_FPR
++ }
++
++ // Load GPR registers from gpregs[]
++ register PRUint64 a0 asm("rdi");
++ register PRUint64 a1 asm("rsi");
++ register PRUint64 a2 asm("rdx");
++ register PRUint64 a3 asm("rcx");
++ register PRUint64 a4 asm("r8");
++ register PRUint64 a5 asm("r9");
++
++ switch (nr_gpr) {
++#define ARG_GPR(N) \
++ case N+1: a##N = gpregs[N];
++ ARG_GPR(5);
++ ARG_GPR(4);
++ ARG_GPR(3);
++ ARG_GPR(2);
++ ARG_GPR(1);
++ case 1: a0 = (PRUint64) that;
++ case 0:;
++#undef ARG_GPR
++ }
++
++ // Ensure that assignments to SSE registers won't be optimized away
++ asm("" ::
++ "x" (d0), "x" (d1), "x" (d2), "x" (d3),
++ "x" (d4), "x" (d5), "x" (d6), "x" (d7));
++
++ // Get pointer to method
++ PRUint64 methodAddress = *((PRUint64 *)that);
++ methodAddress += 8 * methodIndex;
++ methodAddress = *((PRUint64 *)methodAddress);
++
++ typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64);
++ PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5);
++ return result;
++}
+--- /dev/null Wed Dec 31 16:00:00 1969
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_freebsd.cpp Thu Oct 16 23:01:08 2003
+@@ -0,0 +1,206 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++
++// Implement shared vtbl methods.
++
++#include "xptcprivate.h"
++
++// The Linux/x86-64 ABI passes the first 6 integral parameters and the
++// first 8 floating point parameters in registers (rdi, rsi, rdx, rcx,
++// r8, r9 and xmm0-xmm7), no stack space is allocated for these by the
++// caller. The rest of the parameters are passed in the callers stack
++// area.
++
++const PRUint32 PARAM_BUFFER_COUNT = 16;
++const PRUint32 GPR_COUNT = 6;
++const PRUint32 FPR_COUNT = 8;
++
++// PrepareAndDispatch() is called by SharedStub() and calls the actual method.
++//
++// - 'args[]' contains the arguments passed on stack
++// - 'gpregs[]' contains the arguments passed in integer registers
++// - 'fpregs[]' contains the arguments passed in floating point registers
++//
++// The parameters are mapped into an array of type 'nsXPTCMiniVariant'
++// and then the method gets called.
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase * self, PRUint32 methodIndex,
++ PRUint64 * args, PRUint64 * gpregs, double *fpregs)
++{
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint32 paramCount;
++ PRUint32 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++ if (! iface_info)
++ return NS_ERROR_UNEXPECTED;
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no method info");
++ if (! info)
++ return NS_ERROR_UNEXPECTED;
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++
++ NS_ASSERTION(dispatchParams,"no place for params");
++ if (! dispatchParams)
++ return NS_ERROR_OUT_OF_MEMORY;
++
++ PRUint64* ap = args;
++ PRUint32 nr_gpr = 1; // skip one GPR register for 'that'
++ PRUint32 nr_fpr = 0;
++ PRUint64 value;
++
++ for(i = 0; i < paramCount; i++) {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if (!param.IsOut() && type == nsXPTType::T_DOUBLE) {
++ if (nr_fpr < FPR_COUNT)
++ dp->val.d = fpregs[nr_fpr++];
++ else
++ dp->val.d = *(double*) ap++;
++ continue;
++ }
++ else if (!param.IsOut() && type == nsXPTType::T_FLOAT) {
++ if (nr_fpr < FPR_COUNT)
++ // The value in %xmm register is already prepared to
++ // be retrieved as a float. Therefore, we pass the
++ // value verbatim, as a double without conversion.
++ dp->val.d = *(double*) ap++;
++ else
++ dp->val.f = *(float*) ap++;
++ continue;
++ }
++ else {
++ if (nr_gpr < GPR_COUNT)
++ value = gpregs[nr_gpr++];
++ else
++ value = *ap++;
++ }
++
++ if (param.IsOut() || !type.IsArithmetic()) {
++ dp->val.p = (void*) value;
++ continue;
++ }
++
++ switch (type) {
++ case nsXPTType::T_I8: dp->val.i8 = (PRInt8) value; break;
++ case nsXPTType::T_I16: dp->val.i16 = (PRInt16) value; break;
++ case nsXPTType::T_I32: dp->val.i32 = (PRInt32) value; break;
++ case nsXPTType::T_I64: dp->val.i64 = (PRInt64) value; break;
++ case nsXPTType::T_U8: dp->val.u8 = (PRUint8) value; break;
++ case nsXPTType::T_U16: dp->val.u16 = (PRUint16) value; break;
++ case nsXPTType::T_U32: dp->val.u32 = (PRUint32) value; break;
++ case nsXPTType::T_U64: dp->val.u64 = (PRUint64) value; break;
++ case nsXPTType::T_BOOL: dp->val.b = (PRBool) value; break;
++ case nsXPTType::T_CHAR: dp->val.c = (char) value; break;
++ case nsXPTType::T_WCHAR: dp->val.wc = (wchar_t) value; break;
++
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16) methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if (dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
++// Linux/x86-64 uses gcc >= 3.1
++#define STUB_ENTRY(n) \
++asm(".section \".text\"\n\t" \
++ ".align 2\n\t" \
++ ".if " #n " < 10\n\t" \
++ ".globl _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \
++ ".type _ZN14nsXPTCStubBase5Stub" #n "Ev,@function\n" \
++ "_ZN14nsXPTCStubBase5Stub" #n "Ev:\n\t" \
++ ".elseif " #n " < 100\n\t" \
++ ".globl _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \
++ ".type _ZN14nsXPTCStubBase6Stub" #n "Ev,@function\n" \
++ "_ZN14nsXPTCStubBase6Stub" #n "Ev:\n\t" \
++ ".elseif " #n " < 1000\n\t" \
++ ".globl _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \
++ ".type _ZN14nsXPTCStubBase7Stub" #n "Ev,@function\n" \
++ "_ZN14nsXPTCStubBase7Stub" #n "Ev:\n\t" \
++ ".else\n\t" \
++ ".err \"stub number " #n " >= 1000 not yet supported\"\n\t" \
++ ".endif\n\t" \
++ "movl $" #n ", %eax\n\t" \
++ "jmp SharedStub\n\t" \
++ ".if " #n " < 10\n\t" \
++ ".size _ZN14nsXPTCStubBase5Stub" #n "Ev,.-_ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \
++ ".elseif " #n " < 100\n\t" \
++ ".size _ZN14nsXPTCStubBase6Stub" #n "Ev,.-_ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \
++ ".else\n\t" \
++ ".size _ZN14nsXPTCStubBase7Stub" #n "Ev,.-_ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \
++ ".endif");
++
++// static nsresult SharedStub(PRUint32 methodIndex)
++asm(".section \".text\"\n\t"
++ ".align 2\n\t"
++ ".type SharedStub,@function\n\t"
++ "SharedStub:\n\t"
++ // make room for gpregs (48), fpregs (64)
++ "pushq %rbp\n\t"
++ "movq %rsp,%rbp\n\t"
++ "subq $112,%rsp\n\t"
++ // save GP registers
++ "movq %rdi,-112(%rbp)\n\t"
++ "movq %rsi,-104(%rbp)\n\t"
++ "movq %rdx, -96(%rbp)\n\t"
++ "movq %rcx, -88(%rbp)\n\t"
++ "movq %r8 , -80(%rbp)\n\t"
++ "movq %r9 , -72(%rbp)\n\t"
++ "leaq -112(%rbp),%rcx\n\t"
++ // save FP registers
++ "movsd %xmm0,-64(%rbp)\n\t"
++ "movsd %xmm1,-56(%rbp)\n\t"
++ "movsd %xmm2,-48(%rbp)\n\t"
++ "movsd %xmm3,-40(%rbp)\n\t"
++ "movsd %xmm4,-32(%rbp)\n\t"
++ "movsd %xmm5,-24(%rbp)\n\t"
++ "movsd %xmm6,-16(%rbp)\n\t"
++ "movsd %xmm7, -8(%rbp)\n\t"
++ "leaq -64(%rbp),%r8\n\t"
++ // rdi has the 'self' pointer already
++ "movl %eax,%esi\n\t"
++ "leaq 16(%rbp),%rdx\n\t"
++ "call PrepareAndDispatch\n\t"
++ "leave\n\t"
++ "ret\n\t"
++ ".size SharedStub,.-SharedStub");
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#else
++#error "can't find a compiler to use"
++#endif /* __GNUC__ */
diff --git a/www/seamonkey/files/patch-xptcall-ia64 b/www/seamonkey/files/patch-xptcall-ia64
new file mode 100644
index 000000000..9cd07f7dd
--- /dev/null
+++ b/www/seamonkey/files/patch-xptcall-ia64
@@ -0,0 +1,38 @@
+--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s.orig Sun Jul 20 00:05:32 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ipf64.s Sun Jul 20 00:06:37 2003
+@@ -8,6 +8,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'XPTC_InvokeByIndex'
++ .global XPTC_InvokeByIndex
+ .proc XPTC_InvokeByIndex
+ // manual bundling
+ .explicit
+@@ -24,7 +25,7 @@
+
+ // XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
+ // PRUint32 paramCount, nsXPTCVariant* params);
+-XPTC_InvokeByIndex::
++XPTC_InvokeByIndex:
+ .prologue
+ .save ar.pfs, r37
+ // allocate 4 input args, 6 local args, and 8 output args
+--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s.orig Sun Jul 20 00:02:02 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s Sun Jul 20 00:02:40 2003
+@@ -6,6 +6,7 @@
+ // Section has executable code
+ .section .text, "ax","progbits"
+ // procedure named 'SharedStub'
++ .global SharedStub
+ .proc SharedStub
+ // manual bundling
+ .explicit
+@@ -14,7 +15,7 @@
+ // .exclass PrepareAndDispatch, @fullyvisible
+ .type PrepareAndDispatch,@function
+
+-SharedStub::
++SharedStub:
+ // 9 arguments, first 8 are the input arguments of previous
+ // function call. The last one is methodIndex, and is passed in memory
+ .prologue
diff --git a/www/seamonkey/files/patch-xptcall-sparc64 b/www/seamonkey/files/patch-xptcall-sparc64
new file mode 100755
index 000000000..9599a8a71
--- /dev/null
+++ b/www/seamonkey/files/patch-xptcall-sparc64
@@ -0,0 +1,327 @@
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_freebsd.cpp Mon May 26 04:12:55 2003
+@@ -0,0 +1,123 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ */
++
++/* Implement shared vtbl methods. */
++
++#include "xptcprivate.h"
++
++#if defined(sparc) || defined(__sparc__)
++
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
++{
++
++#define PARAM_BUFFER_COUNT 16
++
++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++ nsXPTCMiniVariant* dispatchParams = NULL;
++ nsIInterfaceInfo* iface_info = NULL;
++ const nsXPTMethodInfo* info;
++ PRUint8 paramCount;
++ PRUint8 i;
++ nsresult result = NS_ERROR_FAILURE;
++
++ NS_ASSERTION(self,"no self");
++
++ self->GetInterfaceInfo(&iface_info);
++ NS_ASSERTION(iface_info,"no interface info");
++
++ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++ NS_ASSERTION(info,"no interface info");
++
++ paramCount = info->GetParamCount();
++
++ // setup variant array pointer
++ if(paramCount > PARAM_BUFFER_COUNT)
++ dispatchParams = new nsXPTCMiniVariant[paramCount];
++ else
++ dispatchParams = paramBuffer;
++ NS_ASSERTION(dispatchParams,"no place for params");
++
++ PRUint64* ap = args;
++ for(i = 0; i < paramCount; i++, ap++)
++ {
++ const nsXPTParamInfo& param = info->GetParam(i);
++ const nsXPTType& type = param.GetType();
++ nsXPTCMiniVariant* dp = &dispatchParams[i];
++
++ if(param.IsOut() || !type.IsArithmetic())
++ {
++ dp->val.p = (void*) *ap;
++ continue;
++ }
++ // else
++ switch(type)
++ {
++ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
++ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
++ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
++ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
++ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
++ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
++ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
++ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
++ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
++ case nsXPTType::T_BOOL : dp->val.b = *((PRInt64*) ap); break;
++ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
++ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
++ default:
++ NS_ASSERTION(0, "bad type");
++ break;
++ }
++ }
++
++ result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
++
++ NS_RELEASE(iface_info);
++
++ if(dispatchParams != paramBuffer)
++ delete [] dispatchParams;
++
++ return result;
++}
++
++extern "C" int SharedStub(int, int*);
++
++#define STUB_ENTRY(n) \
++nsresult nsXPTCStubBase::Stub##n() \
++{ \
++ int dummy; /* defeat tail-call optimization */ \
++ return SharedStub(n, &dummy); \
++}
++
++#define SENTINEL_ENTRY(n) \
++nsresult nsXPTCStubBase::Sentinel##n() \
++{ \
++ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++ return NS_ERROR_NOT_IMPLEMENTED; \
++}
++
++#include "xptcstubsdef.inc"
++
++#endif /* sparc || __sparc__ */
+--- /dev/null Mon May 26 13:22:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_freebsd.s Mon May 26 04:06:09 2003
+@@ -0,0 +1,104 @@
++/* -*- Mode: asm; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++/*
++ Platform specific code to invoke XPCOM methods on native objects
++ for sparcv9 Solaris.
++
++ See the SPARC Compliance Definition (SCD) Chapter 3
++ for more information about what is going on here, including
++ the use of BIAS (0x7ff).
++ The SCD is available from http://www.sparc.com/.
++*/
++
++ .global XPTC_InvokeByIndex
++ .type XPTC_InvokeByIndex, #function
++
++/*
++ XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++ PRUint32 paramCount, nsXPTCVariant* params);
++
++*/
++XPTC_InvokeByIndex:
++ save %sp,-(128 + 64),%sp ! room for the register window and
++ ! struct pointer, rounded up to 0 % 64
++ sll %i2,4,%l0 ! assume the worst case
++ ! paramCount * 2 * 8 bytes
++ cmp %l0, 0 ! are there any args? If not,
++ be .invoke ! no need to copy args to stack
++ nop
++
++ sub %sp,%l0,%sp ! create the additional stack space
++ add %sp,0x7ff+136,%o0 ! step past the register window, the
++ ! struct result pointer and the 'this' slot
++ mov %i2,%o1 ! paramCount
++ call invoke_copy_to_stack
++ mov %i3,%o2 ! params
++
++!
++! load arguments from stack into the outgoing registers
++! BIAS is 0x7ff (2047)
++!
++
++! load the %o1..5 64bit (extended word) output registers registers
++ ldx [%sp + 0x7ff + 136],%o1 ! %i1
++ ldx [%sp + 0x7ff + 144],%o2 ! %i2
++ ldx [%sp + 0x7ff + 152],%o3 ! %i3
++ ldx [%sp + 0x7ff + 160],%o4 ! %i4
++ ldx [%sp + 0x7ff + 168],%o5 ! %i5
++
++! load the even number double registers starting with %d2
++ ldd [%sp + 0x7ff + 136],%f2
++ ldd [%sp + 0x7ff + 144],%f4
++ ldd [%sp + 0x7ff + 152],%f6
++ ldd [%sp + 0x7ff + 160],%f8
++ ldd [%sp + 0x7ff + 168],%f10
++ ldd [%sp + 0x7ff + 176],%f12
++ ldd [%sp + 0x7ff + 184],%f14
++ ldd [%sp + 0x7ff + 192],%f16
++ ldd [%sp + 0x7ff + 200],%f18
++ ldd [%sp + 0x7ff + 208],%f20
++ ldd [%sp + 0x7ff + 216],%f22
++ ldd [%sp + 0x7ff + 224],%f24
++ ldd [%sp + 0x7ff + 232],%f26
++ ldd [%sp + 0x7ff + 240],%f28
++ ldd [%sp + 0x7ff + 248],%f30
++
++!
++! calculate the target address from the vtable
++!
++.invoke:
++ sll %i1,3,%l0 ! index *= 8
++! add %l0,16,%l0 ! there are 2 extra entries in the vTable (16bytes)
++ ldx [%i0],%l1 ! *that --> address of vtable
++ ldx [%l0 + %l1],%l0 ! that->vtable[index * 8 + 16] --> address
++
++ jmpl %l0,%o7 ! call the routine
++ mov %i0,%o0 ! move 'this' pointer to out register
++
++ mov %o0,%i0 ! propagate return value
++ ret
++ restore
++
++ .size XPTC_InvokeByIndex, .-XPTC_InvokeByIndex
+--- /dev/null Mon May 26 14:00:00 2003
++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_freebsd.cpp Mon May 26 14:00:49 2003
+@@ -0,0 +1,91 @@
++/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ *
++ * The contents of this file are subject to the Mozilla Public
++ * License Version 1.1 (the "License"); you may not use this file
++ * except in compliance with the License. You may obtain a copy of
++ * the License at http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS
++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++ * implied. See the License for the specific language governing
++ * rights and limitations under the License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is Netscape
++ * Communications Corporation. Portions created by Netscape are
++ * Copyright (C) 2001 Netscape Communications Corporation. All
++ * Rights Reserved.
++ *
++ * Contributor(s):
++ * Stuart Parmenter <pavlov@netscape.com>
++ * Chris Seawood <cls@seawood.org>
++ */
++
++
++/* Platform specific code to invoke XPCOM methods on native objects */
++
++#include "xptcprivate.h"
++
++#if !defined(__sparc) && !defined(__sparc__)
++#error "This code is for Sparc only"
++#endif
++
++/* Prototype specifies unmangled function name */
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s);
++
++extern "C" PRUint64
++invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
++{
++ /*
++ We need to copy the parameters for this function to locals and use them
++ from there since the parameters occupy the same stack space as the stack
++ we're trying to populate.
++ */
++ PRUint64 *l_d = d;
++ nsXPTCVariant *l_s = s;
++ PRUint64 l_paramCount = paramCount;
++ PRUint64 regCount = 0; // return the number of registers to load from the stack
++
++ for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++)
++ {
++ if (regCount < 5) regCount++;
++
++ if (l_s->IsPtrData())
++ {
++ *l_d = (PRUint64)l_s->ptr;
++ continue;
++ }
++ switch (l_s->type)
++ {
++ case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break;
++ case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break;
++ case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break;
++ case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break;
++
++ case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break;
++ case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break;
++ case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break;
++ case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break;
++
++ /* in the case of floats, we want to put the bits in to the
++ 64bit space right justified... floats in the paramter array on
++ sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip
++ the space that would be occupied by %f0, %f2, etc.
++ */
++ case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break;
++ case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break;
++ case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break;
++ case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break;
++ case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break;
++
++ default:
++ // all the others are plain pointer types
++ *((void**)l_d) = l_s->val.p;
++ break;
++ }
++ }
++
++ return regCount;
++}
diff --git a/www/seamonkey/pkg-deinstall.in b/www/seamonkey/pkg-deinstall.in
new file mode 100644
index 000000000..05ebb05e9
--- /dev/null
+++ b/www/seamonkey/pkg-deinstall.in
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/mozilla/pkg-deinstall.in,v 1.2 2004/11/07 22:24:21 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components/*.dat
+
+exit 0
diff --git a/www/seamonkey/pkg-descr b/www/seamonkey/pkg-descr
new file mode 100644
index 000000000..d91ac6c1d
--- /dev/null
+++ b/www/seamonkey/pkg-descr
@@ -0,0 +1,13 @@
+This is the current release of the Mozilla open source web browser. It should
+be fully compliant with all W3C standards, including HTML, CSS, XML, XSL,
+JavaScript, MathML, SVG and RDF. This version also supports SSL encryption,
+and Java with the use of the FreeBSD native Java plug-in.
+
+This is the latest release of the Mozilla browser. It contains all the
+bugfixes and security enhancements from the mozilla port as well as
+new new features.
+
+This version has been built with GTK+-2 bindings for use with applications
+such as Galeon 2.
+
+WWW: http://www.mozilla.org/
diff --git a/www/seamonkey/pkg-install.in b/www/seamonkey/pkg-install.in
new file mode 100644
index 000000000..167657b1c
--- /dev/null
+++ b/www/seamonkey/pkg-install.in
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# $FreeBSD: ports/www/mozilla/pkg-install.in,v 1.3 2004/12/04 09:47:25 marcus Exp $
+#
+# Date created: Mon Nov 29, 2003
+# Whom: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+
+echo "===> Building Chrome's registry..."
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+
+cd ${MOZDIR} || exit 1
+./run-mozilla.sh ${REGXPCOM} || true
+./run-mozilla.sh ${REGCHROME} || true
+
+if [ ! -d %%PREFIX%%/lib/browser_plugins ]; then
+ mkdir -p %%PREFIX%%/lib/browser_plugins
+fi
+
+exit 0