aboutsummaryrefslogtreecommitdiff
path: root/www/firefox
diff options
context:
space:
mode:
authorFlorian Smeets <flo@FreeBSD.org>2013-08-08 18:42:03 +0000
committerFlorian Smeets <flo@FreeBSD.org>2013-08-08 18:42:03 +0000
commit48f9528b90d58ac57bc0dcf8b05e939026b26799 (patch)
treee865dbceb17400d2f950e44a8979cf576a6eee98 /www/firefox
parent1004b19b87434832a42045b63a6c0d71d11048c4 (diff)
Notes
Diffstat (limited to 'www/firefox')
-rw-r--r--www/firefox/Makefile38
-rw-r--r--www/firefox/Makefile.options2
-rw-r--r--www/firefox/distinfo4
-rw-r--r--www/firefox/files/patch-bug80348094
-rw-r--r--www/firefox/files/patch-bug80749222
-rw-r--r--www/firefox/files/patch-bug8269858
-rw-r--r--www/firefox/files/patch-bug851992373
-rw-r--r--www/firefox/files/patch-bug86275910
-rw-r--r--www/firefox/files/patch-bug878791 (renamed from www/firefox/files/patch-toolkit-components-osfile-osfile_unix_allthreads.jsm)0
-rw-r--r--www/firefox/files/patch-bug893397205
10 files changed, 682 insertions, 74 deletions
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
index 79ba698589fa..b41d77d97bca 100644
--- a/www/firefox/Makefile
+++ b/www/firefox/Makefile
@@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= firefox
-DISTVERSION= 22.0
+DISTVERSION= 23.0
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source
@@ -11,9 +11,9 @@ DISTNAME= ${PORTNAME}-${DISTVERSION}.source
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
-BUILD_DEPENDS= nspr>=4.9.6:${PORTSDIR}/devel/nspr \
- nss>=3.14.3:${PORTSDIR}/security/nss \
- sqlite3>=3.7.14.1:${PORTSDIR}/databases/sqlite3 \
+BUILD_DEPENDS= nspr>=4.10:${PORTSDIR}/devel/nspr \
+ nss>=3.15:${PORTSDIR}/security/nss \
+ sqlite3>=3.7.16.1:${PORTSDIR}/databases/sqlite3 \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \
cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \
unzip:${PORTSDIR}/archivers/unzip
@@ -45,7 +45,7 @@ MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \
--enable-application=browser \
--enable-official-branding
-OPTIONS_DEFINE= PGO WEBRTC
+OPTIONS_DEFINE= WEBRTC
OPTIONS_DEFAULT=WEBRTC
.include "${.CURDIR}/../../www/firefox/Makefile.options"
@@ -57,33 +57,6 @@ OPTIONS_SINGLE_AUDIO:=${OPTIONS_SINGLE_AUDIO:S/OSS//}
WRKSRC:= ${WRKDIR}/mozilla-release
-.if ${PORT_OPTIONS:MPGO}
-USE_GCC?= yes
-USE_DISPLAY= yes
-.include "${PORTSDIR}/Mk/bsd.python.mk"
-
-.undef GNU_CONFIGURE
-MOZ_OPTIONS+= ${CONFIGURE_TARGET}
-MAKEFILE= ${WRKSRC}/client.mk
-ALL_TARGET= profiledbuild
-MOZ_MK_OPTIONS+=PROFILE_GEN_SCRIPT="${PYTHON_CMD} \
- @MOZ_OBJDIR@/_profile/pgo/profileserver.py"
-.endif
-
-pre-extract:
-.if ${PORT_OPTIONS:MPGO}
- @${ECHO} "*****************************************************************"
- @${ECHO} "**************************** attention **************************"
- @${ECHO} "*****************************************************************"
- @${ECHO} "To build Firefox with PGO support you need a running X server and"
- @${ECHO} " build this port with an user who could access the X server! "
- @${ECHO} ""
- @${ECHO} "During the build a Firefox instance will start and run some test."
- @${ECHO} " Do not interrupt or close Firefox during this tests! "
- @${ECHO} "*****************************************************************"
- @sleep 10
-.endif
-
post-extract:
@${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' -e 's|@MOZILLA@|${MOZILLA}|' \
-e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|' \
@@ -91,7 +64,6 @@ post-extract:
post-patch:
@${REINPLACE_CMD} -e '/MOZPNG/s/=[0-9]*/=10511/' \
- -e '/^SQLITE_VERSION/s/=.*/=3.7.14.1/' \
${WRKSRC}/configure.in
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${WRKSRC}/browser/app/nsBrowserApp.cpp
diff --git a/www/firefox/Makefile.options b/www/firefox/Makefile.options
index 2636d411aae4..23feea6ee0c6 100644
--- a/www/firefox/Makefile.options
+++ b/www/firefox/Makefile.options
@@ -1,7 +1,7 @@
# -*- makefile-bsdmake -*-
OPTIONS_DEFINE+= DBUS DEBUG GCONF GIO GNOMEUI GNOMEVFS2 GSTREAMER \
- LIBPROXY LOGGING OPTIMIZED_CFLAGS
+ LIBPROXY LOGGING OPTIMIZED_CFLAGS PGO
OPTIONS_DEFAULT+= ALSA DBUS GIO LOGGING
OPTIONS_SINGLE+= AUDIO
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index ac6d99fc0121..b34a489f9980 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,2 +1,2 @@
-SHA256 (firefox-22.0.source.tar.bz2) = 040d4e7fb5076b6aa25f0d3851f8d98c2a2e72ef1599f4387f09f47f6096515e
-SIZE (firefox-22.0.source.tar.bz2) = 111109062
+SHA256 (firefox-23.0.source.tar.bz2) = 2d64bd12cfa80c57e4a7f4156c7b4fde725a6173dfe48e2fac12e1927faf563e
+SIZE (firefox-23.0.source.tar.bz2) = 115821591
diff --git a/www/firefox/files/patch-bug803480 b/www/firefox/files/patch-bug803480
index c15992fa36f8..1d99d93d7215 100644
--- a/www/firefox/files/patch-bug803480
+++ b/www/firefox/files/patch-bug803480
@@ -1,8 +1,55 @@
diff --git configure.in configure.in
-index fa283d0..936b6e0 100644
+index a0575dc..be327fd 100644
--- configure.in
+++ configure.in
-@@ -8229,16 +8229,26 @@ MOZ_ARG_DISABLE_BOOL(necko-wifi,
+@@ -4306,7 +4306,6 @@ NS_PRINTING=1
+ MOZ_PDF_PRINTING=
+ MOZ_DISABLE_CRYPTOLEGACY=
+ NSS_DISABLE_DBM=
+-NECKO_WIFI=1
+ NECKO_COOKIES=1
+ NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
+ USE_ARM_KUSER=
+@@ -4336,11 +4335,6 @@ case "${target}" in
+ fi
+
+ NSS_DISABLE_DBM=1
+- if test -z "$gonkdir"; then
+- NECKO_WIFI=
+- else
+- NECKO_WIFI=1
+- fi
+ MOZ_THEME_FASTSTRIPE=1
+ MOZ_TREE_FREETYPE=1
+ MOZ_MEMORY=1
+@@ -8485,28 +8479,39 @@ done
+ dnl
+ dnl option to disable necko's wifi scanner
+ dnl
++
++case "$OS_TARGET" in
++ OS2)
++ dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
++ ;;
++ Android)
++ if test -n "$gonkdir"; then
++ NECKO_WIFI=1
++ fi
++ ;;
++ Darwin|SunOS|WINNT)
++ NECKO_WIFI=1
++ ;;
++ Linux)
++ if test -z "$MOZ_ENABLE_DBUS"; then
++ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
++ fi
++ NECKO_WIFI=1
++ NECKO_WIFI_DBUS=1
++ ;;
++esac
++
+ MOZ_ARG_DISABLE_BOOL(necko-wifi,
+ [ --disable-necko-wifi Disable necko wifi scanner],
NECKO_WIFI=,
NECKO_WIFI=1)
@@ -16,26 +63,27 @@ index fa283d0..936b6e0 100644
- "$OS_ARCH" != "SunOS" -a \
- "$OS_ARCH" != "WINNT"; then
- AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
-+if test "$NECKO_WIFI"; then
-+ case "$OS_TARGET" in
-+ Android)
-+ ;;
-+ Darwin)
-+ ;;
-+ SunOS)
-+ ;;
-+ WINNT)
-+ ;;
-+ OS2)
-+ dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
-+ NECKO_WIFI=
-+ ;;
-+ *)
-+ if test -z "$MOZ_ENABLE_DBUS"; then
-+ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
-+ fi
-+ ;;
-+ esac
+-fi
+-
+ if test "$NECKO_WIFI"; then
+ AC_DEFINE(NECKO_WIFI)
+ _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
fi
+ AC_SUBST(NECKO_WIFI)
++AC_SUBST(NECKO_WIFI_DBUS)
- if test "$NECKO_WIFI"; then
+ dnl
+ dnl option to disable cookies
+diff --git netwerk/wifi/Makefile.in netwerk/wifi/Makefile.in
+index 39d7364..e8d276b 100644
+--- netwerk/wifi/Makefile.in
++++ netwerk/wifi/Makefile.in
+@@ -41,7 +41,7 @@ CPPSRCS += nsWifiScannerSolaris.cpp
+ OS_INCLUDES += $(GLIB_CFLAGS)
+ endif
+
+-ifdef MOZ_ENABLE_DBUS
++ifdef NECKO_WIFI_DBUS
+ CPPSRCS += nsWifiScannerDBus.cpp
+ OS_INCLUDES += $(MOZ_DBUS_GLIB_CFLAGS)
+ endif
diff --git a/www/firefox/files/patch-bug807492 b/www/firefox/files/patch-bug807492
index f9e5de6739ac..4b4e90f52ba1 100644
--- a/www/firefox/files/patch-bug807492
+++ b/www/firefox/files/patch-bug807492
@@ -17,17 +17,17 @@ diff --git configure.in configure.in
index c167461..8346c11 100644
--- configure.in
+++ configure.in
-@@ -5258,17 +5258,17 @@ if test -n "$MOZ_WEBRTC"; then
- *-android*|*-linuxandroid*)
- if test -n "$MOZ_B2G"; then
- MOZ_WEBRTC=1
- else
- dnl Make sure doesn't get matched by *-linux*
- MOZ_WEBRTC=
- fi
- ;;
-- *-linux*|*-mingw*|*-darwin*)
-+ *-linux*|*-mingw*|*-darwin*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
+@@ -5246,17 +5246,17 @@ if test "$NS_PRINTING"; then
+ AC_DEFINE(NS_PRINT_PREVIEW)
+ fi
+
+ dnl Turn off webrtc for OS's we don't handle yet, but allow
+ dnl --enable-webrtc to override. Can disable for everything in
+ dnl the master list above.
+ if test -n "$MOZ_WEBRTC"; then
+ case "$target" in
+- *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*)
++ *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
dnl Leave enabled
;;
*)
diff --git a/www/firefox/files/patch-bug826985 b/www/firefox/files/patch-bug826985
index 217655c0b81a..fe55ff667281 100644
--- a/www/firefox/files/patch-bug826985
+++ b/www/firefox/files/patch-bug826985
@@ -16,16 +16,16 @@ diff --git configure.in configure.in
index 55e4cd1..76567b3 100644
--- configure.in
+++ configure.in
-@@ -5294,6 +5294,9 @@ if test -n "$MOZ_WEBRTC"; then
+@@ -5309,6 +5309,9 @@ if test -n "$MOZ_WEBRTC"; then
MOZ_VP8_ENCODER=1
MOZ_VP8_ERROR_CONCEALMENT=1
+ dnl with libv4l2 we can support more cameras
+ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2)
+
- if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then
- dnl OpenSLES is only available in Android 2.3 and later; we'll change this
- dnl hard dependency to a dynamic load with graceful runtime failure before
+ dnl enable once Signaling lands
+ MOZ_WEBRTC_SIGNALING=1
+ AC_DEFINE(MOZ_WEBRTC_SIGNALING)
@@ -8981,6 +8984,10 @@ elif test "${OS_TARGET}" = "Android"; then
fi
fi
diff --git a/www/firefox/files/patch-bug851992 b/www/firefox/files/patch-bug851992
new file mode 100644
index 000000000000..3185452e2b44
--- /dev/null
+++ b/www/firefox/files/patch-bug851992
@@ -0,0 +1,373 @@
+diff --git a/config/Makefile.in b/config/Makefile.in
+--- config/Makefile.in
++++ config/Makefile.in
+@@ -97,16 +97,17 @@ export:: $(export-preqs)
+ -DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \
+ -DMOZ_NATIVE_HUNSPELL=$(MOZ_NATIVE_HUNSPELL) \
+ -DMOZ_NATIVE_BZ2=$(MOZ_NATIVE_BZ2) \
+ -DMOZ_NATIVE_ZLIB=$(MOZ_NATIVE_ZLIB) \
+ -DMOZ_NATIVE_PNG=$(MOZ_NATIVE_PNG) \
+ -DMOZ_NATIVE_JPEG=$(MOZ_NATIVE_JPEG) \
+ -DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \
+ -DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \
++ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
+ $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers
+ $(INSTALL) system_wrappers $(DIST)
+
+ GARBAGE_DIRS += system_wrappers
+ endif
+
+ ifdef WRAP_STL_INCLUDES
+ ifdef GNU_CXX
+diff --git a/config/system-headers b/config/system-headers
+--- config/system-headers
++++ config/system-headers
+@@ -1125,8 +1125,19 @@ gst/video/video.h
+ sys/msg.h
+ sys/ipc.h
+ sys/thr.h
+ sys/user.h
+ kvm.h
+ spawn.h
+ err.h
+ xlocale.h
++#if MOZ_NATIVE_ICU==1
++unicode/locid.h
++unicode/numsys.h
++unicode/ucal.h
++unicode/ucol.h
++unicode/udat.h
++unicode/udatpg.h
++unicode/uenum.h
++unicode/unum.h
++unicode/ustring.h
++#endif
+diff --git a/configure.in b/configure.in
+--- configure.in
++++ configure.in
+@@ -4134,16 +4134,32 @@ if test -n "$MOZ_NATIVE_FFI"; then
+ PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
+ else
+ PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
+ fi
+ MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
+ fi
+
+ dnl ========================================================
++dnl system icu support
++dnl ========================================================
++MOZ_NATIVE_ICU=
++MOZ_ARG_WITH_BOOL(system-icu,
++[ --with-system-icu
++ Use system icu (located with pkgconfig)],
++ MOZ_NATIVE_ICU=1)
++
++if test -n "$MOZ_NATIVE_ICU"; then
++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
++ MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
++fi
++
++AC_SUBST(MOZ_NATIVE_ICU)
++
++dnl ========================================================
+ dnl Java SDK support
+ dnl ========================================================
+
+ JAVA_BIN_PATH=
+ MOZ_ARG_WITH_STRING(java-bin-path,
+ [ --with-java-bin-path=dir
+ Location of Java binaries (java, javac, jar)],
+ JAVA_BIN_PATH=$withval)
+diff --git a/js/src/Makefile.in b/js/src/Makefile.in
+--- js/src/Makefile.in
++++ js/src/Makefile.in
+@@ -232,48 +232,54 @@ endif
+
+ #############################################
+ # BEGIN ECMAScript Internationalization API
+ #
+
+ # ICU headers need to be available whether we build with the complete
+ # Internationalization API or not - ICU stubs rely on them.
+
++ifdef MOZ_NATIVE_ICU
++LOCAL_INCLUDES += $(MOZ_ICU_CFLAGS)
++else
+ LOCAL_INCLUDES += \
+ -I$(topsrcdir)/../../intl/icu/source/common \
+ -I$(topsrcdir)/../../intl/icu/source/i18n \
+ $(NULL)
++endif
+
+ ifdef ENABLE_INTL_API
+
+ ifeq ($(OS_ARCH),WINNT)
+ # Parallel gmake is buggy on Windows
+ ICU_GMAKE_OPTIONS="-j1"
+ # Library names: On Windows, ICU uses modified library names for static
+ # and debug libraries.
+ ifdef MOZ_DEBUG
+ ICU_LIB_SUFFIX=d
+ endif
+ ICU_LIB_RENAME = $(foreach libname,$(ICU_LIB_NAMES),\
+ cp -p intl/icu/lib/s$(libname)$(ICU_LIB_SUFFIX).lib intl/icu/lib/$(libname).lib;)
+ endif
+
++ifndef MOZ_NATIVE_ICU
+ # - Build ICU as part of the "export" target, so things get built
+ # in the right order.
+ # - ICU requires GNU make according to its readme.html. pymake can't be used
+ # because it doesn't support order only dependencies.
+ # - Force ICU to use the standard suffix for object files because expandlibs
+ # will discard all files with a non-standard suffix (bug 857450).
+ # - Options for genrb: -k strict parsing; -R omit collation tailoring rules.
+ export::
+ $(GMAKE) $(ICU_GMAKE_OPTIONS) -C intl/icu STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R'
+ $(ICU_LIB_RENAME)
+
+ distclean clean::
+ $(call SUBMAKE,$@,intl/icu)
++endif
+
+ endif
+
+ #
+ # END ECMAScript Internationalization API
+ #############################################
+
+
+@@ -398,17 +404,21 @@ CFLAGS += $(MOZ_ZLIB_CFLAGS)
+ EXTRA_LIBS += $(MOZ_ZLIB_LIBS)
+ # Enable zlib usage if zlib has been located. When building the browser on
+ # Windows, MOZ_ZLIB_LIBS is empty because zlib is part of libmozglue. We thus
+ # also enable zlib if mozglue is present.
+ ifneq (,$(MOZ_ZLIB_LIBS)$(MOZ_GLUE_LDFLAGS))
+ DEFINES += -DUSE_ZLIB
+ endif
+
+-SHARED_LIBRARY_LIBS += $(ICU_LIBS)
++ifdef MOZ_NATIVE_ICU
++EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS)
++else
++SHARED_LIBRARY_LIBS += $(MOZ_ICU_LIBS)
++endif
+
+ # Prevent floating point errors caused by VC++ optimizations
+ ifdef _MSC_VER
+ # XXX We should add this to CXXFLAGS, too?
+ CFLAGS += -fp:precise
+
+ ifeq ($(CPU_ARCH),x86)
+ # Workaround compiler bug on PGO (Bug 721284)
+diff --git a/js/src/config/Makefile.in b/js/src/config/Makefile.in
+--- js/src/config/Makefile.in
++++ js/src/config/Makefile.in
+@@ -54,16 +54,17 @@ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DUNICODE -D_UNICODE
+
+ ifdef WRAP_SYSTEM_INCLUDES
+ export:: \
+ $(call mkdir_deps,system_wrappers_js) \
+ $(NULL)
+ $(PYTHON) $(srcdir)/Preprocessor.py $(DEFINES) $(ACDEFINES) \
++ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
+ $(srcdir)/system-headers | $(PERL) $(srcdir)/make-system-wrappers.pl system_wrappers_js
+ $(INSTALL) system_wrappers_js $(DIST)
+
+ GARBAGE_DIRS += system_wrappers_js
+ endif
+
+ GARBAGE += $(srcdir)/*.pyc *.pyc
+
+diff --git a/js/src/config/system-headers b/js/src/config/system-headers
+--- js/src/config/system-headers
++++ js/src/config/system-headers
+@@ -1125,8 +1125,19 @@ gst/video/video.h
+ sys/msg.h
+ sys/ipc.h
+ sys/thr.h
+ sys/user.h
+ kvm.h
+ spawn.h
+ err.h
+ xlocale.h
++#if MOZ_NATIVE_ICU==1
++unicode/locid.h
++unicode/numsys.h
++unicode/ucal.h
++unicode/ucol.h
++unicode/udat.h
++unicode/udatpg.h
++unicode/uenum.h
++unicode/unum.h
++unicode/ustring.h
++#endif
+diff --git a/js/src/configure.in b/js/src/configure.in
+--- js/src/configure.in
++++ js/src/configure.in
+@@ -4406,59 +4406,68 @@ if test "$ACCESSIBILITY" -a "$MOZ_ENABLE
+ AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
+ AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
+ fi
+
+
+ dnl ========================================================
+ dnl ECMAScript Internationalization API Support (uses ICU)
+ dnl ========================================================
++ICU_LIB_NAMES=
++MOZ_NATIVE_ICU=
++MOZ_ARG_WITH_BOOL(system-icu,
++[ --with-system-icu
++ Use system icu (located with pkgconfig)],
++ MOZ_NATIVE_ICU=1)
++
++if test -n "$MOZ_NATIVE_ICU"; then
++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
++fi
+
+ if test -n "$JS_STANDALONE"; then
+ ENABLE_INTL_API=1
+ fi
+ MOZ_ARG_ENABLE_BOOL(intl-api,
+ [ --enable-intl-api Enable ECMAScript Internationalization API (default=yes for standalone JS)],
+ ENABLE_INTL_API=1,
+ ENABLE_INTL_API= )
+
+ dnl Settings for the implementation of the ECMAScript Internationalization API
+ if test -n "$ENABLE_INTL_API"; then
+ AC_DEFINE(ENABLE_INTL_API)
+- # We build ICU as a static library.
+- AC_DEFINE(U_STATIC_IMPLEMENTATION)
+-
+- case "$OS_TARGET" in
+- WINNT)
+- ICU_LIB_NAMES="icuin icuuc icudt"
+- ;;
+- Darwin|Linux)
+- ICU_LIB_NAMES="icui18n icuuc icudata"
+- ;;
+- *)
+- AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
+- esac
+-
+- ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)'
+-else
+- ICU_LIB_NAMES=
+- ICU_LIBS=
++
++ if test -z "$MOZ_NATIVE_ICU"; then
++ case "$OS_TARGET" in
++ WINNT)
++ ICU_LIB_NAMES="icuin icuuc icudt"
++ ;;
++ Darwin|Linux)
++ ICU_LIB_NAMES="icui18n icuuc icudata"
++ ;;
++ *)
++ AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
++ esac
++ MOZ_ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)'
++ fi
+ fi
+
+ AC_SUBST(ENABLE_INTL_API)
+ AC_SUBST(ICU_LIB_NAMES)
+-AC_SUBST(ICU_LIBS)
+-
+-dnl Source files that use ICU should have control over which parts of the ICU
+-dnl namespace they want to use.
+-AC_DEFINE(U_USING_ICU_NAMESPACE,0)
+-
++AC_SUBST(MOZ_ICU_LIBS)
++AC_SUBST(MOZ_NATIVE_ICU)
+
+ dnl Settings for ICU
+-if test -n "$ENABLE_INTL_API" ; then
++if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then
++ dnl We build ICU as a static library.
++ AC_DEFINE(U_STATIC_IMPLEMENTATION)
++
++ dnl Source files that use ICU should have control over which parts of the ICU
++ dnl namespace they want to use.
++ AC_DEFINE(U_USING_ICU_NAMESPACE,0)
++
+ # Set ICU compile options
+ ICU_CPPFLAGS=""
+ # don't use icu namespace automatically in client code
+ ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_USING_ICU_NAMESPACE=0"
+ # don't include obsolete header files
+ ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
+ # remove chunks of the library that we don't need (yet)
+ ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_LEGACY_CONVERSION"
+diff --git a/js/src/gdb/Makefile.in b/js/src/gdb/Makefile.in
+--- js/src/gdb/Makefile.in
++++ js/src/gdb/Makefile.in
+@@ -14,16 +14,20 @@ include $(DEPTH)/config/autoconf.mk
+ # Building against js_static requires that we declare mfbt sybols "exported"
+ # on its behalf.
+ DEFINES += -DEXPORT_JS_API -DIMPL_MFBT
+
+ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIBS)
+
+ LOCAL_INCLUDES += -I$(topsrcdir) -I..
+
++ifdef MOZ_NATIVE_ICU
++EXTRA_LIBS += $(MOZ_ICU_LIBS)
++endif
++
+ EXTRA_LIBS += $(MOZ_FFI_LIBS)
+
+ # Place a GDB Python auto-load file next to the gdb-tests executable, both
+ # in the build directory and in the dist/bin directory.
+ PP_TARGETS += GDB_AUTOLOAD
+ GDB_AUTOLOAD := gdb-tests-gdb.py.in
+ GDB_AUTOLOAD_FLAGS := -Dtopsrcdir=$(abspath $(topsrcdir))
+
+diff --git a/js/src/jsapi-tests/Makefile.in b/js/src/jsapi-tests/Makefile.in
+--- js/src/jsapi-tests/Makefile.in
++++ js/src/jsapi-tests/Makefile.in
+@@ -15,16 +15,20 @@ DEFINES += -DEXPORT_JS_API
+ # Building against js_static requires that we declare mfbt sybols "exported"
+ # on its behalf.
+ DEFINES += -DIMPL_MFBT
+
+ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIBS)
+
+ LOCAL_INCLUDES += -I$(topsrcdir) -I..
+
++ifdef MOZ_NATIVE_ICU
++EXTRA_LIBS += $(MOZ_ICU_LIBS)
++endif
++
+ EXTRA_LIBS += $(MOZ_FFI_LIBS)
+
+ ifdef QEMU_EXE
+ MOZ_POST_PROGRAM_COMMAND = $(topsrcdir)/build/qemu-wrap --qemu $(QEMU_EXE) --libdir $(CROSS_LIB)
+ endif
+
+ # Place a GDB Python auto-load file next to the jsapi-tests executable in
+ # the build directory.
+diff --git a/js/src/shell/Makefile.in b/js/src/shell/Makefile.in
+--- js/src/shell/Makefile.in
++++ js/src/shell/Makefile.in
+@@ -22,16 +22,19 @@ DEFINES += -DEXPORT_JS_API
+ # Building against js_static requires that we declare mfbt sybols "exported"
+ # on its behalf.
+ DEFINES += -DIMPL_MFBT
+
+ LIBS = $(NSPR_LIBS) $(EDITLINE_LIBS) $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(MOZ_ZLIB_LIBS)
+ ifdef MOZ_NATIVE_FFI
+ EXTRA_LIBS += $(MOZ_FFI_LIBS)
+ endif
++ifdef MOZ_NATIVE_ICU
++EXTRA_LIBS += $(MOZ_ICU_LIBS)
++endif
+
+ LOCAL_INCLUDES += -I$(topsrcdir) -I..
+
+ ifeq ($(OS_ARCH),Darwin)
+ ifeq ($(TARGET_CPU),x86_64)
+ DARWIN_EXE_LDFLAGS += -pagezero_size 10000 -image_base 100000000
+ endif
+ endif
diff --git a/www/firefox/files/patch-bug862759 b/www/firefox/files/patch-bug862759
new file mode 100644
index 000000000000..c6ff6607f75c
--- /dev/null
+++ b/www/firefox/files/patch-bug862759
@@ -0,0 +1,10 @@
+--- js/src/frontend/ParseMaps.cpp~
++++ js/src/frontend/ParseMaps.cpp
+@@ -134,5 +134,5 @@ frontend::InitAtomMap(JSContext *cx, frontend::AtomIndexMap *indices, HeapPtrAto
+ }
+ }
+
+-template class AtomDecls<FullParseHandler>;
+-template class AtomDecls<SyntaxParseHandler>;
++template class frontend::AtomDecls<FullParseHandler>;
++template class frontend::AtomDecls<SyntaxParseHandler>;
diff --git a/www/firefox/files/patch-toolkit-components-osfile-osfile_unix_allthreads.jsm b/www/firefox/files/patch-bug878791
index d8a3612e1702..d8a3612e1702 100644
--- a/www/firefox/files/patch-toolkit-components-osfile-osfile_unix_allthreads.jsm
+++ b/www/firefox/files/patch-bug878791
diff --git a/www/firefox/files/patch-bug893397 b/www/firefox/files/patch-bug893397
new file mode 100644
index 000000000000..b9bd05aaa7f3
--- /dev/null
+++ b/www/firefox/files/patch-bug893397
@@ -0,0 +1,205 @@
+diff --git configure.in configure.in
+index 549ad06..2878d9f 100644
+--- configure.in
++++ configure.in
+@@ -8491,7 +8491,7 @@ case "$OS_TARGET" in
+ NECKO_WIFI=1
+ fi
+ ;;
+- Darwin|SunOS|WINNT)
++ Darwin|FreeBSD|SunOS|WINNT)
+ NECKO_WIFI=1
+ ;;
+ Linux)
+diff --git netwerk/wifi/Makefile.in netwerk/wifi/Makefile.in
+index 07b01de..11706af 100644
+--- netwerk/wifi/Makefile.in
++++ netwerk/wifi/Makefile.in
+@@ -32,6 +32,10 @@ CPPSRCS += nsWifiScannerMac.cpp
+ CMMSRCS = osx_corewlan.mm
+ endif
+
++ifeq ($(OS_ARCH),FreeBSD)
++CPPSRCS += nsWifiScannerFreeBSD.cpp
++endif
++
+ ifneq (,$(filter WINNT,$(OS_ARCH)))
+ CPPSRCS += nsWifiScannerWin.cpp
+ endif
+diff --git netwerk/wifi/nsWifiScannerFreeBSD.cpp netwerk/wifi/nsWifiScannerFreeBSD.cpp
+new file mode 100644
+index 0000000..80d4cb6
+--- /dev/null
++++ netwerk/wifi/nsWifiScannerFreeBSD.cpp
+@@ -0,0 +1,171 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++// Developed by J.R. Oldroyd <fbsd@opal.com>, December 2012.
++
++// For FreeBSD we use the getifaddrs(3) to obtain the list of interfaces
++// and then check for those with an 802.11 media type and able to return
++// a list of stations. This is similar to ifconfig(8).
++
++#include <sys/types.h>
++#include <sys/ioctl.h>
++#include <sys/socket.h>
++#include <net/if.h>
++#include <net/if_media.h>
++#include <net80211/ieee80211_ioctl.h>
++
++#include <ifaddrs.h>
++#include <string.h>
++#include <unistd.h>
++
++#include "nsWifiAccessPoint.h"
++
++using namespace mozilla;
++
++static nsresult
++FreeBSDGetAccessPointData(nsCOMArray<nsWifiAccessPoint> &accessPoints)
++{
++ bool res = false;
++ char *dupn = NULL;
++ struct ifaddrs *ifal, *ifa;
++ unsigned len;
++
++ // get list of interfaces
++ if (getifaddrs(&ifal) < 0)
++ return NS_ERROR_FAILURE;
++
++ accessPoints.Clear();
++
++ // loop through the interfaces
++ for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
++ int s;
++ struct ifreq ifr;
++ struct ifmediareq ifmr;
++ struct ieee80211req i802r;
++ char iscanbuf[32*1024], *vsr;
++
++ memset(&ifr, 0, sizeof(ifr));
++
++ // list can contain duplicates, so ignore those
++ if (dupn != NULL && strcmp(dupn, ifa->ifa_name) == 0)
++ continue;
++ dupn = ifa->ifa_name;
++
++ // store interface name in socket structure
++ strncpy(ifr.ifr_name, ifa->ifa_name, sizeof(ifr.ifr_name));
++ ifr.ifr_addr.sa_family = AF_LOCAL;
++
++ // open socket to interface
++ if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0)
++ continue;
++
++ // clear interface media structure
++ (void) memset(&ifmr, 0, sizeof(ifmr));
++ (void) strncpy(ifmr.ifm_name, ifa->ifa_name, sizeof(ifmr.ifm_name));
++
++ // get interface media information
++ if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) {
++ close(s);
++ continue;
++ }
++
++ // check interface is a WiFi interface
++ if (IFM_TYPE(ifmr.ifm_active) != IFM_IEEE80211) {
++ close(s);
++ continue;
++ }
++
++ // perform WiFi scan
++ (void) memset(&i802r, 0, sizeof(i802r));
++ (void) strncpy(i802r.i_name, ifa->ifa_name, sizeof(i802r.i_name));
++ i802r.i_type = IEEE80211_IOC_SCAN_RESULTS;
++ i802r.i_data = iscanbuf;
++ i802r.i_len = sizeof(iscanbuf);
++ if (ioctl(s, SIOCG80211, &i802r) < 0) {
++ close(s);
++ continue;
++ }
++
++ // close socket
++ close(s);
++
++ // loop through WiFi networks and build geoloc-lookup structure
++ vsr = (char *) i802r.i_data;
++ len = i802r.i_len;
++ while (len >= sizeof(struct ieee80211req_scan_result)) {
++ struct ieee80211req_scan_result *isr;
++ char *id;
++ int idlen;
++ char ssid[IEEE80211_NWID_LEN+1];
++ nsWifiAccessPoint *ap;
++
++ isr = (struct ieee80211req_scan_result *) vsr;
++
++ // determine size of this entry
++ if (isr->isr_meshid_len) {
++ id = vsr + isr->isr_ie_off + isr->isr_ssid_len;
++ idlen = isr->isr_meshid_len;
++ }
++ else {
++ id = vsr + isr->isr_ie_off;
++ idlen = isr->isr_ssid_len;
++ }
++
++ // copy network data
++ strncpy(ssid, id, idlen);
++ ssid[idlen] = '\0';
++ ap = new nsWifiAccessPoint();
++ ap->setSSID(ssid, strlen(ssid));
++ ap->setMac(isr->isr_bssid);
++ ap->setSignal(isr->isr_rssi);
++ accessPoints.AppendObject(ap);
++ res = true;
++
++ // log the data
++ LOG(( "FreeBSD access point: "
++ << "SSID: " << ssid << ", "
++ << "MAC: " << isr->isr_bssid << ", "
++ << "Strength: " << isr->isr_rssi ", "
++ << "Channel: " << isr->isr_freq << "MHz" ));
++
++ // increment pointers
++ len -= isr->isr_len;
++ vsr += isr->isr_len;
++ }
++ }
++
++ freeifaddrs(ifal);
++
++ return res ? NS_OK : NS_ERROR_FAILURE;
++}
++
++nsresult
++nsWifiMonitor::DoScan()
++{
++ // Regularly get the access point data.
++
++ nsCOMArray<nsWifiAccessPoint> lastAccessPoints;
++ nsCOMArray<nsWifiAccessPoint> accessPoints;
++
++ do {
++ nsresult rv = FreeBSDGetAccessPointData(accessPoints);
++ if (NS_FAILED(rv))
++ return rv;
++
++ bool accessPointsChanged = !AccessPointsEqual(accessPoints, lastAccessPoints);
++ ReplaceArray(lastAccessPoints, accessPoints);
++
++ rv = CallWifiListeners(lastAccessPoints, accessPointsChanged);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ // wait for some reasonable amount of time. pref?
++ LOG(("waiting on monitor\n"));
++
++ ReentrantMonitorAutoEnter mon(mReentrantMonitor);
++ mon.Wait(PR_SecondsToInterval(60));
++ }
++ while (mKeepGoing);
++
++ return NS_OK;
++}