aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--www/firefox3-devel/Makefile31
-rw-r--r--www/firefox3-devel/distinfo6
-rw-r--r--www/firefox3-devel/files/libsydney_oss19
-rw-r--r--www/firefox3-devel/files/patch-configure.in11
-rw-r--r--www/firefox3-devel/files/patch-content-xslt-public-txDouble.h11
-rw-r--r--www/firefox3-devel/files/patch-gfx__thebes__src__gfxPangoFonts.cpp599
-rw-r--r--www/firefox3-devel/files/patch-js-src-config_config.mk21
-rw-r--r--www/firefox3-devel/files/patch-js-src-configure.in13
-rw-r--r--www/firefox3-devel/files/patch-js-src-jslock.cpp18
-rw-r--r--www/firefox3-devel/files/patch-js_src_jsnum.cpp14
-rw-r--r--www/firefox3-devel/files/patch-layout_generic_Makefile.in8
-rw-r--r--www/firefox3-devel/files/patch-media-libsydneyaudio-include-sydney_audio.h (renamed from www/firefox3-devel/files/patch-media_liboggplay_audio_sydney_audio.h)0
-rw-r--r--www/firefox3-devel/files/patch-media_liboggplay_src_liboggplay_std_semaphore.h11
-rw-r--r--www/firefox3-devel/files/patch-media_liboggz_include_oggz_oggz_off_t_generated.h8
-rw-r--r--www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk24
-rw-r--r--www/firefox3-devel/files/patch-toolkit_mozapps_installer_packager.mk11
-rw-r--r--www/firefox3-devel/files/patch-toolkit_mozapps_update_src_updater_updater.cpp20
-rw-r--r--www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-xptcprivate.h20
-rw-r--r--www/firefox3-devel/files/patch-xpcom_reflect_xptcall_src_md_unix_Makefile.in34
-rw-r--r--www/firefox3-devel/files/releng6_pulseaudio36
-rw-r--r--www/firefox3-devel/pkg-message2
21 files changed, 796 insertions, 121 deletions
diff --git a/www/firefox3-devel/Makefile b/www/firefox3-devel/Makefile
index 0d7198c4243b..2566ef9f76ae 100644
--- a/www/firefox3-devel/Makefile
+++ b/www/firefox3-devel/Makefile
@@ -6,19 +6,20 @@
#
PORTNAME= firefox
-DISTVERSION= 3.5rc3
+DISTVERSION= 3.6b4
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= ${MASTER_SITE_MOZILLA}
MASTER_SITE_SUBDIR= ${PORTNAME}/releases/${DISTVERSION}/source
-DISTNAME= ${PORTNAME}-${DISTVERSION}-source
+DISTNAME= ${PORTNAME}-${DISTVERSION}.source
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
-BUILD_DEPENDS= nspr>=4.7:${PORTSDIR}/devel/nspr
+BUILD_DEPENDS= nspr>=4.8:${PORTSDIR}/devel/nspr
+LIB_DEPENDS= notify.1:${PORTSDIR}/devel/libnotify
-USE_AUTOTOOLS= autoconf:213:run
+USE_AUTOTOOLS= autoconf:213
LATEST_LINK= firefox3-devel
USE_GECKO= gecko
MOZ_PKGCONFIG_FILES= # empty
@@ -28,8 +29,7 @@ MOZILLA_SUFX= 3
MOZILLA= ${PORTNAME}${MOZILLA_SUFX}
MOZ_TOOLKIT= cairo-gtk2
GECKO_PLIST_PRE_DIRS= lib/${MOZILLA}/bin lib/${MOZILLA}/idl \
- lib/${MOZILLA}/include lib/${MOZILLA}/lib \
- lib/${MOZILLA}/sdk/idl lib/${MOZILLA}/sdk/include
+ lib/${MOZILLA}/include lib/${MOZILLA}/lib
MAKE_JOBS_SAFE= yes
WANT_GNOME= yes
@@ -39,10 +39,9 @@ EXTRA_CFLAGS= -O2
HAS_CONFIGURE= yes
USE_BZIP2= yes
USE_GMAKE= yes
+MAKE_JOBS_SAFE= yes
NO_MOZPKGINSTALL=yes
-CONFLICTS= firefox-3.0.*
-
-IGNORE= please use www/firefox35
+CONFLICTS= firefox-3.[0,5].*
FIREFOX_ICON= ${MOZILLA}.png
FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png
@@ -51,7 +50,7 @@ MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \
--enable-svg --enable-svg-renderer=cairo \
--enable-application=browser \
--enable-official-branding \
- --enable-canvas --enable-libxul
+ --enable-canvas --enable-libxul --disable-necko-wifi
SYSTEM_PREFS= ${FAKEDIR}/lib/${MOZILLA}/defaults/pref/firefox.js
@@ -61,10 +60,6 @@ OPTIONS= DBUS "Enable D-BUS support" on \
.include <bsd.port.pre.mk>
-.if ${ARCH} == "sparc64"
-BROKEN= Does not compile on sparc64
-.endif
-
.if ${OSVERSION} < 700000
LIB_DEPENDS+= pulse.0:${PORTSDIR}/audio/pulseaudio
EXTRA_PATCHES= ${FILESDIR}/releng6_pulseaudio
@@ -72,7 +67,7 @@ EXTRA_PATCHES= ${FILESDIR}/releng6_pulseaudio
EXTRA_PATCHES= ${FILESDIR}/libsydney_oss
.endif
-WRKSRC:= ${WRKSRC}-1.9.1
+WRKSRC:= ${WRKSRC}-1.9.2
GECKO_PTHREAD_LIBS!=${CC} -dumpspecs | ${GREP} -m 1 '%{\!pg: %{pthread:' | ${SED} -e 's|^.*%{\!pg: %{pthread:|| ; s|}.*$$||' || ${TRUE}
@@ -90,7 +85,6 @@ LIB_DEPENDS+= dbus-glib-1.2:${PORTSDIR}/devel/dbus-glib
.endif
post-extract::
- @(cd ${WRKSRC} && ${AUTOCONF})
@${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' -e 's|@MOZILLA@|${MOZILLA}|' \
-e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|' \
<${FILESDIR}/firefox.desktop.in >${WRKDIR}/${MOZILLA}.desktop
@@ -109,6 +103,10 @@ post-patch:
s|/usr/X11R6|${LOCALBASE}|g' \
${WRKSRC}/js/src/configure
+pre-configure:
+ (cd ${WRKSRC} && ${AUTOCONF})
+ (cd ${WRKSRC}/js/src/ && ${AUTOCONF})
+
port-pre-install:
# ${SED} -e 's|1.9a7|0|' ${WRKSRC}/dist/bin/application.ini ${FAKEDIR}/lib
${ECHO_CMD} 'share/applications/${MOZILLA}.desktop' >> ${PLISTF}
@@ -126,5 +124,6 @@ post-install:
${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${PREFIX}/share/applications/
${MKDIR} ${PREFIX}/lib/${MOZILLA}/chrome/icons/default
${LN} -sf ${FIREFOX_ICON_SRC} ${PREFIX}/share/pixmaps/${FIREFOX_ICON}
+ @${CAT} ${PKGMESSAGE}
.include <bsd.port.post.mk>
diff --git a/www/firefox3-devel/distinfo b/www/firefox3-devel/distinfo
index 7c48dfc80e66..234be9080e57 100644
--- a/www/firefox3-devel/distinfo
+++ b/www/firefox3-devel/distinfo
@@ -1,3 +1,3 @@
-MD5 (firefox-3.5rc3-source.tar.bz2) = f8a9146a0a3dcc18fb22b72f4e8a9e94
-SHA256 (firefox-3.5rc3-source.tar.bz2) = e338e63ee88aaef2b048bb94f2014336801e9f61d7eda773d915d681a3e77994
-SIZE (firefox-3.5rc3-source.tar.bz2) = 46596784
+MD5 (firefox-3.6b4.source.tar.bz2) = 770d0a33e4e2ceb52017c59d98c4d28c
+SHA256 (firefox-3.6b4.source.tar.bz2) = b4d371cc4abf3df36c8cb9738b35ad8d3c4ff57d31c00085a29141fff4c407d7
+SIZE (firefox-3.6b4.source.tar.bz2) = 48323922
diff --git a/www/firefox3-devel/files/libsydney_oss b/www/firefox3-devel/files/libsydney_oss
index 7dfcc33cde9f..dcef3abdab96 100644
--- a/www/firefox3-devel/files/libsydney_oss
+++ b/www/firefox3-devel/files/libsydney_oss
@@ -1,16 +1,15 @@
---- media/libsydneyaudio/src/Makefile.in_orgi 2009-04-10 12:12:45.000000000 +0200
-+++ media/libsydneyaudio/src/Makefile.in 2009-04-10 12:13:12.000000000 +0200
+--- media/libsydneyaudio/src/Makefile.in.orig 2009-08-11 16:28:21.000000000 +0200
++++ media/libsydneyaudio/src/Makefile.in 2009-08-11 16:29:08.000000000 +0200
@@ -45,6 +45,12 @@
- LIBRARY_NAME = sydneyaudio
+ LIBRARY_NAME = sydneyaudio
FORCE_STATIC_LIB= 1
-
+
+ifeq ($(OS_ARCH),FreeBSD)
-+CSRCS = \
-+ sydney_audio_oss.c \
-+ $(NULL)
++CSRCS = \
++ sydney_audio_oss.c \
++ $(NULL)
+endif
+
ifeq ($(OS_ARCH),Linux)
- CSRCS = \
- sydney_audio_alsa.c \
-
+ CSRCS = \
+ sydney_audio_alsa.c \
diff --git a/www/firefox3-devel/files/patch-configure.in b/www/firefox3-devel/files/patch-configure.in
new file mode 100644
index 000000000000..5ba21ea8bc53
--- /dev/null
+++ b/www/firefox3-devel/files/patch-configure.in
@@ -0,0 +1,11 @@
+--- configure.in.orig 2009-10-03 20:24:11.000000000 +0200
++++ configure.in 2009-10-03 20:24:43.000000000 +0200
+@@ -1352,7 +1352,7 @@
+ CPU_ARCH=sparc
+ ;;
+
+-x86_64 | ia64)
++amd64 | x86_64 | ia64)
+ CPU_ARCH="$OS_TEST"
+ ;;
+
diff --git a/www/firefox3-devel/files/patch-content-xslt-public-txDouble.h b/www/firefox3-devel/files/patch-content-xslt-public-txDouble.h
new file mode 100644
index 000000000000..cd4acfc534bf
--- /dev/null
+++ b/www/firefox3-devel/files/patch-content-xslt-public-txDouble.h
@@ -0,0 +1,11 @@
+--- content/xslt/public/txDouble.h.orig 2009-08-16 21:46:27.000000000 +0200
++++ content/xslt/public/txDouble.h 2009-08-16 21:49:53.000000000 +0200
+@@ -43,7 +43,7 @@
+ //A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
+ #ifdef __FreeBSD__
+ #include <ieeefp.h>
+-#ifdef __alpha__
++#if !defined(__amd64__) && !defined(__i386__)
+ static fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
+ #else
+ static fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
diff --git a/www/firefox3-devel/files/patch-gfx__thebes__src__gfxPangoFonts.cpp b/www/firefox3-devel/files/patch-gfx__thebes__src__gfxPangoFonts.cpp
new file mode 100644
index 000000000000..1ccbb9c56f09
--- /dev/null
+++ b/www/firefox3-devel/files/patch-gfx__thebes__src__gfxPangoFonts.cpp
@@ -0,0 +1,599 @@
+--- ./gfx/thebes/src/gfxPangoFonts.cpp.orig 2009-12-09 10:17:48.872850998 +0100
++++ ./gfx/thebes/src/gfxPangoFonts.cpp 2009-12-09 10:22:14.745686512 +0100
+@@ -56,8 +56,6 @@
+ #include "gfxContext.h"
+ #include "gfxPlatformGtk.h"
+ #include "gfxPangoFonts.h"
+-#include "gfxFT2FontBase.h"
+-#include "gfxFT2Utils.h"
+ #include "gfxFontconfigUtils.h"
+ #include "gfxUserFontSet.h"
+
+@@ -128,6 +126,21 @@
+ #define FC_FULLNAME "fullname"
+ #endif
+
++// Rounding and truncation functions for a FreeType fixed point number
++// (FT26Dot6) stored in a 32bit integer with high 26 bits for the integer
++// part and low 6 bits for the fractional part.
++#define FLOAT_FROM_26_6(x) ((x) / 64.0)
++#define FLOAT_FROM_16_16(x) ((x) / 65536.0)
++#define ROUND_26_6_TO_INT(x) ((x) >= 0 ? ((32 + (x)) >> 6) \
++ : -((32 - (x)) >> 6))
++// aScale is intended for a 16.16 x/y_scale of an FT_Size_Metrics
++static inline FT_Long
++ScaleRoundDesignUnits(FT_Short aDesignMetric, FT_Fixed aScale)
++{
++ FT_Long fixed26dot6 = FT_MulFix(aDesignMetric, aScale);
++ return ROUND_26_6_TO_INT(fixed26dot6);
++}
++
+ static PRFuncPtr
+ FindFunctionSymbol(const char *name)
+ {
+@@ -506,19 +519,84 @@
+ * cairo_scaled_font created from an FcPattern.
+ */
+
+-class gfxFcFont : public gfxFT2FontBase {
++class gfxFcFont : public gfxFont {
+ public:
+ virtual ~gfxFcFont ();
+ static already_AddRefed<gfxFcFont> GetOrMakeFont(FcPattern *aPattern);
+
++ virtual const gfxFont::Metrics& GetMetrics();
++
++ virtual nsString GetUniqueName();
++
++ // Get the glyphID of a space
++ virtual PRUint32 GetSpaceGlyph() {
++ NS_ASSERTION(GetStyle()->size != 0,
++ "forgot to short-circuit a text run with zero-sized font?");
++ GetMetrics();
++ return mSpaceGlyph;
++ }
++
++ cairo_scaled_font_t *CairoScaledFont() { return mCairoFont; }
++ PRUint32 GetGlyph(PRUint32 aCharCode);
++ void GetGlyphExtents(PRUint32 aGlyph, cairo_text_extents_t* aExtents);
++
+ protected:
++ cairo_scaled_font_t *mCairoFont;
++
++ PRUint32 mSpaceGlyph;
++ Metrics mMetrics;
++ PRPackedBool mHasMetrics;
++
+ gfxFcFont(cairo_scaled_font_t *aCairoFont,
+ gfxFontEntry *aFontEntry, const gfxFontStyle *aFontStyle);
+
++ virtual PRBool SetupCairoFont(gfxContext *aContext);
++
+ // key for locating a gfxFcFont corresponding to a cairo_scaled_font
+ static cairo_user_data_key_t sGfxFontKey;
+ };
+
++class LockedFTFace {
++public:
++ LockedFTFace(gfxFcFont *aFont)
++ : mGfxFont(aFont),
++ mFace(cairo_ft_scaled_font_lock_face(aFont->CairoScaledFont()))
++ {
++ }
++
++ ~LockedFTFace()
++ {
++ if (mFace) {
++ cairo_ft_scaled_font_unlock_face(mGfxFont->CairoScaledFont());
++ }
++ }
++
++ FT_Face get()
++ {
++ return mFace;
++ }
++
++ /**
++ * Get the glyph id for a Unicode character representable by a single
++ * glyph, or return zero if there is no such glyph. This does no caching,
++ * so you probably want gfxFcFont::GetGlyph.
++ */
++ PRUint32 GetGlyph(PRUint32 aCharCode);
++
++ void GetMetrics(gfxFont::Metrics* aMetrics, PRUint32* aSpaceGlyph);
++
++private:
++ /**
++ * Get extents for a simple character representable by a single glyph.
++ * The return value is the glyph id of that glyph or zero if no such glyph
++ * exists. aExtents is only set when this returns a non-zero glyph id.
++ */
++ PRUint32 GetCharExtents(char aChar, cairo_text_extents_t* aExtents);
++
++ nsRefPtr<gfxFcFont> mGfxFont;
++ FT_Face mFace;
++};
++
+ /**
+ * gfxPangoFcFont:
+ *
+@@ -2029,14 +2107,18 @@
+ gfxFcFont::gfxFcFont(cairo_scaled_font_t *aCairoFont,
+ gfxFontEntry *aFontEntry,
+ const gfxFontStyle *aFontStyle)
+- : gfxFT2FontBase(aCairoFont, aFontEntry, aFontStyle)
++ : gfxFont(aFontEntry, aFontStyle),
++ mCairoFont(aCairoFont),
++ mHasMetrics(PR_FALSE)
+ {
+- cairo_scaled_font_set_user_data(mScaledFont, &sGfxFontKey, this, NULL);
++ cairo_scaled_font_reference(mCairoFont);
++ cairo_scaled_font_set_user_data(mCairoFont, &sGfxFontKey, this, NULL);
+ }
+
+ gfxFcFont::~gfxFcFont()
+ {
+- cairo_scaled_font_set_user_data(mScaledFont, &sGfxFontKey, NULL, NULL);
++ cairo_scaled_font_set_user_data(mCairoFont, &sGfxFontKey, NULL, NULL);
++ cairo_scaled_font_destroy(mCairoFont);
+ }
+
+ /* static */ void
+@@ -2129,7 +2211,7 @@
+ if (!font)
+ return NULL;
+
+- gfxFT2LockedFace face(font);
++ LockedFTFace face(font);
+ if (!face.get())
+ return NULL;
+
+@@ -2320,6 +2402,400 @@
+ return fontSet;
+ }
+
++PRUint32
++gfxFcFont::GetGlyph(PRUint32 aCharCode)
++{
++ // FcFreeTypeCharIndex needs to lock the FT_Face and can end up searching
++ // through all the postscript glyph names in the font. Therefore use a
++ // lightweight cache, which is stored on the cairo_font_face_t.
++
++ cairo_font_face_t *face =
++ cairo_scaled_font_get_font_face(CairoScaledFont());
++
++ if (cairo_font_face_status(face) != CAIRO_STATUS_SUCCESS)
++ return 0;
++
++ // This cache algorithm and size is based on what is done in
++ // cairo_scaled_font_text_to_glyphs and pango_fc_font_real_get_glyph. I
++ // think the concept is that adjacent characters probably come mostly from
++ // one Unicode block. This assumption is probably not so valid with
++ // scripts with large character sets as used for East Asian languages.
++
++ struct CmapCacheSlot {
++ PRUint32 mCharCode;
++ PRUint32 mGlyphIndex;
++ };
++ const PRUint32 kNumSlots = 256;
++ static cairo_user_data_key_t sCmapCacheKey;
++
++ CmapCacheSlot *slots = static_cast<CmapCacheSlot*>
++ (cairo_font_face_get_user_data(face, &sCmapCacheKey));
++
++ if (!slots) {
++ // cairo's caches can keep some cairo_font_faces alive past our last
++ // destroy, so the destroy function (free) for the cache must be
++ // callable from cairo without any assumptions about what other
++ // modules have not been shutdown.
++ slots = static_cast<CmapCacheSlot*>
++ (calloc(kNumSlots, sizeof(CmapCacheSlot)));
++ if (!slots)
++ return 0;
++
++ cairo_status_t status =
++ cairo_font_face_set_user_data(face, &sCmapCacheKey, slots, free);
++ if (status != CAIRO_STATUS_SUCCESS) { // OOM
++ free(slots);
++ return 0;
++ }
++
++ // Invalidate slot 0 by setting its char code to something that would
++ // never end up in slot 0. All other slots are already invalid
++ // because they have mCharCode = 0 and a glyph for char code 0 will
++ // always be in the slot 0.
++ slots[0].mCharCode = 1;
++ }
++
++ CmapCacheSlot *slot = &slots[aCharCode % kNumSlots];
++ if (slot->mCharCode != aCharCode) {
++ slot->mCharCode = aCharCode;
++ slot->mGlyphIndex = LockedFTFace(this).GetGlyph(aCharCode);
++ }
++
++ return slot->mGlyphIndex;
++}
++
++void
++gfxFcFont::GetGlyphExtents(PRUint32 aGlyph, cairo_text_extents_t* aExtents)
++{
++ NS_PRECONDITION(aExtents != NULL, "aExtents must not be NULL");
++
++ cairo_glyph_t glyphs[1];
++ glyphs[0].index = aGlyph;
++ glyphs[0].x = 0.0;
++ glyphs[0].y = 0.0;
++ // cairo does some caching for us here but perhaps a small gain could be
++ // made by caching more. It is usually only the advance that is needed,
++ // so caching only the advance could allow many requests to be cached with
++ // little memory use. Ideally this cache would be merged with
++ // gfxGlyphExtents.
++ cairo_scaled_font_glyph_extents(CairoScaledFont(), glyphs, 1, aExtents);
++}
++
++PRUint32
++LockedFTFace::GetGlyph(PRUint32 aCharCode)
++{
++ if (NS_UNLIKELY(!mFace))
++ return 0;
++
++ // FcFreeTypeCharIndex will search starting from the most recently
++ // selected charmap. This can cause non-determistic behavior when more
++ // than one charmap supports a character but with different glyphs, as
++ // with older versions of MS Gothic, for example. Always prefer a Unicode
++ // charmap, if there is one. (FcFreeTypeCharIndex usually does the
++ // appropriate Unicode conversion, but some fonts have non-Roman glyphs
++ // for FT_ENCODING_APPLE_ROMAN characters.)
++ if (!mFace->charmap || mFace->charmap->encoding != FT_ENCODING_UNICODE) {
++ FT_Select_Charmap(mFace, FT_ENCODING_UNICODE);
++ }
++
++ return FcFreeTypeCharIndex(mFace, aCharCode);
++}
++
++PRUint32
++LockedFTFace::GetCharExtents(char aChar,
++ cairo_text_extents_t* aExtents)
++{
++ NS_PRECONDITION(aExtents != NULL, "aExtents must not be NULL");
++
++ if (!mFace)
++ return 0;
++
++ FT_UInt gid = mGfxFont->GetGlyph(aChar);
++ if (gid) {
++ mGfxFont->GetGlyphExtents(gid, aExtents);
++ }
++
++ return gid;
++}
++
++// Snap a line to pixels while keeping the center and size of the line as
++// close to the original position as possible.
++//
++// Pango does similar snapping for underline and strikethrough when fonts are
++// hinted, but nsCSSRendering::GetTextDecorationRectInternal always snaps the
++// top and size of lines. Optimizing the distance between the line and
++// baseline is probably good for the gap between text and underline, but
++// optimizing the center of the line is better for positioning strikethough.
++static void
++SnapLineToPixels(gfxFloat& aOffset, gfxFloat& aSize)
++{
++ gfxFloat snappedSize = PR_MAX(NS_floor(aSize + 0.5), 1.0);
++ // Correct offset for change in size
++ gfxFloat offset = aOffset - 0.5 * (aSize - snappedSize);
++ // Snap offset
++ aOffset = NS_floor(offset + 0.5);
++ aSize = snappedSize;
++}
++
++void
++LockedFTFace::GetMetrics(gfxFont::Metrics* aMetrics, PRUint32* aSpaceGlyph)
++{
++ NS_PRECONDITION(aMetrics != NULL, "aMetrics must not be NULL");
++ NS_PRECONDITION(aSpaceGlyph != NULL, "aSpaceGlyph must not be NULL");
++
++ if (NS_UNLIKELY(!mFace)) {
++ // No face. This unfortunate situation might happen if the font
++ // file is (re)moved at the wrong time.
++ aMetrics->emHeight = mGfxFont->GetStyle()->size;
++ aMetrics->emAscent = 0.8 * aMetrics->emHeight;
++ aMetrics->emDescent = 0.2 * aMetrics->emHeight;
++ aMetrics->maxAscent = aMetrics->emAscent;
++ aMetrics->maxDescent = aMetrics->maxDescent;
++ aMetrics->maxHeight = aMetrics->emHeight;
++ aMetrics->internalLeading = 0.0;
++ aMetrics->externalLeading = 0.2 * aMetrics->emHeight;
++ aSpaceGlyph = 0;
++ aMetrics->spaceWidth = 0.5 * aMetrics->emHeight;
++ aMetrics->maxAdvance = aMetrics->spaceWidth;
++ aMetrics->aveCharWidth = aMetrics->spaceWidth;
++ aMetrics->zeroOrAveCharWidth = aMetrics->spaceWidth;
++ aMetrics->xHeight = 0.5 * aMetrics->emHeight;
++ aMetrics->underlineSize = aMetrics->emHeight / 14.0;
++ aMetrics->underlineOffset = -aMetrics->underlineSize;
++ aMetrics->strikeoutOffset = 0.25 * aMetrics->emHeight;
++ aMetrics->strikeoutSize = aMetrics->underlineSize;
++ aMetrics->superscriptOffset = aMetrics->xHeight;
++ aMetrics->subscriptOffset = aMetrics->xHeight;
++
++ return;
++ }
++
++ const FT_Size_Metrics& ftMetrics = mFace->size->metrics;
++
++ gfxFloat emHeight;
++ // Scale for vertical design metric conversion: pixels per design unit.
++ gfxFloat yScale;
++ if (FT_IS_SCALABLE(mFace)) {
++ // Prefer FT_Size_Metrics::x_scale to x_ppem as x_ppem does not
++ // have subpixel accuracy.
++ //
++ // FT_Size_Metrics::y_scale is in 16.16 fixed point format. Its
++ // (fractional) value is a factor that converts vertical metrics from
++ // design units to units of 1/64 pixels, so that the result may be
++ // interpreted as pixels in 26.6 fixed point format.
++ yScale = FLOAT_FROM_26_6(FLOAT_FROM_16_16(ftMetrics.y_scale));
++ emHeight = mFace->units_per_EM * yScale;
++ } else { // Not scalable.
++ // FT_Size_Metrics doc says x_scale is "only relevant for scalable
++ // font formats".
++ gfxFloat emUnit = mFace->units_per_EM;
++ emHeight = ftMetrics.y_ppem;
++ yScale = emHeight / emUnit;
++ }
++
++ TT_OS2 *os2 =
++ static_cast<TT_OS2*>(FT_Get_Sfnt_Table(mFace, ft_sfnt_os2));
++
++ aMetrics->maxAscent = FLOAT_FROM_26_6(ftMetrics.ascender);
++ aMetrics->maxDescent = -FLOAT_FROM_26_6(ftMetrics.descender);
++ aMetrics->maxAdvance = FLOAT_FROM_26_6(ftMetrics.max_advance);
++
++ gfxFloat lineHeight;
++ if (os2 && os2->sTypoAscender) {
++ aMetrics->emAscent = os2->sTypoAscender * yScale;
++ aMetrics->emDescent = -os2->sTypoDescender * yScale;
++ FT_Short typoHeight =
++ os2->sTypoAscender - os2->sTypoDescender + os2->sTypoLineGap;
++ lineHeight = typoHeight * yScale;
++
++ // maxAscent/maxDescent get used for frame heights, and some fonts
++ // don't have the HHEA table ascent/descent set (bug 279032).
++ if (aMetrics->emAscent > aMetrics->maxAscent)
++ aMetrics->maxAscent = aMetrics->emAscent;
++ if (aMetrics->emDescent > aMetrics->maxDescent)
++ aMetrics->maxDescent = aMetrics->emDescent;
++ } else {
++ aMetrics->emAscent = aMetrics->maxAscent;
++ aMetrics->emDescent = aMetrics->maxDescent;
++ lineHeight = FLOAT_FROM_26_6(ftMetrics.height);
++ }
++
++ cairo_text_extents_t extents;
++ *aSpaceGlyph = GetCharExtents(' ', &extents);
++ if (*aSpaceGlyph) {
++ aMetrics->spaceWidth = extents.x_advance;
++ } else {
++ aMetrics->spaceWidth = aMetrics->maxAdvance; // guess
++ }
++
++ aMetrics->zeroOrAveCharWidth = 0.0;
++ if (GetCharExtents('0', &extents)) {
++ aMetrics->zeroOrAveCharWidth = extents.x_advance;
++ }
++
++ // Prefering a measured x over sxHeight because sxHeight doesn't consider
++ // hinting, but maybe the x extents are not quite right in some fancy
++ // script fonts. CSS 2.1 suggests possibly using the height of an "o",
++ // which would have a more consistent glyph across fonts.
++ if (GetCharExtents('x', &extents) && extents.y_bearing < 0.0) {
++ aMetrics->xHeight = -extents.y_bearing;
++ aMetrics->aveCharWidth = extents.x_advance;
++ } else {
++ if (os2 && os2->sxHeight) {
++ aMetrics->xHeight = os2->sxHeight * yScale;
++ } else {
++ // CSS 2.1, section 4.3.2 Lengths: "In the cases where it is
++ // impossible or impractical to determine the x-height, a value of
++ // 0.5em should be used."
++ aMetrics->xHeight = 0.5 * emHeight;
++ }
++ aMetrics->aveCharWidth = 0.0; // updated below
++ }
++ // aveCharWidth is used for the width of text input elements so be
++ // liberal rather than conservative in the estimate.
++ if (os2 && os2->xAvgCharWidth) {
++ // Round to pixels as this is compared with maxAdvance to guess
++ // whether this is a fixed width font.
++ gfxFloat avgCharWidth =
++ ScaleRoundDesignUnits(os2->xAvgCharWidth, ftMetrics.x_scale);
++ aMetrics->aveCharWidth =
++ PR_MAX(aMetrics->aveCharWidth, avgCharWidth);
++ }
++ aMetrics->aveCharWidth =
++ PR_MAX(aMetrics->aveCharWidth, aMetrics->zeroOrAveCharWidth);
++ if (aMetrics->aveCharWidth == 0.0) {
++ aMetrics->aveCharWidth = aMetrics->spaceWidth;
++ }
++ if (aMetrics->zeroOrAveCharWidth == 0.0) {
++ aMetrics->zeroOrAveCharWidth = aMetrics->aveCharWidth;
++ }
++ // Apparently hinting can mean that max_advance is not always accurate.
++ aMetrics->maxAdvance =
++ PR_MAX(aMetrics->maxAdvance, aMetrics->aveCharWidth);
++
++ // gfxFont::Metrics::underlineOffset is the position of the top of the
++ // underline.
++ //
++ // FT_FaceRec documentation describes underline_position as "the
++ // center of the underlining stem". This was the original definition
++ // of the PostScript metric, but in the PostScript table of OpenType
++ // fonts the metric is "the top of the underline"
++ // (http://www.microsoft.com/typography/otspec/post.htm), and FreeType
++ // (up to version 2.3.7) doesn't make any adjustment.
++ //
++ // Therefore get the underline position directly from the table
++ // ourselves when this table exists. Use FreeType's metrics for
++ // other (including older PostScript) fonts.
++ if (mFace->underline_position && mFace->underline_thickness) {
++ aMetrics->underlineSize = mFace->underline_thickness * yScale;
++ TT_Postscript *post = static_cast<TT_Postscript*>
++ (FT_Get_Sfnt_Table(mFace, ft_sfnt_post));
++ if (post && post->underlinePosition) {
++ aMetrics->underlineOffset = post->underlinePosition * yScale;
++ } else {
++ aMetrics->underlineOffset = mFace->underline_position * yScale
++ + 0.5 * aMetrics->underlineSize;
++ }
++ } else { // No underline info.
++ // Imitate Pango.
++ aMetrics->underlineSize = emHeight / 14.0;
++ aMetrics->underlineOffset = -aMetrics->underlineSize;
++ }
++
++ if (os2 && os2->yStrikeoutSize && os2->yStrikeoutPosition) {
++ aMetrics->strikeoutSize = os2->yStrikeoutSize * yScale;
++ aMetrics->strikeoutOffset = os2->yStrikeoutPosition * yScale;
++ } else { // No strikeout info.
++ aMetrics->strikeoutSize = aMetrics->underlineSize;
++ // Use OpenType spec's suggested position for Roman font.
++ aMetrics->strikeoutOffset = emHeight * 409.0 / 2048.0
++ + 0.5 * aMetrics->strikeoutSize;
++ }
++ SnapLineToPixels(aMetrics->strikeoutOffset, aMetrics->strikeoutSize);
++
++ if (os2 && os2->ySuperscriptYOffset) {
++ gfxFloat val = ScaleRoundDesignUnits(os2->ySuperscriptYOffset,
++ ftMetrics.y_scale);
++ aMetrics->superscriptOffset = PR_MAX(1.0, val);
++ } else {
++ aMetrics->superscriptOffset = aMetrics->xHeight;
++ }
++
++ if (os2 && os2->ySubscriptYOffset) {
++ gfxFloat val = ScaleRoundDesignUnits(os2->ySubscriptYOffset,
++ ftMetrics.y_scale);
++ // some fonts have the incorrect sign.
++ val = fabs(val);
++ aMetrics->subscriptOffset = PR_MAX(1.0, val);
++ } else {
++ aMetrics->subscriptOffset = aMetrics->xHeight;
++ }
++
++ aMetrics->maxHeight = aMetrics->maxAscent + aMetrics->maxDescent;
++
++ // Make the line height an integer number of pixels so that lines will be
++ // equally spaced (rather than just being snapped to pixels, some up and
++ // some down). Layout calculates line height from the emHeight +
++ // internalLeading + externalLeading, but first each of these is rounded
++ // to layout units. To ensure that the result is an integer number of
++ // pixels, round each of the components to pixels.
++ aMetrics->emHeight = NS_floor(emHeight + 0.5);
++
++ // maxHeight will normally be an integer, but round anyway in case
++ // FreeType is configured differently.
++ aMetrics->internalLeading =
++ NS_floor(aMetrics->maxHeight - aMetrics->emHeight + 0.5);
++
++ // Text input boxes currently don't work well with lineHeight
++ // significantly less than maxHeight (with Verdana, for example).
++ lineHeight = NS_floor(PR_MAX(lineHeight, aMetrics->maxHeight) + 0.5);
++ aMetrics->externalLeading =
++ lineHeight - aMetrics->internalLeading - aMetrics->emHeight;
++
++ // Ensure emAscent + emDescent == emHeight
++ gfxFloat sum = aMetrics->emAscent + aMetrics->emDescent;
++ aMetrics->emAscent = sum > 0.0 ?
++ aMetrics->emAscent * aMetrics->emHeight / sum : 0.0;
++ aMetrics->emDescent = aMetrics->emHeight - aMetrics->emAscent;
++}
++
++const gfxFont::Metrics&
++gfxFcFont::GetMetrics()
++{
++ if (mHasMetrics)
++ return mMetrics;
++
++ if (NS_UNLIKELY(GetStyle()->size <= 0.0)) {
++ new(&mMetrics) gfxFont::Metrics(); // zero initialize
++ mSpaceGlyph = 0;
++ } else {
++ LockedFTFace(this).GetMetrics(&mMetrics, &mSpaceGlyph);
++ }
++
++ SanitizeMetrics(&mMetrics, PR_FALSE);
++
++#if 0
++ // printf("font name: %s %f\n", NS_ConvertUTF16toUTF8(GetName()).get(), GetStyle()->size);
++ // printf ("pango font %s\n", pango_font_description_to_string (pango_font_describe (font)));
++
++ fprintf (stderr, "Font: %s\n", NS_ConvertUTF16toUTF8(GetName()).get());
++ fprintf (stderr, " emHeight: %f emAscent: %f emDescent: %f\n", mMetrics.emHeight, mMetrics.emAscent, mMetrics.emDescent);
++ fprintf (stderr, " maxAscent: %f maxDescent: %f\n", mMetrics.maxAscent, mMetrics.maxDescent);
++ fprintf (stderr, " internalLeading: %f externalLeading: %f\n", mMetrics.externalLeading, mMetrics.internalLeading);
++ fprintf (stderr, " spaceWidth: %f aveCharWidth: %f xHeight: %f\n", mMetrics.spaceWidth, mMetrics.aveCharWidth, mMetrics.xHeight);
++ fprintf (stderr, " uOff: %f uSize: %f stOff: %f stSize: %f suOff: %f suSize: %f\n", mMetrics.underlineOffset, mMetrics.underlineSize, mMetrics.strikeoutOffset, mMetrics.strikeoutSize, mMetrics.superscriptOffset, mMetrics.subscriptOffset);
++#endif
++
++ mHasMetrics = PR_TRUE;
++ return mMetrics;
++}
++
++nsString
++gfxFcFont::GetUniqueName()
++{
++ return GetName();
++}
++
+ /**
+ ** gfxTextRun
+ *
+@@ -2637,6 +3113,47 @@
+ return scaledFont;
+ }
+
++PRBool
++gfxFcFont::SetupCairoFont(gfxContext *aContext)
++{
++ cairo_t *cr = aContext->GetCairo();
++
++ // The scaled font ctm is not relevant right here because
++ // cairo_set_scaled_font does not record the scaled font itself, but
++ // merely the font_face, font_matrix, font_options. The scaled_font used
++ // for the target can be different from the scaled_font passed to
++ // cairo_set_scaled_font. (Unfortunately we have measured only for an
++ // identity ctm.)
++ cairo_scaled_font_t *cairoFont = CairoScaledFont();
++
++ if (cairo_scaled_font_status(cairoFont) != CAIRO_STATUS_SUCCESS) {
++ // Don't cairo_set_scaled_font as that would propagate the error to
++ // the cairo_t, precluding any further drawing.
++ return PR_FALSE;
++ }
++ // Thoughts on which font_options to set on the context:
++ //
++ // cairoFont has been created for screen rendering.
++ //
++ // When the context is being used for screen rendering, we should set
++ // font_options such that the same scaled_font gets used (when the ctm is
++ // the same). The use of explicit font_options recorded in
++ // CreateScaledFont ensures that this will happen.
++ //
++ // XXXkt: For pdf and ps surfaces, I don't know whether it's better to
++ // remove surface-specific options, or try to draw with the same
++ // scaled_font that was used to measure. As the same font_face is being
++ // used, its font_options will often override some values anyway (unless
++ // perhaps we remove those from the FcPattern at face creation).
++ //
++ // I can't see any significant difference in printing, irrespective of
++ // what is set here. It's too late to change things here as measuring has
++ // already taken place. We should really be measuring with a different
++ // font for pdf and ps surfaces (bug 403513).
++ cairo_set_scaled_font(cr, cairoFont);
++ return PR_TRUE;
++}
++
+ static void
+ SetupClusterBoundaries(gfxTextRun* aTextRun, const gchar *aUTF8, PRUint32 aUTF8Length,
+ PRUint32 aUTF16Offset, PangoAnalysis *aAnalysis)
diff --git a/www/firefox3-devel/files/patch-js-src-config_config.mk b/www/firefox3-devel/files/patch-js-src-config_config.mk
index 4120407a7789..13bf2e58a794 100644
--- a/www/firefox3-devel/files/patch-js-src-config_config.mk
+++ b/www/firefox3-devel/files/patch-js-src-config_config.mk
@@ -1,11 +1,10 @@
---- js/src/config/config.mk.orig 2009-04-28 11:14:01.760089946 +0000
-+++ js/src/config/config.mk 2009-04-28 11:14:30.311093216 +0000
-@@ -490,7 +490,7 @@
- INCLUDES = $(LOCAL_INCLUDES) $(REQ_INCLUDES) $(REQ_INCLUDES_SDK) -I$(PUBLIC) $(OS_INCLUDES)
-
- ifndef MOZILLA_INTERNAL_API
--INCLUDES += -I$(LIBXUL_DIST)/sdk/include
-+INCLUDES += -I$(LIBXUL_DIST)/sdk/include -I%%LOCALBASE%%/include
- endif
-
- include $(topsrcdir)/config/static-checking-config.mk
+--- js/src/config/config.mk.orig 2009-08-07 00:49:23.000000000 +0200
++++ js/src/config/config.mk 2009-08-09 20:50:05.000000000 +0200
+@@ -506,6 +506,7 @@
+ -I$(srcdir) \
+ -I. \
+ -I$(DIST)/include -I$(DIST)/include/nsprpub \
++ -I%%LOCALBASE%%/include \
+ $(if $(LIBXUL_SDK),-I$(LIBXUL_SDK)/include -I$(LIBXUL_SDK)/include/nsprpub) \
+ $(OS_INCLUDES) \
+ $(NULL)
diff --git a/www/firefox3-devel/files/patch-js-src-configure.in b/www/firefox3-devel/files/patch-js-src-configure.in
new file mode 100644
index 000000000000..75f017bc4d68
--- /dev/null
+++ b/www/firefox3-devel/files/patch-js-src-configure.in
@@ -0,0 +1,13 @@
+--- js/src/configure.in.orig 2009-09-21 00:26:58.000000000 +0200
++++ js/src/configure.in 2009-10-08 07:00:27.000000000 +0200
+@@ -2456,10 +2456,6 @@
+ ENABLE_JIT=1
+ NANOJIT_ARCH=ARM
+ ;;
+-sparc*-*)
+- ENABLE_JIT=1
+- NANOJIT_ARCH=Sparc
+- ;;
+ esac
+
+ MOZ_ARG_DISABLE_BOOL(jit,
diff --git a/www/firefox3-devel/files/patch-js-src-jslock.cpp b/www/firefox3-devel/files/patch-js-src-jslock.cpp
new file mode 100644
index 000000000000..7aea14d0ebaf
--- /dev/null
+++ b/www/firefox3-devel/files/patch-js-src-jslock.cpp
@@ -0,0 +1,18 @@
+--- js/src/jslock.cpp.orig 2009-10-07 20:15:38.000000000 +0200
++++ js/src/jslock.cpp 2009-10-07 21:36:14.000000000 +0200
+@@ -160,8 +160,13 @@
+ unsigned int res;
+
+ __asm__ __volatile__ (
+- "stbar\n"
+- "cas [%1],%2,%3\n"
++ "membar #StoreLoad | #LoadLoad\n"
++# if defined (__sparc64__)
++ "casx [%1],%2,%3\n"
++# else
++ "cas [%1],%2,%3\n" /* 32-bit version */
++# endif
++ "membar #StoreLoad | #LoadLoad\n"
+ "cmp %2,%3\n"
+ "be,a 1f\n"
+ "mov 1,%0\n"
diff --git a/www/firefox3-devel/files/patch-js_src_jsnum.cpp b/www/firefox3-devel/files/patch-js_src_jsnum.cpp
index b4024468f8e9..cf29e7c9a869 100644
--- a/www/firefox3-devel/files/patch-js_src_jsnum.cpp
+++ b/www/firefox3-devel/files/patch-js_src_jsnum.cpp
@@ -1,16 +1,16 @@
---- js/src/jsnum.cpp.orig 2009-04-28 11:19:57.888134991 +0000
-+++ js/src/jsnum.cpp 2009-04-28 11:21:35.786147448 +0000
-@@ -45,6 +45,9 @@
- #if defined(XP_WIN) || defined(XP_OS2)
- #include <float.h>
- #endif
+--- js/src/jsnum.cpp.orig 2009-10-14 18:03:30.000000000 +0200
++++ js/src/jsnum.cpp 2009-10-15 21:49:44.000000000 +0200
+@@ -43,6 +43,9 @@
+ /*
+ * JS number type and wrapper class.
+ */
+#if defined(__FreeBSD__)
+#include <sys/param.h>
+#endif
#ifdef XP_OS2
#define _PC_53 PC_53
#define _MCW_EM MCW_EM
-@@ -659,8 +662,16 @@
+@@ -691,8 +694,16 @@
#else
diff --git a/www/firefox3-devel/files/patch-layout_generic_Makefile.in b/www/firefox3-devel/files/patch-layout_generic_Makefile.in
index da29a9e18759..e39242751a1f 100644
--- a/www/firefox3-devel/files/patch-layout_generic_Makefile.in
+++ b/www/firefox3-devel/files/patch-layout_generic_Makefile.in
@@ -1,9 +1,9 @@
---- layout/generic/Makefile.in.orig 2009-04-28 11:16:16.059107000 +0000
-+++ layout/generic/Makefile.in 2009-04-28 11:16:41.171110062 +0000
-@@ -188,9 +188,10 @@
+--- layout/generic/Makefile.in.orig 2009-08-07 00:49:41.000000000 +0200
++++ layout/generic/Makefile.in 2009-08-09 20:54:53.000000000 +0200
+@@ -187,9 +187,10 @@
-I$(srcdir)/../../content/base/src \
-I$(srcdir)/../../content/html/content/src \
- -I$(srcdir)/../../dom/src/base \
+ -I$(srcdir)/../../dom/base \
- $(MOZ_CAIRO_CFLAGS) \
$(NULL)
diff --git a/www/firefox3-devel/files/patch-media_liboggplay_audio_sydney_audio.h b/www/firefox3-devel/files/patch-media-libsydneyaudio-include-sydney_audio.h
index d8e318e9bcb2..d8e318e9bcb2 100644
--- a/www/firefox3-devel/files/patch-media_liboggplay_audio_sydney_audio.h
+++ b/www/firefox3-devel/files/patch-media-libsydneyaudio-include-sydney_audio.h
diff --git a/www/firefox3-devel/files/patch-media_liboggplay_src_liboggplay_std_semaphore.h b/www/firefox3-devel/files/patch-media_liboggplay_src_liboggplay_std_semaphore.h
deleted file mode 100644
index 3c597ca853b3..000000000000
--- a/www/firefox3-devel/files/patch-media_liboggplay_src_liboggplay_std_semaphore.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- media/liboggplay/src/liboggplay/std_semaphore.h.orig 2009-04-24 01:46:48.000000000 +0000
-+++ media/liboggplay/src/liboggplay/std_semaphore.h 2009-04-28 08:39:25.739957779 +0000
-@@ -74,7 +74,7 @@
- * @retval non-zero on error
- */
-
--#if defined(linux) || defined(SOLARIS)
-+#if defined(linux) || defined(SOLARIS) || defined(__FreeBSD__)
- #include <semaphore.h>
- #define SEM_CREATE(p,s) sem_init(&(p), 1, s)
- #define SEM_SIGNAL(p) sem_post(&(p))
diff --git a/www/firefox3-devel/files/patch-media_liboggz_include_oggz_oggz_off_t_generated.h b/www/firefox3-devel/files/patch-media_liboggz_include_oggz_oggz_off_t_generated.h
index b4ceef6139a0..c4d71e225e21 100644
--- a/www/firefox3-devel/files/patch-media_liboggz_include_oggz_oggz_off_t_generated.h
+++ b/www/firefox3-devel/files/patch-media_liboggz_include_oggz_oggz_off_t_generated.h
@@ -1,11 +1,11 @@
---- media/liboggz/include/oggz/oggz_off_t_generated.h.orig 2009-04-24 01:46:48.000000000 +0000
-+++ media/liboggz/include/oggz/oggz_off_t_generated.h 2009-04-28 08:44:02.369576627 +0000
+--- media/liboggz/include/oggz/oggz_off_t_generated.h.orig 2009-08-07 00:49:53.000000000 +0200
++++ media/liboggz/include/oggz/oggz_off_t_generated.h 2009-08-09 20:57:55.000000000 +0200
@@ -59,7 +59,7 @@
#include <sys/types.h>
--#if defined(__APPLE__) || defined(SOLARIS)
-+#if defined(__APPLE__) || defined(SOLARIS) || defined (__FreeBSD__)
+-#if defined(__APPLE__) || defined(SOLARIS) || defined(OS2)
++#if defined(__APPLE__) || defined(SOLARIS) || defined(OS2) || defined (__FreeBSD__)
typedef off_t oggz_off_t;
#else
typedef loff_t oggz_off_t;
diff --git a/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk b/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk
index c4ed8e5ba533..4d28f35649c1 100644
--- a/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk
+++ b/www/firefox3-devel/files/patch-security-coreconf-FreeBSD.mk
@@ -1,19 +1,31 @@
---- security/coreconf/FreeBSD.mk.orig 2008-07-06 00:10:00.000000000 -0500
-+++ security/coreconf/FreeBSD.mk 2008-07-06 00:12:34.000000000 -0500
-@@ -45,8 +45,12 @@
+--- security/coreconf/FreeBSD.mk.orig 2009-11-09 01:34:19.000000000 +0100
++++ security/coreconf/FreeBSD.mk 2009-11-11 18:15:55.000000000 +0100
+@@ -45,8 +45,24 @@
ifeq ($(OS_TEST),alpha)
CPU_ARCH = alpha
else
+ifeq ($(OS_TEST),amd64)
+CPU_ARCH = amd64
++else
++ifeq ($(OS_TEST),ia64)
++CPU_ARCH = ia64
++else
++ifeq ($(OS_TEST),powerpc)
++CPU_ARCH = powerpc
++else
++ifeq ($(OS_TEST),sparc64)
++CPU_ARCH = sparc64
+else
CPU_ARCH = x86
endif
+endif
++endif
++endif
++endif
OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -Wno-switch -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK
-@@ -73,7 +77,7 @@
+@@ -73,7 +89,7 @@
DLL_SUFFIX = so.1.0
endif
@@ -22,9 +34,9 @@
ifdef MAPFILE
MKSHLIB += -Wl,--version-script,$(MAPFILE)
endif
-@@ -82,4 +86,4 @@
+@@ -82,4 +98,4 @@
G++INCLUDES = -I/usr/include/g++
-INCLUDES += -I/usr/X11R6/include
-+#INCLUDES += -I/usr/X11R6/include
++#INCLUDES += -I/usr/local/include
diff --git a/www/firefox3-devel/files/patch-toolkit_mozapps_installer_packager.mk b/www/firefox3-devel/files/patch-toolkit_mozapps_installer_packager.mk
deleted file mode 100644
index 635c3c79c13c..000000000000
--- a/www/firefox3-devel/files/patch-toolkit_mozapps_installer_packager.mk
+++ /dev/null
@@ -1,11 +0,0 @@
---- toolkit/mozapps/installer/packager.mk.orig 2007-09-26 13:45:01.000000000 -0400
-+++ toolkit/mozapps/installer/packager.mk 2007-09-26 13:47:29.000000000 -0400
-@@ -409,7 +409,7 @@
- (cd $(DIST)/sdk/include && tar $(TAR_CREATE_FLAGS) - .) | \
- (cd $(DESTDIR)$(includedir)/stable && tar -xf -)
- # The dist/include has module subdirectories that we need to flatten
-- find $(DIST)/include -xtype f -exec $(SYSINSTALL) $(IFLAGS1) {} $(DESTDIR)$(includedir)/unstable \;
-+ find $(DIST)/include -type f -o -type l -exec $(SYSINSTALL) $(IFLAGS1) {} $(DESTDIR)$(includedir)/unstable \;
- # IDL directory is stable (dist/sdk/idl) and unstable (dist/idl)
- $(NSINSTALL) -D $(DESTDIR)$(idldir)/stable
- $(NSINSTALL) -D $(DESTDIR)$(idldir)/unstable
diff --git a/www/firefox3-devel/files/patch-toolkit_mozapps_update_src_updater_updater.cpp b/www/firefox3-devel/files/patch-toolkit_mozapps_update_src_updater_updater.cpp
new file mode 100644
index 000000000000..968958a22e89
--- /dev/null
+++ b/www/firefox3-devel/files/patch-toolkit_mozapps_update_src_updater_updater.cpp
@@ -0,0 +1,20 @@
+--- toolkit/mozapps/update/src/updater/updater.cpp.orig 2009-09-16 04:41:19.000000000 +0200
++++ toolkit/mozapps/update/src/updater/updater.cpp 2009-09-18 01:49:47.000000000 +0200
+@@ -511,7 +511,7 @@
+ struct stat ss;
+
+ AutoFile sfile = NS_tfopen(spath, NS_T("rb"));
+- if (sfile == NULL || fstat(fileno(sfile), &ss)) {
++ if (sfile == NULL || fstat(fileno((FILE*)sfile), &ss)) {
+ LOG(("copy_file: failed to open or stat: %p," LOG_S ",%d\n", sfile.get(), spath, errno));
+ return READ_ERROR;
+ }
+@@ -1660,7 +1660,7 @@
+ return READ_ERROR;
+
+ struct stat ms;
+- rv = fstat(fileno(mfile), &ms);
++ rv = fstat(fileno((FILE*)mfile), &ms);
+ if (rv)
+ return READ_ERROR;
+
diff --git a/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-xptcprivate.h b/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-xptcprivate.h
new file mode 100644
index 000000000000..0440ce0a263f
--- /dev/null
+++ b/www/firefox3-devel/files/patch-xpcom-reflect-xptcall-src-xptcprivate.h
@@ -0,0 +1,20 @@
+--- xpcom/reflect/xptcall/src/xptcprivate.h.orig 2009-11-09 21:43:49.000000000 -0800
++++ xpcom/reflect/xptcall/src/xptcprivate.h 2009-11-09 21:44:05.000000000 -0800
+@@ -45,7 +45,7 @@
+
+ class xptiInterfaceEntry;
+
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n() = 0;
+ #else
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n(PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64) = 0;
+@@ -62,7 +62,7 @@
+ #undef STUB_ENTRY
+ #undef SENTINEL_ENTRY
+
+-#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))
++#if !defined(__ia64)
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n();
+ #else
+ #define STUB_ENTRY(n) NS_IMETHOD Stub##n(PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64);
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
index 3681d9b80f73..244af2e49204 100644
--- 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
@@ -1,16 +1,16 @@
---- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig 2009-03-05 22:32:55.000000000 +0100
-+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in 2009-04-21 14:15:46.135700268 +0200
-@@ -70,6 +70,9 @@
- ifeq (Darwin,$(OS_ARCH))
+--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig 2009-09-16 04:41:25.000000000 +0200
++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in 2009-10-03 21:30:21.000000000 +0200
+@@ -73,6 +73,9 @@
DEFINES += -DKEEP_STACK_16_BYTE_ALIGNED
+ CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
endif
+ifeq (x86_64,$(OS_TEST))
+CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp
+endif
endif
endif
- #
-@@ -87,7 +90,7 @@
+
+@@ -96,7 +99,7 @@
endif
endif
# IA64 Linux
@@ -19,20 +19,18 @@
ifneq (,$(findstring ia64,$(OS_TEST)))
CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp
ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s
-@@ -100,6 +103,12 @@
- CPPSRCS := xptcinvoke_amd64_openbsd.cpp xptcstubs_amd64_openbsd.cpp
- endif
+@@ -111,8 +114,8 @@
#
-+# FreeBSD/amd64
-+#
+ # FreeBSD/amd64
+ #
+-ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDx86_64)
+-CPPSRCS := xptcinvoke_amd64_linux.cpp xptcstubs_amd64_linux.cpp
+ifeq ($(OS_ARCH)$(OS_TEST),FreeBSDamd64)
+CPPSRCS := xptcinvoke_amd64_openbsd.cpp xptcstubs_amd64_openbsd.cpp
-+endif
-+#
- # BeOS/Intel (uses the same unixish_x86 code)
+ endif
#
- ifeq ($(OS_ARCH)$(OS_TEST),BeOSBePC)
-@@ -150,9 +159,15 @@
+ # BeOS/Intel (uses the same unixish_x86 code)
+@@ -165,9 +168,15 @@
ASFILES := xptcinvoke_asm_osf1_alpha.s xptcstubs_asm_osf1_alpha.s
endif
#
@@ -49,7 +47,7 @@
CPPSRCS := xptcinvoke_linux_alpha.cpp xptcstubs_linux_alpha.cpp
endif
#
-@@ -307,7 +322,7 @@
+@@ -322,7 +331,7 @@
#
# Linux/PPC
#
@@ -58,7 +56,7 @@
CPPSRCS := xptcinvoke_ppc_linux.cpp xptcstubs_ppc_linux.cpp
ASFILES := xptcinvoke_asm_ppc_linux.s xptcstubs_asm_ppc_linux.s
AS := $(CC) -c -x assembler-with-cpp
-@@ -385,6 +400,15 @@
+@@ -400,6 +409,15 @@
ASFILES := xptcinvoke_asm_sparc_netbsd.s xptcstubs_asm_sparc_netbsd.s
endif
#
diff --git a/www/firefox3-devel/files/releng6_pulseaudio b/www/firefox3-devel/files/releng6_pulseaudio
index 1f600320f362..2d83f3c1c441 100644
--- a/www/firefox3-devel/files/releng6_pulseaudio
+++ b/www/firefox3-devel/files/releng6_pulseaudio
@@ -1,34 +1,32 @@
---- media/libsydneyaudio/src/Makefile.in_orgi 2009-04-10 12:12:45.000000000 +0200
-+++ media/libsydneyaudio/src/Makefile.in 2009-04-10 12:13:12.000000000 +0200
+--- media/libsydneyaudio/src/Makefile.in.orig 2009-08-11 17:22:08.000000000 +0200
++++ media/libsydneyaudio/src/Makefile.in 2009-08-11 17:22:36.000000000 +0200
@@ -45,6 +45,12 @@
- LIBRARY_NAME = sydneyaudio
+ LIBRARY_NAME = sydneyaudio
FORCE_STATIC_LIB= 1
-
+
+ifeq ($(OS_ARCH),FreeBSD)
-+CSRCS = \
-+ sydney_audio_pulseaudio.c \
-+ $(NULL)
++CSRCS = \
++ sydney_audio_pulseaudio.c \
++ $(NULL)
+endif
+
ifeq ($(OS_ARCH),Linux)
- CSRCS = \
- sydney_audio_alsa.c \
-
---- toolkit/library/Makefile.in.orig 2009-04-24 03:47:06.000000000 +0200
-+++ toolkit/library/Makefile.in 2009-05-11 11:05:23.000000000 +0200
-@@ -228,12 +228,12 @@
+ CSRCS = \
+ sydney_audio_alsa.c \
+--- toolkit/library/Makefile.in.orig 2009-08-11 17:22:45.000000000 +0200
++++ toolkit/library/Makefile.in 2009-08-11 17:23:22.000000000 +0200
+@@ -231,12 +231,12 @@
endif
-
+
ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT))
--EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(MOZ_PANGO_LIBS) $(MOZ_GTK2_LIBS) $(XT_LIBS) -lgthread-2.0
-+EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(MOZ_PANGO_LIBS) $(MOZ_GTK2_LIBS) $(XT_LIBS) -lgthread-2.0 -lpulse -lpthread
+-EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XEXT_LIBS) $(XCOMPOSITE_LIBS) $(MOZ_PANGO_LIBS) $(MOZ_GTK2_LIBS) $(XT_LIBS) -lgthread-2.0
++EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XEXT_LIBS) $(XCOMPOSITE_LIBS) $(MOZ_PANGO_LIBS) $(MOZ_GTK2_LIBS) $(XT_LIBS) -lgthread-2.0 -lpulse -lpthread
EXTRA_DSO_LDOPTS += $(FT2_LIBS)
endif
-
+
ifeq (qt,$(MOZ_WIDGET_TOOLKIT))
-EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XT_LIBS) $(MOZ_QT_LIBS) -lgthread-2.0
+EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XT_LIBS) $(MOZ_QT_LIBS) -lgthread-2.0 -lpulse -lpthread
EXTRA_DSO_LDOPTS += $(FT2_LIBS)
endif
-
-
+
diff --git a/www/firefox3-devel/pkg-message b/www/firefox3-devel/pkg-message
index ab2cd1e23c64..a422e3af0259 100644
--- a/www/firefox3-devel/pkg-message
+++ b/www/firefox3-devel/pkg-message
@@ -37,7 +37,7 @@ 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-devel/Makefile.
+* Date/time stamp from www/firefox3-devel/Makefile.
* Where/when did the problem occur: configuring, building, or
running firefox
* How can you reproduce the problem?