summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2022-04-10 04:46:58 -0500
committerMatt A. Tobin <email@mattatobin.com>2022-04-10 04:46:58 -0500
commitc9744958aa80739867f641876c40c05de5510c60 (patch)
treed4f61fa621a4c522ab4961aea6f035fbc75bb372 /build
parente2faaa2f9a01e8b0229add1aa3b6b128f9d07b2e (diff)
downloadaura-central-c9744958aa80739867f641876c40c05de5510c60.tar.gz
Start splitting up ac configure logic into different files
Diffstat (limited to 'build')
-rw-r--r--build/autoconf/features.configure2794
-rw-r--r--build/autoconf/finish.configure194
-rw-r--r--build/autoconf/start.configure1856
3 files changed, 4844 insertions, 0 deletions
diff --git a/build/autoconf/features.configure b/build/autoconf/features.configure
new file mode 100644
index 000000000..f1d6c3517
--- /dev/null
+++ b/build/autoconf/features.configure
@@ -0,0 +1,2794 @@
+dnl ========================================================
+dnl =
+dnl = Application
+dnl =
+dnl ========================================================
+
+MOZ_ARG_HEADER(Application)
+
+ENABLE_TESTS=
+ENABLE_SYSTEM_EXTENSION_DIRS=1
+MOZ_BRANDING_DIRECTORY=
+MOZ_OFFICIAL_BRANDING=
+MC_OFFICIAL=
+MOZ_FEEDS=1
+MOZ_AUTH_EXTENSION=1
+MOZ_RAW=
+MOZ_AV1=
+MOZ_VORBIS=
+MOZ_TREMOR=
+MOZ_SAMPLE_TYPE_FLOAT32=
+MOZ_SAMPLE_TYPE_S16=
+MOZ_SRTP=
+MOZ_SCTP=
+MOZ_VPX_ERROR_CONCEALMENT=
+VPX_USE_YASM=
+VPX_ASFLAGS=
+VPX_AS_CONVERSION=
+VPX_X86_ASM=
+VPX_ARM_ASM=
+LIBJPEG_TURBO_AS=
+LIBJPEG_TURBO_ASFLAGS=
+MOZ_GAMEPAD=
+MOZ_PREF_EXTENSIONS=1
+MOZ_REFLOW_PERF=
+MOZ_SPELLCHECK=1
+MOZ_TOOLKIT_SEARCH=1
+MOZ_UI_LOCALE=en-US
+MOZ_UNIVERSALCHARDET=1
+MOZ_NO_SMART_CARDS=
+MOZ_NECKO_WIFI=1
+NECKO_COOKIES=1
+MOZ_USE_NATIVE_POPUP_WINDOWS=
+MOZ_EXCLUDE_HYPHENATION_DICTIONARIES=
+ACCESSIBILITY=1
+MOZ_TIME_MANAGER=
+MOZ_AUDIO_CHANNEL_MANAGER=
+MOZ_PLACES=1
+MOZ_SERVICES_SYNC=1
+MOZ_USERINFO=1
+MOZ_MAILNEWS=
+MOZ_MAILNEWS_OAUTH2=
+MOZ_LDAP_XPCOM=
+MOZ_MORK=
+MOZ_MAPI_SUPPORT=
+MOZ_INCOMPLETE_EXTERNAL_LINKAGE=
+MOZ_CAN_DRAW_IN_TITLEBAR=
+
+case "$target_os" in
+ mingw*)
+ NS_ENABLE_TSF=1
+ AC_DEFINE(NS_ENABLE_TSF)
+ ;;
+esac
+
+dnl ========================================================
+dnl = Vendor override
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(official-vendor,
+[ --enable-official-vendor This is an official release build.],
+ MC_OFFICIAL=1,
+ MC_OFFICIAL=)
+
+
+dnl ========================================================
+dnl = Trademarked Branding
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(official-branding,
+[ --enable-official-branding
+ Enable Official Branding
+ Do not distribute builds with
+ --enable-official-branding unless you have
+ permission to use our trademarks!],
+ MOZ_OFFICIAL_BRANDING=1,
+ MOZ_OFFICIAL_BRANDING=)
+
+# Allow the application to influence configure with a confvars.sh script.
+AC_MSG_CHECKING([if app-specific confvars.sh exists])
+if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
+ AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
+ . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
+else
+ AC_MSG_RESULT([no])
+fi
+
+# Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
+MOZ_ARG_WITH_STRING(app-name,
+[--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
+WITH_APP_NAME=$withval,
+)
+
+if test -n "$WITH_APP_NAME" ; then
+ MOZ_APP_NAME="$WITH_APP_NAME"
+fi
+
+MOZ_ARG_WITH_STRING(app-basename,
+[--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
+WITH_APP_BASENAME=$withval,
+)
+
+if test -n "$WITH_APP_BASENAME" ; then
+ MOZ_APP_BASENAME="$WITH_APP_BASENAME"
+fi
+
+dnl ========================================================
+dnl =
+dnl = Toolkit Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Toolkit Options)
+
+dnl ========================================================
+dnl = Enable the toolkit as needed =
+dnl ========================================================
+
+case "$MOZ_WIDGET_TOOLKIT" in
+
+cocoa)
+ LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
+ # Use -Wl as a trick to avoid -framework and framework names from
+ # being separated by AC_SUBST_LIST.
+ TK_LIBS='-Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement'
+ TK_CFLAGS=""
+ CFLAGS="$CFLAGS $TK_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
+ MOZ_USER_DIR="Mozilla"
+ MOZ_FS_LAYOUT=bundle
+ ;;
+
+esac
+
+dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
+dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
+case "$MOZ_WIDGET_TOOLKIT" in
+gtk*)
+ MOZ_ENABLE_GTK=1
+ ;;
+esac
+
+if test "$COMPILE_ENVIRONMENT"; then
+ if test "$MOZ_WIDGET_TOOLKIT" = gtk3; then
+ PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
+ MOZ_GTK3_CFLAGS="-I${_topsrcdir}/system/interface/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
+ TK_CFLAGS=$MOZ_GTK3_CFLAGS
+ TK_LIBS=$MOZ_GTK3_LIBS
+ dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
+ dnl are suppressed by system/interface/gtk/compat-gtk3/gdk/gdkversionmacros.h.
+ AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
+ GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32
+ fi
+ if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then
+ GLIB_VERSION_MAX_ALLOWED=$GLIB_VERSION_MIN_REQUIRED
+ fi
+ if test "$MOZ_ENABLE_GTK"; then
+ if test "$MOZ_X11"; then
+ GDK_PACKAGES=gdk-x11-2.0
+ fi
+ AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
+ AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
+
+ PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES)
+ MOZ_GTK2_CFLAGS="-I${_topsrcdir}/system/interface/gtk/compat $MOZ_GTK2_CFLAGS"
+ fi
+ if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then
+ TK_CFLAGS=$MOZ_GTK2_CFLAGS
+ TK_LIBS=$MOZ_GTK2_LIBS
+ fi
+fi # COMPILE_ENVIRONMENT
+
+AC_SUBST(MOZ_FS_LAYOUT)
+
+dnl ========================================================
+dnl = startup-notification support module
+dnl ========================================================
+
+if test "$MOZ_ENABLE_GTK"
+then
+ MOZ_ENABLE_STARTUP_NOTIFICATION=
+
+ MOZ_ARG_ENABLE_BOOL(startup-notification,
+ [ --enable-startup-notification
+ Enable startup-notification support (default: disabled) ],
+ MOZ_ENABLE_STARTUP_NOTIFICATION=force,
+ MOZ_ENABLE_STARTUP_NOTIFICATION=)
+ if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
+ then
+ PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
+ libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
+ [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
+ if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
+ then
+ AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
+ fi
+ MOZ_ENABLE_STARTUP_NOTIFICATION=
+ ])
+ fi
+
+ if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
+ AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
+ fi
+
+ TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
+fi
+AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
+
+AC_SUBST_LIST(TK_CFLAGS)
+AC_SUBST_LIST(TK_LIBS)
+
+AC_SUBST(MOC)
+AC_SUBST(RCC)
+
+dnl ========================================================
+dnl =
+dnl = Components & Features
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Components and Features)
+
+dnl ========================================================
+dnl = Localization
+dnl ========================================================
+MOZ_ARG_ENABLE_STRING(ui-locale,
+[ --enable-ui-locale=ab-CD
+ Select the user interface locale (default: en-US)],
+ MOZ_UI_LOCALE=$enableval )
+AC_SUBST(MOZ_UI_LOCALE)
+
+AC_SUBST(MOZ_OFFICIAL_BRANDING)
+if test -n "$MOZ_OFFICIAL_BRANDING"; then
+ if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
+ AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
+ else
+ MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
+ AC_DEFINE(MOZ_OFFICIAL_BRANDING)
+dnl Using official branding implies an official release build.
+ MC_OFFICIAL=1
+ fi
+fi
+
+AC_SUBST(MC_OFFICIAL)
+if test -n "$MC_OFFICIAL"; then
+ AC_DEFINE(MC_OFFICIAL)
+fi
+
+MOZ_ARG_WITH_STRING(branding,
+[ --with-branding=dir Use branding from the specified directory.],
+ MOZ_BRANDING_DIRECTORY=$withval)
+
+REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
+if test -z "$REAL_BRANDING_DIRECTORY"; then
+ REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
+fi
+
+if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
+ . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
+elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
+ . "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"
+fi
+
+AC_SUBST(MOZ_BRANDING_DIRECTORY)
+
+dnl ========================================================
+dnl = Private Build
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(private-build,
+[ --enable-private-build Enable private builds
+ This allows you to build with official
+ branding for personal use only using any
+ build time configuration.],
+ MC_PRIVATE_BUILD=1,
+ MC_PRIVATE_BUILD=)
+
+AC_SUBST(MC_PRIVATE_BUILD)
+if test -n "$MC_PRIVATE_BUILD"; then
+ AC_DEFINE(MC_PRIVATE_BUILD)
+fi
+
+dnl ========================================================
+dnl = Distribution ID
+dnl ========================================================
+MOZ_ARG_WITH_STRING(distribution-id,
+[ --with-distribution-id=ID
+ Set distribution-specific id (default=org.mozilla)],
+[ val=`echo $withval`
+ MOZ_DISTRIBUTION_ID="$val"])
+
+if test -z "$MOZ_DISTRIBUTION_ID"; then
+ MOZ_DISTRIBUTION_ID="org.mozilla"
+fi
+
+AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
+AC_SUBST(MOZ_DISTRIBUTION_ID)
+
+dnl ========================================================
+dnl = GIO and GConf support module
+dnl ========================================================
+
+if test "$MOZ_X11"
+then
+ dnl build the GIO extension by default only when the
+ dnl GTK2 toolkit is in use.
+ if test "$MOZ_ENABLE_GTK"
+ then
+ MOZ_ENABLE_GIO=1
+ MOZ_ENABLE_GCONF=1
+ fi
+
+ dnl ========================================================
+ dnl = GIO support module
+ dnl ========================================================
+ MOZ_ARG_DISABLE_BOOL(gio,
+ [ --disable-gio Disable GIO support],
+ MOZ_ENABLE_GIO=,
+ MOZ_ENABLE_GIO=force)
+
+ if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK"
+ then
+ if test "$MOZ_WIDGET_TOOLKIT" = gtk2
+ then
+ PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
+ [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
+ fi
+ PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
+ MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
+ MOZ_ENABLE_GIO=1
+ AC_DEFINE(MOZ_ENABLE_GIO)
+ ],[
+ if test "$MOZ_ENABLE_GIO" = "force"
+ then
+ AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
+ fi
+ MOZ_ENABLE_GIO=
+ ])
+ fi
+
+ AC_SUBST(MOZ_ENABLE_GIO)
+
+ dnl ========================================================
+ dnl = GConf support module
+ dnl ========================================================
+ MOZ_ARG_DISABLE_BOOL(gconf,
+ [ --disable-gconf Disable Gconf support ],
+ MOZ_ENABLE_GCONF=,
+ MOZ_ENABLE_GCONF=1)
+
+ if test "$MOZ_ENABLE_GCONF"
+ then
+ PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
+ MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
+ MOZ_ENABLE_GCONF=1
+ ],[
+ if test -n "$MOZ_ENABLE_GCONF";
+ then
+ AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
+ else
+ AC_MSG_WARN([Many automated tests will fail with --disable-gconf. See bug 1167201.])
+ fi
+ ])
+ fi
+
+ if test "$MOZ_ENABLE_GCONF"; then
+ AC_DEFINE(MOZ_ENABLE_GCONF)
+ fi
+
+ AC_SUBST(MOZ_ENABLE_GCONF)
+fi
+
+dnl ========================================================
+dnl = libproxy support
+dnl ========================================================
+
+if test "$MOZ_ENABLE_GTK"
+then
+ MOZ_ENABLE_LIBPROXY=
+
+ MOZ_ARG_ENABLE_BOOL(libproxy,
+ [ --enable-libproxy Enable libproxy support ],
+ MOZ_ENABLE_LIBPROXY=1,
+ MOZ_ENABLE_LIBPROXY=)
+
+ if test "$MOZ_ENABLE_LIBPROXY"
+ then
+ PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
+ AC_DEFINE(MOZ_ENABLE_LIBPROXY)
+ fi
+fi
+AC_SUBST(MOZ_ENABLE_LIBPROXY)
+
+dnl ========================================================
+dnl = libgnomeui support module
+dnl ========================================================
+
+if test "$MOZ_ENABLE_GTK"
+then
+ MOZ_ARG_ENABLE_BOOL(gnomeui,
+ [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
+ MOZ_ENABLE_GNOMEUI=force,
+ MOZ_ENABLE_GNOMEUI=)
+
+ if test "$MOZ_ENABLE_GNOMEUI"
+ then
+ PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
+ [
+ MOZ_ENABLE_GNOMEUI=1
+ ],[
+ if test "$MOZ_ENABLE_GNOMEUI" = "force"
+ then
+ AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
+ fi
+ MOZ_ENABLE_GNOMEUI=
+ ])
+ fi
+
+ if test "$MOZ_ENABLE_GNOMEUI"; then
+ AC_DEFINE(MOZ_ENABLE_GNOMEUI)
+ fi
+fi
+
+AC_SUBST(MOZ_ENABLE_GNOMEUI)
+
+dnl ========================================================
+dnl = dbus support
+dnl ========================================================
+
+if test "$MOZ_ENABLE_GTK"
+then
+ MOZ_ENABLE_DBUS=1
+
+ MOZ_ARG_DISABLE_BOOL(dbus,
+ [ --disable-dbus Disable dbus support ],
+ MOZ_ENABLE_DBUS=,
+ MOZ_ENABLE_DBUS=1)
+
+ if test "$MOZ_ENABLE_DBUS"
+ then
+ PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
+ PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
+ AC_DEFINE(MOZ_ENABLE_DBUS)
+ fi
+fi
+AC_SUBST(MOZ_ENABLE_DBUS)
+
+dnl =========================================================
+dnl = Whether to exclude hyphenations files in the build
+dnl =========================================================
+if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then
+ AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
+fi
+
+dnl ========================================================
+dnl accessibility support on by default on all platforms
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(accessibility,
+[ --disable-accessibility Disable accessibility support],
+ ACCESSIBILITY=,
+ ACCESSIBILITY=1 )
+if test "$ACCESSIBILITY"; then
+ case "$target" in
+ *-mingw*)
+ if test -z "$MIDL"; then
+ if test "$GCC" != "yes"; then
+ AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
+ else
+ AC_MSG_ERROR([You have accessibility enabled, but widl could not be found. Add --disable-accessibility to your mozconfig or install widl. See https://developer.mozilla.org/en-US/docs/Cross_Compile_Mozilla_for_Mingw32 for details.])
+ fi
+ fi
+ esac
+ AC_DEFINE(ACCESSIBILITY)
+fi
+
+dnl ========================================================
+dnl Accessibility is required for the linuxgl widget
+dnl backend
+dnl ========================================================
+if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
+ AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
+fi
+
+dnl =========================================================
+dnl = Don't fold mailnews related comps into libXUL
+dnl =========================================================
+MOZ_ARG_ENABLE_BOOL(incomplete-external-linkage,
+[ --enable-incomplete-external-linkage Don't fold *comps into libXUL which is currently badly busted so don't even bother with it ],
+ MOZ_INCOMPLETE_EXTERNAL_LINKAGE=1,
+ MOZ_INCOMPLETE_EXTERNAL_LINKAGE= )
+
+AC_SUBST(MOZ_INCOMPLETE_EXTERNAL_LINKAGE)
+
+dnl ========================================================
+dnl = Enable MailNews
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(mailnews,
+[ --enable-mailnews Enable the mailnews core backend],
+ MOZ_MAILNEWS=1,
+ MOZ_MAILNEWS=)
+
+if test -n "$MOZ_MAILNEWS"; then
+ MOZ_MORK=1
+ MOZ_LDAP_XPCOM=1
+
+ if test "$OS_ARCH" == "WINNT"; then
+ MOZ_MAPI_SUPPORT=1
+ else
+ MOZ_MOVEMAIL=1
+ HAVE_MOVEMAIL=1
+ AC_DEFINE(HAVE_MOVEMAIL)
+ fi
+
+ AC_DEFINE(MOZ_MAILNEWS)
+ AC_DEFINE(MOZ_MORK)
+fi
+
+AC_SUBST(MOZ_MAILNEWS)
+AC_SUBST(MOZ_MORK)
+AC_SUBST(MOZ_MOVEMAIL)
+
+dnl =========================================================
+dnl = Mailnews OAuth2 Support
+dnl =========================================================
+MOZ_ARG_DISABLE_BOOL(mailnews-oauth2,
+[ --disable-mailnews-oauth2 Disable oauth2 support in mailnews],
+ MOZ_MAILNEWS_OAUTH2=,
+ MOZ_MAILNEWS_OAUTH2=1)
+
+if test -n "$MOZ_MAILNEWS_OAUTH2"; then
+ AC_DEFINE(MOZ_MAILNEWS_OAUTH2)
+fi
+
+AC_SUBST(MOZ_MAILNEWS_OAUTH2)
+
+dnl =========================================================
+dnl = LDAP
+dnl =========================================================
+MOZ_ARG_DISABLE_BOOL(ldap,
+[ --disable-ldap Disable LDAP support],
+ MOZ_LDAP_XPCOM= )
+
+if test -n "$MOZ_LDAP_XPCOM"; then
+ AC_DEFINE(MOZ_LDAP_XPCOM)
+fi
+
+AC_SUBST(MOZ_LDAP_XPCOM)
+
+dnl =========================================================
+dnl = MAPI support (Windows only)
+dnl =========================================================
+
+MOZ_ARG_DISABLE_BOOL(mapi,
+[ --disable-mapi Disable MAPI support],
+ MOZ_MAPI_SUPPORT= )
+
+if test -n "$MOZ_MAPI_SUPPORT"; then
+ AC_DEFINE(MOZ_MAPI_SUPPORT)
+fi
+
+AC_SUBST(MOZ_MAPI_SUPPORT)
+
+dnl ========================================================
+dnl = Client drawing in titlebar
+dnl ========================================================
+if test -n "$MOZ_CAN_DRAW_IN_TITLEBAR"; then
+ case "$OS_TARGET" in
+ WINNT)
+ AC_DEFINE(MOZ_CAN_DRAW_IN_TITLEBAR)
+ ;;
+ *)
+ AC_MSG_ERROR([Drawing in the titlebar is only supported on Windows targets])
+ ;;
+ esac
+fi
+
+AC_SUBST(MOZ_CAN_DRAW_IN_TITLEBAR)
+
+MOZ_SYNTH_PICO=
+
+AC_SUBST(MOZ_SCTP)
+AC_SUBST(MOZ_SRTP)
+
+dnl Use integers over floats for audio on ARM
+dnl because it's more efficient.
+if test "$CPU_ARCH" = "arm"; then
+ MOZ_SAMPLE_TYPE_S16=1
+ AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
+ AC_SUBST(MOZ_SAMPLE_TYPE_S16)
+else
+ MOZ_SAMPLE_TYPE_FLOAT32=1
+ AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
+ AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
+fi
+
+dnl ========================================================
+dnl = Enable Raw Codecs
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(raw,
+[ --enable-raw Enable support for RAW media],
+ MOZ_RAW=1,
+ MOZ_RAW=)
+
+if test -n "$MOZ_RAW"; then
+ AC_DEFINE(MOZ_RAW)
+fi
+
+AC_SUBST(MOZ_RAW)
+
+dnl ========================================================
+dnl = Enable Libaom AV1 Codec
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(av1,
+[ --enable-av1 Enable libaom for av1 video support],
+ MOZ_AV1=1,
+ MOZ_AV1=)
+
+if test -n "$MOZ_AV1"; then
+ AC_DEFINE(MOZ_AV1)
+fi
+
+AC_SUBST(MOZ_AV1)
+
+dnl ========================================================
+dnl = Apple platform decoder support
+dnl ========================================================
+if test "$COMPILE_ENVIRONMENT"; then
+if test -n "$MOZ_APPLEMEDIA"; then
+ # hack in frameworks for fmp4 - see bug 1029974
+ # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
+ LDFLAGS="$LDFLAGS -framework AudioToolbox"
+ dnl Verify CoreMedia is available.
+ AC_CHECK_HEADER([CoreMedia/CoreMedia.h], [],
+ [AC_MSG_ERROR([MacOS X 10.7 SDK or later is required])])
+fi
+fi # COMPILE_ENVIRONMENT
+
+MOZ_LIBVPX_CFLAGS=
+MOZ_LIBVPX_LIBS=
+
+if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then
+ AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT)
+fi
+
+AC_SUBST_LIST(MOZ_LIBVPX_CFLAGS)
+AC_SUBST_LIST(MOZ_LIBVPX_LIBS)
+
+if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
+ MOZ_VORBIS=1
+else
+ MOZ_TREMOR=1
+fi
+
+if test -z "$MOZ_SYSTEM_LIBVPX"; then
+
+ dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
+ dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
+ dnl We currently require gcc on all arm platforms.
+
+ dnl See if we have assembly on this platform.
+ case "$OS_ARCH:$CPU_ARCH" in
+ WINNT:x86_64)
+ VPX_USE_YASM=1
+ VPX_X86_ASM=1
+ ;;
+ WINNT:x86)
+ dnl Check for yasm 1.1 or greater.
+ if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
+ AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed. Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
+ elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
+ AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
+ else
+ VPX_USE_YASM=1
+ VPX_X86_ASM=1
+ dnl The encoder needs obj_int_extract to get asm offsets.
+ fi # COMPILE_ENVIRONMENT and others
+ ;;
+ *:arm*)
+ if test -n "$GNU_AS" ; then
+ dnl These flags are a lie; they're just used to enable the requisite
+ dnl opcodes; actual arch detection is done at runtime.
+ VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
+ VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/libs/libvpx/build/make/ads2gas.pl'
+ VPX_ARM_ASM=1
+ dnl Building with -mfpu=neon requires either the "softfp" or the
+ dnl "hardfp" ABI. Depending on the compiler's default target, and the
+ dnl CFLAGS, the default ABI might be neither, in which case it is the
+ dnl "softfloat" ABI.
+ dnl The "softfloat" ABI is binary-compatible with the "softfp" ABI, so
+ dnl we can safely mix code built with both ABIs. So, if we detect
+ dnl that compiling uses the "softfloat" ABI, force the use of the
+ dnl "softfp" ABI instead.
+ dnl Confusingly, the __SOFTFP__ preprocessor variable indicates the
+ dnl "softfloat" ABI, not the "softfp" ABI.
+ dnl Note: VPX_ASFLAGS is also used in CFLAGS.
+ AC_TRY_COMPILE([],
+ [#ifndef __SOFTFP__
+ #error "compiler target supports -mfpu=neon, so we don't have to add extra flags"
+ #endif],
+ VPX_ASFLAGS="$VPX_ASFLAGS -mfloat-abi=softfp"
+ )
+ fi
+ ;;
+ *:x86)
+ if $CC -E -dM -</dev/null | grep -q __ELF__; then
+ VPX_USE_YASM=1
+ VPX_X86_ASM=1
+ fi
+ ;;
+ *:x86_64)
+ if $CC -E -dM -</dev/null | grep -q __ELF__; then
+ VPX_USE_YASM=1
+ VPX_X86_ASM=1
+ fi
+ ;;
+ esac
+
+ if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_USE_YASM" -a -z "$YASM"; then
+ AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
+ fi # COMPILE_ENVIRONMENT and others
+
+ if test -n "$VPX_USE_YASM" && test "$OS_ARCH:$CPU_ARCH" != "WINNT:x86_64"; then
+ VPX_ASFLAGS="-DPIC"
+ fi
+
+ if test -n "$VPX_X86_ASM"; then
+ AC_DEFINE(VPX_X86_ASM)
+ elif test -n "$VPX_ARM_ASM"; then
+ AC_DEFINE(VPX_ARM_ASM)
+ else
+ AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
+ fi
+
+ dnl native libvpx no longer has vpx_mem_set_functions
+ AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
+fi
+
+dnl ========================================================
+dnl = Handle dependent MEDIA defines
+dnl ========================================================
+
+if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
+ AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive! The build system should not allow them both to be set, but they are. Please file a bug at https://bugzilla.mozilla.org/])
+fi
+
+if test -n "$MOZ_VORBIS"; then
+ AC_DEFINE(MOZ_VORBIS)
+fi
+
+if test -n "$MOZ_TREMOR"; then
+ AC_DEFINE(MOZ_TREMOR)
+fi
+
+MOZ_WEBM_ENCODER=1
+AC_DEFINE(MOZ_WEBM_ENCODER)
+AC_SUBST(MOZ_WEBM_ENCODER)
+
+dnl ==================================
+dnl = Check alsa availability on Linux
+dnl ==================================
+
+dnl If using Linux, enable the alsa library by default
+if test "$OS_TARGET" = "Linux"; then
+ MOZ_ALSA=1
+fi
+
+MOZ_ARG_ENABLE_BOOL(alsa,
+[ --enable-alsa Enable Alsa support (default on Linux)],
+ MOZ_ALSA=1,
+ MOZ_ALSA=)
+
+if test -n "$MOZ_ALSA"; then
+ PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
+ [echo "$MOZ_ALSA_PKG_ERRORS"
+ AC_MSG_ERROR([You need ALSA for audio output on Linux.])])
+fi
+
+AC_SUBST(MOZ_ALSA)
+
+dnl ========================================================
+dnl = Disable PulseAudio
+dnl ========================================================
+
+dnl If using Desktop Linux, ensure that the PA library is available
+case "$OS_TARGET" in
+WINNT)
+ ;;
+*)
+ MOZ_PULSEAUDIO=1
+ ;;
+esac
+
+MOZ_ARG_DISABLE_BOOL(pulseaudio,
+[ --disable-pulseaudio Disable PulseAudio support],
+ MOZ_PULSEAUDIO=,
+ MOZ_PULSEAUDIO=1)
+
+if test -n "$MOZ_PULSEAUDIO"; then
+ AC_DEFINE(MOZ_PULSEAUDIO)
+ PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
+ [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
+ AC_MSG_ERROR([Building pulseaudio audio backend requires libpulse development package])])
+fi
+
+AC_SUBST(MOZ_PULSEAUDIO)
+
+dnl ========================================================
+dnl = Enable sndio
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(sndio,
+[ --enable-sndio Enable sndio support],
+ MOZ_SNDIO=1,
+ MOZ_SNDIO= )
+
+if test -n "$MOZ_SNDIO"; then
+ AC_DEFINE(MOZ_SNDIO)
+ MOZ_CHECK_HEADER([sndio.h], [],
+ AC_MSG_ERROR(
+ [--enable-sndio specified but it requires sndio development headers]))
+ AC_DEFINE(MOZ_SNDIO)
+fi
+AC_SUBST(MOZ_SNDIO)
+
+dnl ========================================================
+dnl NegotiateAuth
+dnl ========================================================
+
+MOZ_ARG_DISABLE_BOOL(negotiateauth,
+[ --disable-negotiateauth Disable GSS-API negotiation ],
+ MOZ_AUTH_EXTENSION=,
+ MOZ_AUTH_EXTENSION=1 )
+
+if test -n "$MOZ_IOS" -a -n "$MOZ_AUTH_EXTENSION"; then
+ AC_MSG_ERROR([negotiateauth is not supported on iOS.])
+fi
+
+dnl ========================================================
+dnl Pref extensions (autoconfig)
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(pref-extensions,
+[ --disable-pref-extensions
+ Disable pref extensions such as autoconfig],
+ MOZ_PREF_EXTENSIONS=,
+ MOZ_PREF_EXTENSIONS=1 )
+
+dnl ========================================================
+dnl Searching of system directories for extensions.
+dnl Note: this switch is meant to be used for test builds
+dnl whose behavior should not depend on what happens to be
+dnl installed on the local machine.
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
+[ --disable-system-extension-dirs
+ Disable searching system- and account-global
+ directories for extensions of any kind; use
+ only profile-specific extension directories],
+ ENABLE_SYSTEM_EXTENSION_DIRS=,
+ ENABLE_SYSTEM_EXTENSION_DIRS=1 )
+if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
+ AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
+fi
+
+dnl ========================================================
+dnl = Universalchardet
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(universalchardet,
+[ --disable-universalchardet
+ Disable universal encoding detection],
+ MOZ_UNIVERSALCHARDET=,
+ MOZ_UNIVERSALCHARDET=1 )
+
+dnl ========================================================
+dnl = ANGLE OpenGL->D3D translator for WebGL
+dnl = * only applies to win32
+dnl ========================================================
+
+MOZ_ANGLE_RENDERER=
+MOZ_D3D_CPU_SUFFIX=
+MOZ_HAS_WINSDK_WITH_D3D=
+MOZ_D3DCOMPILER_VISTA_DLL=
+MOZ_D3DCOMPILER_VISTA_DLL_PATH=
+
+if test "$COMPILE_ENVIRONMENT" ; then
+case "$target_os" in
+*mingw*)
+ MOZ_ANGLE_RENDERER=1
+ ;;
+esac
+
+# The DirectX SDK libraries are split into x86 and x64 sub-directories
+case "${target_cpu}" in
+i*86)
+ MOZ_D3D_CPU_SUFFIX=x86
+ ;;
+x86_64)
+ MOZ_D3D_CPU_SUFFIX=x64
+ ;;
+esac
+
+# This is potentially set in external mozconfig files; if it's set,
+# then the build exposes the "webgl" context name, which is reserved
+# for conformant implementations.
+if test -n "$MOZ_WEBGL_CONFORMANT"; then
+ AC_DEFINE(MOZ_WEBGL_CONFORMANT)
+fi
+
+dnl ========================================================
+dnl D3D compiler DLL
+dnl ========================================================
+MOZ_FOUND_D3D_COMPILERS=
+
+if test -n "$MOZ_ANGLE_RENDERER"; then
+ if test -z "$MOZ_D3D_CPU_SUFFIX"; then
+ AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
+ fi
+
+ ######################################
+ # Find _46+ for use by Vista+.
+
+ # Find a D3D compiler DLL in a Windows SDK.
+ MOZ_D3DCOMPILER_VISTA_DLL=
+ case "$MOZ_WINSDK_MAXVER" in
+ 0x0603*|0x0A00*)
+ MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
+ AC_MSG_RESULT([Found D3D compiler in Windows SDK.])
+ ;;
+ esac
+
+ if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
+ # We have a name, now track down the path.
+ if test -n "$WINDOWSSDKDIR"; then
+ MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
+ if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
+ AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
+ MOZ_HAS_WINSDK_WITH_D3D=1
+ else
+ AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
+ AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
+ MOZ_D3DCOMPILER_VISTA_DLL_PATH=
+ fi
+ else
+ AC_MSG_RESULT([Windows SDK not found.])
+ fi
+ else
+ AC_MSG_ERROR([Couldn't find Windows SDK 8.1 or higher needed for ANGLE.])
+ fi
+
+ if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
+ MOZ_D3DCOMPILER_VISTA_DLL=
+ fi
+
+ # On mingw, check if headers are provided by toolchain.
+ if test -n "$GNU_CC"; then
+ MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
+ fi
+
+ ######################################
+ # Check that we found what we needed.
+ MOZ_FOUND_A_D3D_COMPILER=
+
+ if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
+ MOZ_FOUND_A_D3D_COMPILER=1
+ AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
+ fi
+
+ if test -z "$CROSS_COMPILE"; then
+ if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
+ AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
+ fi
+ fi
+fi # MOZ_ANGLE_RENDERER
+
+fi # COMPILE_ENVIRONMENT
+
+
+dnl ========================================================
+dnl Gamepad support
+dnl ========================================================
+MOZ_GAMEPAD_BACKEND=stub
+
+MOZ_ARG_ENABLE_BOOL(gamepad,
+[ --enable-gamepad Enable gamepad support],
+ MOZ_GAMEPAD=1,
+ MOZ_GAMEPAD=)
+
+if test "$MOZ_GAMEPAD"; then
+ case "$OS_TARGET" in
+ WINNT)
+ MOZ_GAMEPAD_BACKEND=windows
+ ;;
+ Linux)
+ MOZ_CHECK_HEADER([linux/joystick.h])
+ if test "$ac_cv_header_linux_joystick_h" != "yes"; then
+ AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers or reconfigure with --disable-gamepad to disable gamepad support.])
+ fi
+ MOZ_GAMEPAD_BACKEND=linux
+ ;;
+ *)
+ ;;
+ esac
+
+ AC_DEFINE(MOZ_GAMEPAD)
+fi
+AC_SUBST(MOZ_GAMEPAD)
+AC_SUBST(MOZ_GAMEPAD_BACKEND)
+
+dnl ========================================================
+dnl = libjpeg-turbo configuration
+dnl ========================================================
+MOZ_LIBJPEG_TURBO=
+LIBJPEG_TURBO_USE_YASM=
+if test -z "$MOZ_SYSTEM_JPEG"; then
+ MOZ_LIBJPEG_TURBO=1
+fi
+
+MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
+[ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
+ MOZ_LIBJPEG_TURBO=,
+ MOZ_LIBJPEG_TURBO=1)
+
+if test "$MOZ_SYSTEM_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
+ AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
+fi
+
+dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
+dnl files.
+
+if test -n "$MOZ_LIBJPEG_TURBO" -a -n "$COMPILE_ENVIRONMENT"; then
+
+ dnl Do we support libjpeg-turbo on this platform?
+ case "$OS_ARCH:$CPU_ARCH" in
+ WINNT:x86)
+ LIBJPEG_TURBO_ASFLAGS="-DPIC -DWIN32"
+ ;;
+ WINNT:x86_64)
+ LIBJPEG_TURBO_ASFLAGS="-D__x86_64__ -DPIC -DWIN64 -DMSVC"
+ ;;
+ *:arm)
+ LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
+ ;;
+ *:aarch64)
+ LIBJPEG_TURBO_ASFLAGS="-march=armv8-a"
+ ;;
+ *:mips32)
+ LIBJPEG_TURBO_ASFLAGS="-mdspr2"
+ ;;
+ *:x86)
+ if $CC -E -dM -</dev/null | grep -q __ELF__; then
+ LIBJPEG_TURBO_ASFLAGS="-DPIC -DELF"
+ fi
+ ;;
+ *:x86_64)
+ if $CC -E -dM -</dev/null | grep -q __ELF__; then
+ LIBJPEG_TURBO_ASFLAGS="-D__x86_64__ -DPIC -DELF"
+ fi
+ ;;
+ esac
+fi
+
+if test -n "$LIBJPEG_TURBO_ASFLAGS"; then
+ case "$CPU_ARCH" in
+dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
+dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
+dnl it doesn't exist or we have too old of a version.
+ x86_64|x86)
+ LIBJPEG_TURBO_USE_YASM=1
+
+ if test -z "$YASM" ; then
+ AC_MSG_ERROR([Yasm is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you do not appear to have Yasm installed. Either install it or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
+ fi
+
+ dnl Check that we have the right yasm version. We require 1.0.1 or newer
+ dnl on Linux and 1.1 or newer everywhere else.
+ if test "$OS_ARCH" = "Linux" ; then
+ if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
+ AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
+ fi
+ else
+ if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
+ AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
+ fi
+ fi
+ ;;
+ esac
+fi
+
+dnl ========================================================
+dnl = libav-fft configuration
+dnl ========================================================
+
+MOZ_LIBAV_FFT=
+
+dnl Turn on libav-fft for 32-bit windows, and all 64-bit supported platforms.
+dnl 32-bit linux/os x have text relocation issues.
+
+case "$OS_ARCH:$CPU_ARCH" in
+ WINNT:x86)
+ MOZ_LIBAV_FFT=1
+ ;;
+ *:x86_64)
+ MOZ_LIBAV_FFT=1
+ ;;
+esac
+
+dnl Detect if we can use yasm to compile libav's assembly
+
+if test -n "$MOZ_LIBAV_FFT" -a -n "$COMPILE_ENVIRONMENT"; then
+ AC_DEFINE(MOZ_LIBAV_FFT)
+ dnl Do we support libav-fft on this platform?
+ case "$OS_ARCH:$CPU_ARCH" in
+ WINNT:x86)
+ LIBAV_FFT_ASFLAGS="-DPIC -DWIN32"
+ ;;
+ WINNT:x86_64)
+ LIBAV_FFT_ASFLAGS="-D__x86_64__ -DPIC -DWIN64 -DMSVC"
+ ;;
+ *:x86_64)
+ if $CC -E -dM -</dev/null | grep -q __ELF__; then
+ LIBAV_FFT_ASFLAGS="-D__x86_64__ -DPIC -DELF"
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR([libav's FFT routines are only available for 32-bit windows or 64-bit x86 based platforms.])
+ ;;
+ esac
+fi
+
+if test -n "$LIBAV_FFT_ASFLAGS"; then
+ dnl If we're on an x86 or x64 system which supports libav-fft's asm routines
+ dnl check for Yasm, and error out if it doesn't exist or we have too old of a
+ dnl version.
+ if test -z "$YASM" ; then
+ AC_MSG_ERROR([Yasm is required to build with libav's optimized FFT routines, but you do not appear to have Yasm installed. See https://developer.mozilla.org/en/YASM for more details.])
+ fi
+ dnl Check that we have the right yasm version. We require 1.0.1 or newer
+ dnl on Linux and 1.1 or newer everywhere else.
+ if test "$OS_ARCH" = "Linux" ; then
+ if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
+ AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libav's optimized FFT routines, but you do not appear to have Yasm installed. See https://developer.mozilla.org/en/YASM for more details.])
+ fi
+ else
+ if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
+ AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libav's optimized FFT routines, but you do not appear to have Yasm installed. See https://developer.mozilla.org/en/YASM for more details.])
+ fi
+ fi
+elif test -n "$MOZ_LIBAV_FFT" -a "${CPU_ARCH}" != "arm"; then
+ dnl Warn if we're not building either libav or opendl-max optimized routines.
+ AC_MSG_WARN([No assembler or assembly support for libav-fft. Using unoptimized C routines.])
+fi
+
+dnl ========================================================
+dnl = FFmpeg's ffvpx configuration
+dnl ========================================================
+
+MOZ_FFVPX=
+
+dnl Build ffvpx on 32-bit Windows and all supported 64-bit platforms.
+dnl 32-bit *nix has performance issues due to not supporting assembly decoder.
+
+case "$OS_ARCH:$CPU_ARCH" in
+ WINNT:x86)
+ MOZ_FFVPX=1
+ ;;
+ *:x86_64)
+ MOZ_FFVPX=1
+ ;;
+esac
+
+dnl Use same conditional as MOZ_LIBAV_FFT to enable FFmpeg's ffvpx assembly decoder.
+if test -n "$MOZ_LIBAV_FFT"; then
+ FFVPX_ASFLAGS=$LIBAV_FFT_ASFLAGS
+fi
+if test -n "$MOZ_FFVPX"; then
+ AC_DEFINE(MOZ_FFVPX)
+fi
+
+dnl ========================================================
+
+if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
+ AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
+fi
+
+if test -n "$MOZ_TREE_FREETYPE"; then
+ MOZ_ENABLE_CAIRO_FT=1
+ FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
+ CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
+ AC_SUBST_LIST(CAIRO_FT_CFLAGS)
+fi
+
+AC_CHECK_PROGS(WGET, wget, "")
+AC_SUBST(WGET)
+
+dnl ========================================================
+dnl Verify MAR signatures
+dnl ========================================================
+
+MOZ_ARG_ENABLE_BOOL(verify-mar,
+[ --enable-verify-mar Enable verifying MAR signatures],
+ MOZ_VERIFY_MAR_SIGNATURE=1,
+ MOZ_VERIFY_MAR_SIGNATURE= )
+
+if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
+ AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
+fi
+
+dnl ========================================================
+dnl Enable building the signmar program.
+dnl This option is much different than the --enable-verify-mar option.
+dnl --enable-verify-mar is for enabling the verification check on MAR
+dnl files in the updater. The --enable-signmar option is for building
+dnl the signmar program.
+dnl ========================================================
+
+MOZ_ARG_ENABLE_BOOL(signmar,
+[ --enable-signmar Enable building the signmar program],
+ MOZ_ENABLE_SIGNMAR=1,
+ MOZ_ENABLE_SIGNMAR= )
+
+if test -n "$MOZ_ENABLE_SIGNMAR"; then
+ if test -z "$COMPILE_ENVIRONMENT" ; then
+ AC_MSG_WARN([Cannot --enable-signmar with --disable-compile-environment])
+ MOZ_ENABLE_SIGNMAR=
+ else
+ AC_DEFINE(MOZ_ENABLE_SIGNMAR)
+ fi
+fi
+
+dnl ========================================================
+dnl Updater
+dnl ========================================================
+
+if test "$MOZ_IOS"; then
+ MOZ_UPDATER=
+fi
+
+MOZ_ARG_ENABLE_BOOL(updater,
+[ --enable-updater Enable building of internal updater],
+ MOZ_UPDATER=1,
+ MOZ_UPDATER= )
+
+if test -n "$MOZ_UPDATER"; then
+ AC_DEFINE(MOZ_UPDATER)
+fi
+
+dnl ========================================================
+dnl Build the tests?
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(tests,
+[ --enable-tests Build test libraries & programs],
+ ENABLE_TESTS=1,
+ ENABLE_TESTS= )
+
+if test -n "$ENABLE_TESTS"; then
+ GTEST_HAS_RTTI=0
+ AC_DEFINE(ENABLE_TESTS)
+ AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
+ AC_SUBST(GTEST_HAS_RTTI)
+ if test -n "$_WIN32_MSVC"; then
+ AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10)
+ fi
+fi
+
+dnl ========================================================
+dnl parental controls (for Windows Vista)
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(parental-controls,
+[ --disable-parental-controls
+ Do not build parental controls],
+ MOZ_DISABLE_PARENTAL_CONTROLS=1,
+ MOZ_DISABLE_PARENTAL_CONTROLS=)
+if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
+ AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
+fi
+
+AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
+
+dnl ========================================================
+dnl = Disable smartcard support
+dnl ========================================================
+if test -n "$MOZ_NO_SMART_CARDS"; then
+ AC_DEFINE(MOZ_NO_SMART_CARDS)
+fi
+AC_SUBST(MOZ_NO_SMART_CARDS)
+
+dnl ========================================================
+dnl =
+dnl = Module specific options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Individual module options)
+
+dnl ========================================================
+dnl = Disable feed handling components
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(feeds,
+[ --disable-feeds Disable feed handling and processing components],
+ MOZ_FEEDS=,
+ MOZ_FEEDS=1 )
+if test -n "$MOZ_FEEDS"; then
+ AC_DEFINE(MOZ_FEEDS)
+else
+ if test "$MOZ_BUILD_APP" = "browser"; then
+ AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
+ fi
+fi
+
+dnl ========================================================
+dnl = faststripe theme
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(faststripe,
+[ --enable-faststripe Use faststripe theme],
+ MOZ_THEME_FASTSTRIPE=1,
+ MOZ_THEME_FASTSTRIPE= )
+AC_SUBST(MOZ_THEME_FASTSTRIPE)
+
+dnl ========================================================
+dnl =
+dnl = Feature options that require extra sources to be pulled
+dnl =
+dnl ========================================================
+dnl MOZ_ARG_HEADER(Features that require extra sources)
+
+dnl ========================================================
+dnl =
+dnl = Runtime debugging and Optimization Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Runtime debugging and Optimizations)
+
+dnl ========================================================
+dnl = Enable code optimization. ON by default.
+dnl ========================================================
+if test -z "$MOZ_OPTIMIZE_FLAGS"; then
+ MOZ_OPTIMIZE_FLAGS="-O"
+fi
+
+MOZ_ARG_ENABLE_STRING(optimize,
+[ --disable-optimize Disable compiler optimization
+ --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
+[ if test "$enableval" != "no"; then
+ MOZ_OPTIMIZE=1
+ if test -n "$enableval" -a "$enableval" != "yes"; then
+ MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
+ MOZ_OPTIMIZE=2
+ fi
+else
+ MOZ_OPTIMIZE=
+fi ], MOZ_OPTIMIZE=1)
+
+MOZ_SET_FRAMEPTR_FLAGS
+
+if test "$COMPILE_ENVIRONMENT"; then
+if test -n "$MOZ_OPTIMIZE"; then
+ AC_MSG_CHECKING([for valid C compiler optimization flags])
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
+ AC_TRY_COMPILE([#include <stdio.h>],
+ [printf("Hello World\n");],
+ _results=yes,
+ _results=no)
+ AC_MSG_RESULT([$_results])
+ if test "$_results" = "no"; then
+ AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
+ fi
+ CFLAGS=$_SAVE_CFLAGS
+fi
+fi # COMPILE_ENVIRONMENT
+
+AC_SUBST(MOZ_OPTIMIZE)
+AC_SUBST(MOZ_FRAMEPTR_FLAGS)
+AC_SUBST(MOZ_OPTIMIZE_FLAGS)
+AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
+AC_SUBST_LIST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
+AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
+
+dnl ========================================================
+dnl = Disable treating compiler warnings as errors
+dnl ========================================================
+if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
+ WARNINGS_AS_ERRORS=''
+fi
+
+dnl ========================================================
+dnl = Enable runtime logging
+dnl ========================================================
+AC_DEFINE(MOZ_LOGGING)
+AC_DEFINE(FORCE_PR_LOG)
+
+dnl ========================================================
+dnl = This will enable logging of addref, release, ctor, dtor.
+dnl ========================================================
+_ENABLE_LOGREFCNT=42
+MOZ_ARG_ENABLE_BOOL(logrefcnt,
+[ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
+ _ENABLE_LOGREFCNT=1,
+ _ENABLE_LOGREFCNT= )
+if test "$_ENABLE_LOGREFCNT" = "1"; then
+ AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
+elif test -z "$_ENABLE_LOGREFCNT"; then
+ AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
+fi
+
+dnl ========================================================
+dnl moz_dump_painting
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(dump-painting,
+[ --enable-dump-painting Enable paint debugging.],
+ MOZ_DUMP_PAINTING=1,
+ MOZ_DUMP_PAINTING= )
+if test -n "$MOZ_DUMP_PAINTING"; then
+ AC_DEFINE(MOZ_DUMP_PAINTING)
+ AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
+fi
+if test -n "$MOZ_DEBUG"; then
+ AC_DEFINE(MOZ_DUMP_PAINTING)
+fi
+
+case "${OS_TARGET}" in
+WINNT)
+ MOZ_GLUE_IN_PROGRAM=
+ ;;
+*)
+ dnl On !Windows, we only want to link executables against mozglue
+ MOZ_GLUE_IN_PROGRAM=1
+ AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
+ ;;
+esac
+
+if test -n "$MOZ_REPLACE_MALLOC"; then
+ dnl Replace-malloc Mac linkage quirks
+ if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
+ AC_CACHE_CHECK([how to do weak dynamic linking],
+ ac_cv_weak_dynamic_linking,
+ [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
+ if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
+ test -s conftest${DLL_SUFFIX}; then
+ dnl There are several ways the linker can put link edit rules in a binary:
+ dnl - classic info only (for OSX < 10.6)
+ dnl - dyld info only
+ dnl - both
+ if "$OTOOL" -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
+ _CLASSIC_INFO=
+ else
+ _CLASSIC_INFO=1
+ fi
+ if "$OTOOL" -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
+ _DYLD_INFO=1
+ else
+ _DYLD_INFO=
+ fi
+ dnl With classic info, we need to build with -flat_namespace.
+ dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
+ dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
+ dnl forgets to set the weak flag in the dyld info.
+ dnl See http://glandium.org/blog/?p=2764 for more details.
+ dnl
+ dnl Values for ac_cv_weak_dynamic_linking, and subsequently
+ dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
+ dnl - "flat namespace" when -flat_namespace alone is needed
+ dnl - "dummy library" when a dummy library and -flat_namespace are needed
+ dnl - "compiler support" when nothing is needed
+ if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
+ if test -n "$_CLASSIC_INFO"; then
+ ac_cv_weak_dynamic_linking="flat namespace"
+ else
+ ac_cv_weak_dynamic_linking="compiler support"
+ fi
+ else
+ if test -n "$_DYLD_INFO"; then
+ ac_cv_weak_dynamic_linking="dummy library"
+ else
+ ac_cv_weak_dynamic_linking="flat namespace"
+ fi
+ fi
+ else
+ AC_ERROR([couldn't compile a simple C file])
+ fi
+ rm -rf conftest*])
+ MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
+ fi
+fi
+AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
+
+dnl ========================================================
+dnl = Jemalloc build setup
+dnl ========================================================
+if test -z "$MOZ_MEMORY"; then
+ case "${target}" in
+ *-mingw*)
+ if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
+ AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.])
+ fi
+ ;;
+ esac
+else
+ if test "x$MOZ_DEBUG" = "x1"; then
+ AC_DEFINE(MOZ_MEMORY_DEBUG)
+ fi
+ dnl The generic feature tests that determine how to compute ncpus are long and
+ dnl complicated. Therefore, simply define special cpp variables for the
+ dnl platforms we have special knowledge of.
+ case "${target}" in
+ *-mingw*)
+ export MOZ_NO_DEBUG_RTL=1
+ ;;
+ esac
+fi # MOZ_MEMORY
+AC_SUBST(MOZ_GLUE_IN_PROGRAM)
+
+# Allow the application to provide a subconfigure script.
+# This should be after 'export MOZ_NO_DEBUG_RTL=1' since
+# ldap/c-sdk/configure refers to the enviroment value.
+if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
+ do_output_subdirs() {
+ if test -n "$_subconfigure_subdirs"; then
+ AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
+ fi
+ _subconfigure_subdir="$1"
+ _subconfigure_config_args="$ac_configure_args"
+ }
+ tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
+ ${TOOLCHAIN_PREFIX}m4 "${srcdir}/build/autoconf/subconfigure.m4" \
+ "${srcdir}/build/autoconf/altoptions.m4" \
+ "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
+ . $tmpscript
+ rm -f $tmpscript
+fi
+
+AC_SUBST_LIST(MOZ_GLUE_WRAP_LDFLAGS)
+export MOZ_GLUE_WRAP_LDFLAGS
+
+dnl ========================================================
+dnl = Enable using the clang plugin to build
+dnl ========================================================
+
+MOZ_CONFIG_CLANG_PLUGIN
+
+dnl ========================================================
+dnl = Enable stripping of libs & executables
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(strip,
+[ --enable-strip Enable stripping of libs & executables ],
+ ENABLE_STRIP=1,
+ ENABLE_STRIP= )
+
+dnl ========================================================
+dnl = Enable stripping of libs & executables when packaging
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(install-strip,
+[ --enable-install-strip Enable stripping of libs & executables when packaging ],
+ PKG_SKIP_STRIP= ,
+ PKG_SKIP_STRIP=1)
+
+dnl ========================================================
+dnl = --disable-elf-hack
+dnl ========================================================
+
+USE_ELF_HACK=1
+MOZ_ARG_DISABLE_BOOL(elf-hack,
+[ --disable-elf-hack Disable elf hacks],
+ [USE_ELF_HACK=],
+ [USE_ELF_HACK=1])
+
+# Only enable elfhack where supported
+if test "$USE_ELF_HACK" = 1; then
+ case "${HOST_OS_ARCH},${OS_ARCH}" in
+ Linux,Linux)
+ case "${CPU_ARCH}" in
+ arm | x86 | x86_64)
+ USE_ELF_HACK=1
+ ;;
+ *)
+ USE_ELF_HACK=
+ ;;
+ esac
+ ;;
+ *)
+ USE_ELF_HACK=
+ ;;
+ esac
+fi
+
+if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then
+ dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
+ dnl memory addresses it maps to. The result is that by the time elfhack
+ dnl kicks in, it is not possible to apply relocations because of that,
+ dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
+ dnl segment. It makes elfhack mostly useless, so considering the problems
+ dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
+ dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
+ dnl the linker creates PT_GNU_RELRO segments. However, when we do want
+ dnl elfhack enabled, disable PT_GNU_RELRO instead.
+ AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
+ LINK_WITH_PT_GNU_RELRO,
+ [echo "int main() {return 0;}" > conftest.${ac_ext}
+ if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
+ test -s conftest${ac_exeext}; then
+ if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
+ LINK_WITH_PT_GNU_RELRO=yes
+ else
+ LINK_WITH_PT_GNU_RELRO=no
+ fi
+ else
+ dnl We really don't expect to get here, but just in case
+ AC_ERROR([couldn't compile a simple C file])
+ fi
+ rm -rf conftest*])
+ if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
+ if test "$USE_ELF_HACK" = F; then
+ AC_MSG_CHECKING([for -z norelro option to ld])
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-z,norelro"
+ AC_TRY_LINK(,,AC_MSG_RESULT([yes])
+ [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"],
+ AC_ERROR([--enable-elf-hack is not compatible with a linker creating a PT_GNU_RELRO segment and that doesn't support the "-z norelro" option.]))
+ USE_ELF_HACK=1
+ else
+ AC_MSG_WARN([Disabling elfhack])
+ USE_ELF_HACK=
+ fi
+ fi
+fi # COMPILE_ENVIRONMENT and others.
+
+dnl ========================================================
+dnl = libstdc++ compatibility hacks
+dnl ========================================================
+
+STDCXX_COMPAT=
+MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
+[ --enable-stdcxx-compat Enable compatibility with older libstdc++],
+ STDCXX_COMPAT=1)
+
+if test -n "$STDCXX_COMPAT"; then
+ eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
+ AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
+ AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
+ CXXFLAGS="$CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
+ HOST_CXXFLAGS="$HOST_CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0"
+fi
+
+dnl ========================================================
+dnl = frontend JS debug mode
+dnl ========================================================
+
+MOZ_ARG_ENABLE_BOOL(debug-js-modules,
+[ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
+ DEBUG_JS_MODULES=1,
+ DEBUG_JS_MODULES=)
+
+AC_SUBST(DEBUG_JS_MODULES)
+
+dnl ========================================================
+dnl = Don't precompile the startup cache
+dnl ========================================================
+MOZ_DISABLE_PRECOMPILED_STARTUPCACHE=
+
+MOZ_ARG_DISABLE_BOOL(precompiled-startupcache,
+[ --disable-precompiled-startupcache Don't precompile the startup cache ],
+ MOZ_DISABLE_PRECOMPILED_STARTUPCACHE=1,
+ MOZ_DISABLE_PRECOMPILED_STARTUPCACHE= )
+
+if test -n "$MOZ_DISABLE_PRECOMPILED_STARTUPCACHE"; then
+ AC_DEFINE(MOZ_DISABLE_PRECOMPILED_STARTUPCACHE)
+fi
+
+AC_SUBST(MOZ_DISABLE_PRECOMPILED_STARTUPCACHE)
+
+dnl ========================================================
+dnl =
+dnl = Profiling and Instrumenting
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Profiling and Instrumenting)
+
+dnl ========================================================
+dnl = Enable TaskTracer
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(tasktracer,
+[ --enable-tasktracer Set compile flags necessary for using TaskTracer],
+ MOZ_TASK_TRACER=1,
+ MOZ_TASK_TRACER= )
+if test -n "$MOZ_TASK_TRACER"; then
+ AC_DEFINE(MOZ_TASK_TRACER)
+ AC_SUBST(MOZ_TASK_TRACER)
+fi
+
+dnl ========================================================
+dnl Turn on reflow counting
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(reflow-perf,
+[ --enable-reflow-perf Enable reflow performance tracing],
+ MOZ_REFLOW_PERF=1,
+ MOZ_REFLOW_PERF= )
+if test -n "$MOZ_REFLOW_PERF"; then
+ AC_DEFINE(MOZ_REFLOW_PERF)
+fi
+
+dnl ========================================================
+dnl = Horizon build options - set default preferences for
+dnl the horizon project. Horizon is a browser built on
+dnl top of the graphene runtime.
+dnl ========================================================
+if test -n "$MOZ_HORIZON"; then
+ AC_DEFINE(MOZ_HORIZON)
+fi
+AC_SUBST(MOZ_HORIZON)
+
+dnl ========================================================
+dnl = Offer a way to disable the startup cache
+dnl ========================================================
+
+MOZ_ARG_DISABLE_BOOL(startupcache,
+[ --disable-startupcache Disable startup cache ],
+ MOZ_DISABLE_STARTUPCACHE=1,
+ MOZ_DISABLE_STARTUPCACHE=)
+
+if test -n "$MOZ_DISABLE_STARTUPCACHE"; then
+ AC_DEFINE(MOZ_DISABLE_STARTUPCACHE)
+fi
+AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
+
+dnl =========================================
+dnl = Enable packaging Gaia with B2G desktop
+dnl =========================================
+if test -n "$GAIADIR" -a ! -d "$GAIADIR" ; then
+ AC_MSG_ERROR([GAIADIR '$GAIADIR' isn't a valid directory])
+fi
+
+AC_SUBST(GAIADIR)
+if test -n "$GAIADIR" ; then
+ AC_DEFINE(PACKAGE_GAIA)
+fi
+
+if test -n "$FXOS_SIMULATOR" -a -z "$GAIADIR" ; then
+ AC_MSG_ERROR([FXOS_SIMULATOR=1 requires GAIADIR to be defined])
+fi
+
+if test -n "$FXOS_SIMULATOR" ; then
+ AC_DEFINE(FXOS_SIMULATOR)
+ AC_SUBST(FXOS_SIMULATOR)
+fi
+
+dnl ========================================================
+dnl = Enable Pico Speech Synthesis
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(synth-pico,
+[ --enable-synth-pico Set compile flags necessary for compiling Pico Web Speech API ],
+ MOZ_SYNTH_PICO=1,
+ MOZ_SYNTH_PICO= )
+if test -n "$MOZ_SYNTH_PICO"; then
+ AC_DEFINE(MOZ_SYNTH_PICO)
+fi
+AC_SUBST(MOZ_SYNTH_PICO)
+
+dnl ========================================================
+dnl = Enable Support for Time Manager API
+dnl ========================================================
+if test -n "$MOZ_TIME_MANAGER"; then
+ AC_DEFINE(MOZ_TIME_MANAGER)
+fi
+AC_SUBST(MOZ_TIME_MANAGER)
+
+dnl ========================================================
+dnl = Enable Support for AudioChannelManager API
+dnl ========================================================
+if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
+ AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
+fi
+AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
+
+dnl ========================================================
+dnl = Enable Support for Secure Element API
+dnl ========================================================
+ MOZ_SECUREELEMENT=1,
+if test -n "$MOZ_SECUREELEMENT"; then
+ AC_DEFINE(MOZ_SECUREELEMENT)
+fi
+ AC_SUBST(MOZ_SECUREELEMENT)
+
+dnl ========================================================
+dnl = Support for demangling undefined symbols
+dnl ========================================================
+if test -z "$SKIP_LIBRARY_CHECKS"; then
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
+ AC_LANG_RESTORE
+fi
+
+# Demangle only for debug or DMD builds
+MOZ_DEMANGLE_SYMBOLS=
+if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG"; then
+ MOZ_DEMANGLE_SYMBOLS=1
+ AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
+fi
+AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
+
+dnl ========================================================
+dnl = Support for gcc stack unwinding (from gcc 3.3)
+dnl ========================================================
+if test -z "$SKIP_LIBRARY_CHECKS"; then
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
+ AC_LANG_RESTORE
+fi
+
+dnl ========================================================
+dnl JIT observers
+dnl ========================================================
+
+MOZ_ARG_WITH_STRING(jitreport-granularity,
+[ --jitreport-granularity=N
+ Default granularity at which to report JIT code
+ to external tools
+ 0 - no info
+ 1 - code ranges for whole functions only
+ 2 - per-line information
+ 3 - per-op information],
+ JITREPORT_GRANULARITY=$withval,
+ JITREPORT_GRANULARITY=3)
+
+AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
+
+dnl ========================================================
+dnl = Disable Mozilla's versions of RIL and Geolocation
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(mozril-geoloc,
+[ --disable-mozril-geoloc Disable Mozilla's RIL and geolocation],
+ DISABLE_MOZ_RIL_GEOLOC=1,
+ DISABLE_MOZ_RIL_GEOLOC= )
+if test -n "$DISABLE_MOZ_RIL_GEOLOC"; then
+ AC_DEFINE(DISABLE_MOZ_RIL_GEOLOC)
+fi
+AC_SUBST(DISABLE_MOZ_RIL_GEOLOC)
+
+dnl ========================================================
+dnl =
+dnl = Misc. Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Misc. Options)
+
+dnl =========================================================
+dnl = Chrome format
+dnl =========================================================
+MOZ_ARG_ENABLE_STRING([chrome-format],
+[ --enable-chrome-format=jar|flat|omni
+ Select FORMAT of chrome files during packaging],
+ MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
+
+if test -z "$MOZ_CHROME_FILE_FORMAT"; then
+ MOZ_CHROME_FILE_FORMAT=omni
+fi
+
+if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
+ AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
+fi
+
+if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
+ test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
+ test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
+ AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
+fi
+
+dnl =========================================================
+dnl = Chrome compression
+dnl =========================================================
+MOZ_ARG_ENABLE_STRING([chrome-compression],
+[ --enable-chrome-compression=none|deflate|brotli
+ Select COMPRESSION type of chrome files during packaging],
+ JAR_COMPRESSION=`echo $enableval | tr A-Z a-z`)
+
+if test -z "$JAR_COMPRESSION"; then
+ JAR_COMPRESSION=deflate
+fi
+
+if test "$JAR_COMPRESSION" != "none" &&
+ test "$JAR_COMPRESSION" != "deflate" &&
+ test "$JAR_COMPRESSION" != "brotli"; then
+ AC_MSG_ERROR([--enable-chrome-compression must be set to either none, deflate, or brotli])
+fi
+
+dnl =========================================================
+dnl Omnijar packaging (bug 552121)
+dnl =========================================================
+dnl Omnijar packaging is compatible with flat packaging.
+dnl In unpackaged builds, omnijar looks for files as if
+dnl things were flat packaged. After packaging, all files
+dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
+dnl is set to flat since putting files into jars is only
+dnl done during packaging with omnijar.
+if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
+ MOZ_OMNIJAR=1
+ AC_DEFINE(MOZ_OMNIJAR)
+fi
+
+# Allow someone to change OMNIJAR_NAME in mozconfig
+MOZ_ARG_WITH_STRING(chrome-name,
+[ --with-chrome-name=CHROMENAME
+ Set chrome jar name (default=omni.ja)],
+[ val=`echo $withval`
+ OMNIJAR_NAME="$val"])
+
+# Default Omni Jar Name
+if test -z "$OMNIJAR_NAME" ; then
+ OMNIJAR_NAME=omni.ja
+fi
+
+MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
+if test "$OS_ARCH" = "WINNT"; then
+ MOZ_CHROME_FILE_FORMAT=flat
+else
+ MOZ_CHROME_FILE_FORMAT=symlink
+fi
+
+AC_SUBST(JAR_COMPRESSION)
+AC_SUBST(OMNIJAR_NAME)
+AC_SUBST(MOZ_OMNIJAR)
+AC_SUBST(MOZ_PACKAGER_FORMAT)
+AC_SUBST(MOZ_CHROME_FILE_FORMAT)
+
+dnl ========================================================
+dnl = Disable nsUserInfo
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(userinfo,
+[ --disable-userinfo Disable nsUserInfo (default=enabled)],
+ MOZ_USERINFO=,
+ MOZ_USERINFO=1)
+
+if test -n "$MOZ_USERINFO"; then
+ AC_DEFINE(MOZ_USERINFO)
+fi
+
+AC_SUBST(MOZ_USERINFO)
+
+dnl ========================================================
+dnl = Define default location for MOZILLA_FIVE_HOME
+dnl ========================================================
+MOZ_ARG_WITH_STRING(default-mozilla-five-home,
+[ --with-default-mozilla-five-home
+ Set the default value for MOZILLA_FIVE_HOME],
+[ val=`echo $withval`
+ AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
+
+dnl ========================================================
+dnl = Location of the mozilla user directory (default is ~/.mozilla).],
+dnl ========================================================
+MOZ_ARG_WITH_STRING(user-appdir,
+[ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
+[ val=`echo $withval`
+if echo "$val" | grep "\/" >/dev/null; then
+ AC_MSG_ERROR("Homedir must be single relative path.")
+else
+ MOZ_USER_DIR="$val"
+fi])
+
+AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
+
+dnl ========================================================
+dnl = Doxygen configuration
+dnl ========================================================
+dnl Use commas to specify multiple dirs to this arg
+MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
+MOZ_ARG_WITH_STRING(doc-input-dirs,
+[ --with-doc-input-dirs=DIRS
+ Header/idl dirs to create docs from],
+[ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
+AC_SUBST(MOZ_DOC_INPUT_DIRS)
+
+dnl Use commas to specify multiple dirs to this arg
+MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
+MOZ_ARG_WITH_STRING(doc-include-dirs,
+[ --with-doc-include-dirs=DIRS
+ Include dirs to preprocess doc headers],
+[ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
+AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
+
+MOZ_DOC_OUTPUT_DIR='./dist/docs'
+MOZ_ARG_WITH_STRING(doc-output-dir,
+[ --with-doc-output-dir=DIR
+ Dir to generate docs into],
+[ MOZ_DOC_OUTPUT_DIR=$withval ] )
+AC_SUBST(MOZ_DOC_OUTPUT_DIR)
+
+if test -z "$SKIP_COMPILER_CHECKS"; then
+dnl ========================================================
+dnl =
+dnl = Compiler Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Compiler Options)
+
+dnl ========================================================
+dnl Check for gcc -pipe support
+dnl ========================================================
+AC_MSG_CHECKING([for -pipe support])
+if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
+ dnl Any gcc that supports firefox supports -pipe.
+ CFLAGS="$CFLAGS -pipe"
+ CXXFLAGS="$CXXFLAGS -pipe"
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([no])
+fi
+
+dnl ========================================================
+dnl Profile guided optimization (gcc checks)
+dnl ========================================================
+dnl Test for profiling options
+dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
+
+_SAVE_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
+
+AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
+AC_TRY_COMPILE([], [return 0;],
+ [ PROFILE_GEN_CFLAGS="-fprofile-generate"
+ result="yes" ], result="no")
+AC_MSG_RESULT([$result])
+
+if test $result = "yes"; then
+ PROFILE_GEN_LDFLAGS="-fprofile-generate"
+ PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
+ PROFILE_USE_LDFLAGS="-fprofile-use"
+fi
+
+CFLAGS="$_SAVE_CFLAGS"
+
+AC_SUBST(PROFILE_GEN_CFLAGS)
+AC_SUBST(PROFILE_GEN_LDFLAGS)
+AC_SUBST(PROFILE_USE_CFLAGS)
+AC_SUBST(PROFILE_USE_LDFLAGS)
+
+fi # ! SKIP_COMPILER_CHECKS
+
+AC_DEFINE(CPP_THROW_NEW, [throw()])
+AC_LANG_C
+
+if test "$COMPILE_ENVIRONMENT"; then
+MOZ_EXPAND_LIBS
+fi # COMPILE_ENVIRONMENT
+
+dnl ========================================================
+dnl =
+dnl = Build depencency options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Build dependencies)
+
+if test "$GNU_CC" -a "$GNU_CXX"; then
+ _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
+else
+ dnl Don't override this for MSVC
+ if test -z "$_WIN32_MSVC"; then
+ _USE_CPP_INCLUDE_FLAG=
+ _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
+ _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
+ else
+ echo '#include <stdio.h>' > dummy-hello.c
+ changequote(,)
+ dnl This output is localized, split at the first double space or colon and space.
+ _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*\\\stdio.h\)$"
+ CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'`
+ _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'`
+ changequote([,])
+ if ! test -e "$_CL_STDIO_PATH"; then
+ AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.])
+ fi
+ if test -z "$CL_INCLUDES_PREFIX"; then
+ AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
+ fi
+ AC_SUBST(CL_INCLUDES_PREFIX)
+ rm -f dummy-hello.c
+
+ dnl Make sure that the build system can handle non-ASCII characters
+ dnl in environment variables to prevent it from breaking silently on
+ dnl non-English systems.
+ NONASCII=$'\241\241'
+ AC_SUBST(NONASCII)
+ fi
+fi
+
+dnl ========================================================
+dnl =
+dnl = Static Build Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Static build options)
+
+# Option to enable shared gkmedias on other target operating systems.
+# This is overriden for Windows regardless if it is set or not.
+MOZ_ARG_ENABLE_BOOL(shared-media,
+[ --enable-shared-media Build GKMedias as a shared lib],
+ GKMEDIAS_SHARED_LIBRARY=1,
+ GKMEDIAS_SHARED_LIBRARY=)
+
+# We want gkmedias always be enabled on Windows regardless of the enable bool.
+if test "$OS_ARCH" = "WINNT"; then
+ GKMEDIAS_SHARED_LIBRARY=1
+fi
+
+if test -n "$GKMEDIAS_SHARED_LIBRARY"; then
+ AC_DEFINE(GKMEDIAS_SHARED_LIBRARY)
+fi
+
+AC_SUBST(GKMEDIAS_SHARED_LIBRARY)
+
+# Shared JS or gkmedias needs zlib in mozglue
+if test -z "$MOZ_SYSTEM_ZLIB"; then
+ # XXX: Currently JS_SHARED_LIBRARY lives in mozconfigure
+ if test -n "$JS_SHARED_LIBRARY" -o "$GKMEDIAS_SHARED_LIBRARY"; then
+ ZLIB_IN_MOZGLUE=1
+ AC_DEFINE(ZLIB_IN_MOZGLUE)
+ fi
+fi
+
+AC_SUBST(ZLIB_IN_MOZGLUE)
+
+dnl ========================================================
+dnl =
+dnl = Standalone module options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
+
+dnl Check for GLib.
+dnl ========================================================
+
+if test -z "$SKIP_PATH_CHECKS"; then
+if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
+ if test "$MOZ_ENABLE_GTK" ; then
+ PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
+ fi
+fi
+fi
+
+if test -z "${GLIB_GMODULE_LIBS}" \
+ -a -n "${GLIB_CONFIG}"\
+ -a "${GLIB_CONFIG}" != no\
+; then
+ GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
+fi
+
+AC_SUBST_LIST(GLIB_GMODULE_LIBS)
+
+if test "$USE_FC_FREETYPE"; then
+ if test "$COMPILE_ENVIRONMENT"; then
+ dnl ========================================================
+ dnl = Check for freetype2 functionality
+ dnl ========================================================
+ if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
+ _SAVE_LIBS="$LIBS"
+ _SAVE_CFLAGS="$CFLAGS"
+ LIBS="$LIBS $FT2_LIBS"
+ CFLAGS="$CFLAGS $FT2_CFLAGS"
+
+ AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
+ ac_cv_member_FT_Bitmap_Size_y_ppem,
+ [AC_TRY_COMPILE([#include <ft2build.h>
+ #include FT_FREETYPE_H],
+ [FT_Bitmap_Size s;
+ if (sizeof s.y_ppem) return 0;
+ return 1],
+ ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
+ ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
+ if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
+ HAVE_FT_BITMAP_SIZE_Y_PPEM=1
+ else
+ HAVE_FT_BITMAP_SIZE_Y_PPEM=0
+ fi
+ AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
+ $HAVE_FT_BITMAP_SIZE_Y_PPEM,
+ [FT_Bitmap_Size structure includes y_ppem field])
+
+ AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
+
+ LIBS="$_SAVE_LIBS"
+ CFLAGS="$_SAVE_CFLAGS"
+ fi
+
+ _SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
+ MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
+ [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
+ CPPFLAGS="$_SAVE_CPPFLAGS"
+ fi
+fi
+
+dnl ========================================================
+dnl Check for pixman and cairo
+dnl ========================================================
+
+MOZ_TREE_CAIRO=1
+MOZ_ARG_ENABLE_BOOL(system-cairo,
+[ --enable-system-cairo Use system cairo (located with pkgconfig)],
+MOZ_TREE_CAIRO=,
+MOZ_TREE_CAIRO=1 )
+
+MOZ_TREE_PIXMAN=1
+MOZ_ARG_ENABLE_BOOL(system-pixman,
+[ --enable-system-pixman Use system pixman (located with pkgconfig)],
+MOZ_TREE_PIXMAN=,
+MOZ_TREE_PIXMAN=force,
+MOZ_TREE_PIXMAN=1 )
+
+# System cairo depends on system pixman
+if test "$MOZ_TREE_PIXMAN" = "force"; then
+ if test -z "$MOZ_TREE_CAIRO"; then
+ AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
+ else
+ MOZ_TREE_PIXMAN=1
+ fi
+elif test -z "$MOZ_TREE_CAIRO"; then
+ MOZ_TREE_PIXMAN=
+fi
+
+if test "$MOZ_TREE_PIXMAN"; then
+ AC_DEFINE(MOZ_TREE_PIXMAN)
+else
+ PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
+fi
+
+if test "$MOZ_TREE_CAIRO"; then
+ MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
+ AC_DEFINE(MOZ_TREE_CAIRO)
+
+ if test "$OS_ARCH" = "WINNT"; then
+ # For now we assume that we will have a uint64_t available through
+ # one of the above headers or mozstdint.h.
+ AC_DEFINE(HAVE_UINT64_T)
+ fi
+
+ # Define macros for cairo-features.h
+ TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
+ if test "$MOZ_X11"; then
+ XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
+ XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
+ PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
+ fi
+ if test "$_HAVE_FREETYPE2"; then
+ FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
+ MOZ_ENABLE_CAIRO_FT=1
+ CAIRO_FT_CFLAGS="$FT2_CFLAGS"
+ fi
+
+ case "$MOZ_WIDGET_TOOLKIT" in
+ windows)
+ WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
+ WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
+ WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
+ WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
+ MOZ_ENABLE_D2D_SURFACE=1
+
+ if test "$COMPILE_ENVIRONMENT"; then
+
+ dnl D3D10 Layers depend on D2D Surfaces.
+ if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
+ MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
+ fi
+ fi
+ ;;
+ esac
+ if test "$USE_FC_FREETYPE"; then
+ FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
+ fi
+ AC_SUBST(MOZ_ENABLE_CAIRO_FT)
+ AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
+ AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
+
+ AC_SUBST(PS_SURFACE_FEATURE)
+ AC_SUBST(SVG_SURFACE_FEATURE)
+ AC_SUBST(XLIB_SURFACE_FEATURE)
+ AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
+ AC_SUBST(WIN32_SURFACE_FEATURE)
+ AC_SUBST(OS2_SURFACE_FEATURE)
+ AC_SUBST(DIRECTFB_SURFACE_FEATURE)
+ AC_SUBST(FT_FONT_FEATURE)
+ AC_SUBST(FC_FONT_FEATURE)
+ AC_SUBST(WIN32_FONT_FEATURE)
+ AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
+ AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
+ AC_SUBST(PNG_FUNCTIONS_FEATURE)
+ AC_SUBST(QT_SURFACE_FEATURE)
+ AC_SUBST(TEE_SURFACE_FEATURE)
+
+ if test "$MOZ_X11"; then
+ MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
+ fi
+
+ CAIRO_FEATURES_H=libs/cairo/src/cairo-features.h
+else
+ PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
+ MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
+ MOZ_CAIRO_LIBS="$CAIRO_LIBS"
+ PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
+ if test "$MOZ_X11"; then
+ PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
+ MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
+ MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
+ MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
+ fi
+fi
+
+AC_SUBST(MOZ_TREE_CAIRO)
+AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
+AC_SUBST_LIST(MOZ_CAIRO_LIBS)
+AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
+AC_SUBST(MOZ_TREE_PIXMAN)
+
+dnl ========================================================
+dnl necko configuration options
+dnl ========================================================
+
+dnl
+dnl option to disable necko's wifi scanner
+dnl
+
+MOZ_ARG_DISABLE_BOOL(necko-wifi,
+[ --disable-necko-wifi Disable necko wifi scanner],
+ MOZ_NECKO_WIFI=,
+ MOZ_NECKO_WIFI=1)
+
+if test "$MOZ_NECKO_WIFI"; then
+ case "$OS_TARGET" in
+ DragonFly|FreeBSD|WINNT)
+ NECKO_WIFI=1
+ ;;
+ Linux)
+ NECKO_WIFI=1
+ NECKO_WIFI_DBUS=1
+ ;;
+ esac
+fi
+
+if test "$NECKO_WIFI"; then
+ if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
+ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
+ fi
+ AC_DEFINE(NECKO_WIFI)
+ _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
+fi
+AC_SUBST(NECKO_WIFI)
+AC_SUBST(NECKO_WIFI_DBUS)
+
+dnl
+dnl option to disable cookies
+dnl
+MOZ_ARG_DISABLE_BOOL(cookies,
+[ --disable-cookies Disable cookie support],
+ NECKO_COOKIES=,
+ NECKO_COOKIES=1)
+AC_SUBST(NECKO_COOKIES)
+if test "$NECKO_COOKIES"; then
+ AC_DEFINE(NECKO_COOKIES)
+ _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
+fi
+
+dnl ========================================================
+dnl =
+dnl = Miscellaneous (former toolkit/moz.configure)
+dnl =
+dnl ========================================================
+
+dnl Build Places if required
+AC_SUBST(MOZ_PLACES)
+if test "$MOZ_PLACES"; then
+ AC_DEFINE(MOZ_PLACES)
+fi
+
+dnl Build Sync Services if required
+AC_SUBST(MOZ_SERVICES_SYNC)
+if test -n "$MOZ_SERVICES_SYNC"; then
+ AC_DEFINE(MOZ_SERVICES_SYNC)
+fi
+
+
+dnl ========================================================
+if test "$MOZ_DEBUG"; then
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
+fi
+
+dnl ========================================================
+dnl =
+dnl = Maintainer debug option (no --enable equivalent)
+dnl =
+dnl ========================================================
+
+AC_SUBST(AR)
+AC_SUBST(AR_FLAGS)
+AC_SUBST(AR_EXTRACT)
+AC_SUBST(AS)
+AC_SUBST(ASFLAGS)
+AC_SUBST(AS_DASH_C_FLAG)
+AC_SUBST(LD)
+AC_SUBST(RC)
+AC_SUBST(RCFLAGS)
+AC_SUBST(WINDRES)
+AC_SUBST(IMPLIB)
+AC_SUBST(FILTER)
+AC_SUBST(BIN_FLAGS)
+AC_SUBST(MOZ_AUTH_EXTENSION)
+AC_SUBST(MOZ_PREF_EXTENSIONS)
+AC_SUBST(MOZ_DEBUG)
+AC_SUBST(MOZ_DEBUG_LDFLAGS)
+AC_SUBST(WARNINGS_AS_ERRORS)
+AC_SUBST(LIBICONV)
+AC_SUBST(MOZ_TOOLKIT_SEARCH)
+AC_SUBST(MOZ_FEEDS)
+
+AC_SUBST(ENABLE_TESTS)
+
+AC_SUBST(MOZ_UNIVERSALCHARDET)
+AC_SUBST(ACCESSIBILITY)
+AC_SUBST(MOZ_SPELLCHECK)
+AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
+AC_SUBST(MOZ_ENABLE_SIGNMAR)
+AC_SUBST(MOZ_UPDATER)
+
+AC_SUBST(MOZ_ANGLE_RENDERER)
+AC_SUBST(MOZ_D3D_CPU_SUFFIX)
+AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
+AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
+AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
+
+AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
+AC_SUBST(ENABLE_STRIP)
+AC_SUBST(PKG_SKIP_STRIP)
+AC_SUBST(STRIP_FLAGS)
+AC_SUBST(USE_ELF_HACK)
+AC_SUBST(INCREMENTAL_LINKER)
+AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
+
+AC_SUBST(MOZ_FIX_LINK_PATHS)
+AC_SUBST(NSDISTMODE)
+
+AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
+
+AC_SUBST(MOZ_JSDOWNLOADS)
+if test -n "$MOZ_JSDOWNLOADS"; then
+ AC_DEFINE(MOZ_JSDOWNLOADS)
+fi
+
+dnl ========================================================
+dnl = Mac bundle name prefix
+dnl ========================================================
+MOZ_ARG_WITH_STRING(macbundlename-prefix,
+[ --with-macbundlename-prefix=prefix
+ Prefix for MOZ_MACBUNDLE_NAME],
+[ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
+
+MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
+if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
+ MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX} ${MOZ_MACBUNDLE_NAME}"
+fi
+
+if test "$MOZ_DEBUG"; then
+ MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
+else
+ MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
+fi
+AC_SUBST(MOZ_MACBUNDLE_NAME)
+
+dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
+MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
+MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
+if test "$MOZ_DEBUG"; then
+ MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
+fi
+
+AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
+AC_SUBST(MOZ_MACBUNDLE_ID)
+
+dnl ========================================================
+dnl = Child Process Name for IPC
+dnl ========================================================
+MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
+MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
+
+AC_SUBST(MOZ_CHILD_PROCESS_NAME)
+AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
+
+# The following variables are available to branding and application
+# configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
+# - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
+# impacts profile location and user-visible fields.
+# - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
+# versions of a given application (e.g. Aurora and Firefox both use
+# "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
+# for application.ini's "Name" field, which controls profile location in
+# the absence of a "Profile" field (see below), and various system
+# integration hooks (Unix remoting, Windows MessageWindow name, etc.)
+# - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
+# Mac Bundle name, Updater, Installer), it is typically used for nightly
+# builds (e.g. Aurora for Firefox).
+# - MOZ_APP_VERSION: Defines the application version number.
+# - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
+# in the "About" window. If not set, defaults to MOZ_APP_VERSION.
+# - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
+# defaults to a lowercase form of MOZ_APP_BASENAME.
+# - MOZ_APP_REMOTINGNAME: Used for the internal program name, which affects
+# profile name and remoting. If not set, defaults to MOZ_APP_NAME.
+# - MOZ_APP_PROFILE: When set, used for application.ini's
+# "Profile" field, which controls profile location.
+# - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
+# crash reporter server url.
+# - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
+
+if test -z "$MOZ_APP_NAME"; then
+ MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
+fi
+
+if test -z "$MOZ_APP_REMOTINGNAME"; then
+ MOZ_APP_REMOTINGNAME=$MOZ_APP_NAME
+fi
+
+if test -z "$MOZ_APP_VERSION_DISPLAY"; then
+ MOZ_APP_VERSION_DISPLAY=$MOZ_APP_VERSION
+fi
+
+# For extensions and langpacks, we require a max version that is compatible
+# across security releases. MOZ_APP_MAXVERSION is our method for doing that.
+# 24.0a1 and 24.0a2 aren't affected
+# 24.0 becomes 24.*
+# 24.1.1 becomes 24.*
+IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
+if test -z "$IS_ALPHA"; then
+ changequote(,)
+ if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
+ MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
+ else
+ MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
+ fi
+ changequote([,])
+else
+ MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
+fi
+
+AC_SUBST(MOZ_APP_NAME)
+AC_SUBST(MOZ_APP_REMOTINGNAME)
+AC_SUBST(MOZ_APP_DISPLAYNAME)
+AC_SUBST(MOZ_APP_BASENAME)
+AC_SUBST(MOZ_APP_VENDOR)
+AC_SUBST(MOZ_APP_PROFILE)
+AC_SUBST(MOZ_APP_ID)
+AC_SUBST(MAR_CHANNEL_ID)
+AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
+AC_SUBST(MOZ_PROFILE_MIGRATOR)
+AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
+AC_SUBST(MOZ_APP_UA_NAME)
+AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
+AC_SUBST(MOZ_APP_VERSION)
+AC_SUBST(MOZ_APP_VERSION_DISPLAY)
+AC_SUBST(MOZ_APP_MAXVERSION)
+AC_SUBST(MOZ_UA_OS_AGNOSTIC)
+if test -n "$MOZ_UA_OS_AGNOSTIC"; then
+ AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
+fi
+
+AC_SUBST(MOZ_APP_STATIC_INI)
+
+AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
+AC_SUBST(MOZ_UA_BUILDID)
+
+AC_SUBST(MOZ_PKG_SPECIAL)
+AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
+
+AC_SUBST(MOZILLA_OFFICIAL)
+if test "$MOZILLA_OFFICIAL"; then
+ AC_DEFINE(MOZILLA_OFFICIAL)
+ # Build revisions should always be present in official Mozilla builds
+ MOZ_INCLUDE_SOURCE_INFO=1
+fi
+
+# External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
+# explicitly set the repository and changeset information in.
+AC_SUBST(MOZ_SOURCE_REPO)
+AC_SUBST(MOZ_SOURCE_CHANGESET)
+AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
+
+dnl win32 options
+AC_SUBST(WIN32_REDIST_DIR)
+AC_SUBST(WIN_UCRT_REDIST_DIR)
+
+dnl ========================================================
+dnl ICU Support
+dnl ========================================================
+
+if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
+ USE_ICU=1
+fi
+
+MOZ_CONFIG_ICU()
+
+dnl Echo the CFLAGS to remove extra whitespace.
+CFLAGS=`echo \
+ $_WARNINGS_CFLAGS \
+ $CFLAGS`
+
+CXXFLAGS=`echo \
+ $_WARNINGS_CXXFLAGS \
+ $CXXFLAGS`
+
+COMPILE_CFLAGS=`echo \
+ $_DEFINES_CFLAGS \
+ $COMPILE_CFLAGS`
+
+COMPILE_CXXFLAGS=`echo \
+ $_DEFINES_CXXFLAGS \
+ $COMPILE_CXXFLAGS`
+
+HOST_CFLAGS=`echo \
+ $HOST_CFLAGS`
+
+HOST_CXXFLAGS=`echo \
+ $HOST_CXXFLAGS`
+
+AC_SUBST(_DEPEND_CFLAGS)
+AC_SUBST(MOZ_SYSTEM_JPEG)
+AC_SUBST(MOZ_SYSTEM_PNG)
+AC_SUBST(MOZ_SYSTEM_BZ2)
+
+AC_SUBST_LIST(MOZ_JPEG_CFLAGS)
+AC_SUBST_LIST(MOZ_JPEG_LIBS)
+AC_SUBST_LIST(MOZ_BZ2_CFLAGS)
+AC_SUBST_LIST(MOZ_BZ2_LIBS)
+AC_SUBST_LIST(MOZ_PNG_CFLAGS)
+AC_SUBST_LIST(MOZ_PNG_LIBS)
+
+HOST_CMFLAGS=-fobjc-exceptions
+HOST_CMMFLAGS=-fobjc-exceptions
+OS_COMPILE_CMFLAGS=-fobjc-exceptions
+OS_COMPILE_CMMFLAGS=-fobjc-exceptions
+AC_SUBST(HOST_CMFLAGS)
+AC_SUBST(HOST_CMMFLAGS)
+AC_SUBST(OS_COMPILE_CMFLAGS)
+AC_SUBST(OS_COMPILE_CMMFLAGS)
+
+OS_CFLAGS="$CFLAGS"
+OS_CXXFLAGS="$CXXFLAGS"
+OS_CPPFLAGS="$CPPFLAGS"
+OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
+OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
+OS_LDFLAGS="$LDFLAGS"
+OS_LIBS="$LIBS"
+AC_SUBST(OS_CFLAGS)
+AC_SUBST(OS_CXXFLAGS)
+AC_SUBST(OS_CPPFLAGS)
+AC_SUBST(OS_COMPILE_CFLAGS)
+AC_SUBST(OS_COMPILE_CXXFLAGS)
+AC_SUBST(OS_LDFLAGS)
+AC_SUBST(OS_LIBS)
+
+AC_SUBST(HOST_CC)
+AC_SUBST(HOST_CXX)
+AC_SUBST(HOST_CFLAGS)
+AC_SUBST(HOST_CPPFLAGS)
+AC_SUBST(HOST_CXXFLAGS)
+AC_SUBST(HOST_LDFLAGS)
+AC_SUBST(HOST_OPTIMIZE_FLAGS)
+AC_SUBST(HOST_AR)
+AC_SUBST(HOST_AR_FLAGS)
+AC_SUBST(HOST_LD)
+AC_SUBST(HOST_RANLIB)
+AC_SUBST(HOST_BIN_SUFFIX)
+
+AC_SUBST(TARGET_XPCOM_ABI)
+AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
+AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
+AC_SUBST(HAVE_X86_AVX2)
+AC_SUBST(HAVE_ALTIVEC)
+AC_SUBST(GCC_USE_GNU_LD)
+
+AC_SUBST(WRAP_LDFLAGS)
+AC_SUBST(MKSHLIB)
+AC_SUBST(MKCSHLIB)
+AC_SUBST(DSO_CFLAGS)
+AC_SUBST(DSO_PIC_CFLAGS)
+AC_SUBST(DSO_LDOPTS)
+AC_SUBST(LIB_PREFIX)
+AC_SUBST(DLL_PREFIX)
+AC_SUBST(DLL_SUFFIX)
+AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
+AC_SUBST(LIB_SUFFIX)
+AC_SUBST(OBJ_SUFFIX)
+AC_SUBST(BIN_SUFFIX)
+AC_SUBST(IMPORT_LIB_SUFFIX)
+AC_SUBST(USE_N32)
+AC_SUBST(CC_VERSION)
+AC_SUBST(NS_ENABLE_TSF)
+AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
+AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
+
+AC_SUBST(MOZ_VORBIS)
+AC_SUBST(MOZ_TREMOR)
+AC_SUBST(MOZ_FFVPX)
+AC_SUBST_LIST(FFVPX_ASFLAGS)
+AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
+AC_SUBST(VPX_USE_YASM)
+AC_SUBST_LIST(VPX_ASFLAGS)
+AC_SUBST(VPX_AS_CONVERSION)
+AC_SUBST(VPX_X86_ASM)
+AC_SUBST(VPX_ARM_ASM)
+AC_SUBST(LIBJPEG_TURBO_USE_YASM)
+AC_SUBST_LIST(LIBJPEG_TURBO_ASFLAGS)
+AC_SUBST(MOZ_LIBAV_FFT)
+AC_SUBST_LIST(LIBAV_FFT_ASFLAGS)
+
+AC_SUBST(MOZ_PACKAGE_JSSHELL)
+AC_SUBST(MOZ_FOLD_LIBS)
+AC_SUBST(MOZ_FOLD_LIBS_FLAGS)
+AC_SUBST(SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE)
+
+AC_SUBST(DMG_TOOL)
+
+dnl Host JavaScript runtime, if any, to use during cross compiles.
+AC_SUBST(JS_BINARY)
+
+AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
+
+if test -n "$COMPILE_ENVIRONMENT"; then
+AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
+
+dnl Check for missing components
+if test "$MOZ_X11"; then
+ dnl ====================================================
+ dnl = Check if X headers exist
+ dnl ====================================================
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $XCFLAGS"
+ AC_TRY_COMPILE([
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <X11/Xlib.h>
+ #include <X11/Intrinsic.h>
+ #include <X11/extensions/XShm.h>
+ ],
+ [
+ Display *dpy = 0;
+ if ((dpy = XOpenDisplay(NULL)) == NULL) {
+ fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
+ exit(1);
+ }
+ ], [],
+ [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
+ CFLAGS="$_SAVE_CFLAGS"
+
+ if test -n "$MISSING_X"; then
+ AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
+ fi
+
+fi # MOZ_X11
+
+fi # COMPILE_ENVIRONMENT
+
+dnl Set various defines and substitutions
+dnl ========================================================
+
+if test "$MOZ_DEBUG"; then
+ AC_DEFINE(MOZ_REFLOW_PERF)
+ AC_DEFINE(MOZ_REFLOW_PERF_DSP)
+fi
+
+if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
+ AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
+ ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
+ ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
+ ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
+ ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
+ AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
+ AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
+ AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
+fi
+
+if test "$MOZ_DEBUG"; then
+ A11Y_LOG=1
+fi
+case "$MOZ_UPDATE_CHANNEL" in
+aurora|beta|release|esr)
+ ;;
+*)
+ A11Y_LOG=1
+ ;;
+esac
+AC_SUBST(A11Y_LOG)
+if test -n "$A11Y_LOG"; then
+ AC_DEFINE(A11Y_LOG)
+fi
+
+AC_SUBST(MOZILLA_VERSION) \ No newline at end of file
diff --git a/build/autoconf/finish.configure b/build/autoconf/finish.configure
new file mode 100644
index 000000000..06b0c899e
--- /dev/null
+++ b/build/autoconf/finish.configure
@@ -0,0 +1,194 @@
+dnl Spit out some output
+dnl ========================================================
+
+dnl The following defines are used by xpcom
+_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
+CPP_THROW_NEW
+HAVE_CPP_AMBIGUITY_RESOLVING_USING
+HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
+HAVE_CPP_PARTIAL_SPECIALIZATION
+HAVE_GETPAGESIZE
+HAVE_ICONV
+HAVE_ICONV_WITH_CONST_INPUT
+HAVE_MBRTOWC
+HAVE_WCRTOMB
+HAVE_STATVFS64
+HAVE_STATVFS
+HAVE_STATFS64
+HAVE_STATFS
+HAVE_SYS_STATVFS_H
+HAVE_SYS_STATFS_H
+HAVE_SYS_VFS_H
+HAVE_SYS_MOUNT_H
+"
+
+dnl ========================================================
+dnl Determine options to use for running the preprocessor.
+dnl ========================================================
+
+if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then
+ PREPROCESS_OPTION="-P -Fi"
+else
+ PREPROCESS_OPTION="-E -o "
+fi
+
+AC_SUBST(PREPROCESS_OPTION)
+
+# Avoid using obsolete NSPR features
+AC_DEFINE(NO_NSPR_10_SUPPORT)
+
+# Don't build NSS libpkix
+NSS_DISABLE_LIBPKIX=1
+AC_SUBST(NSS_DISABLE_LIBPKIX)
+
+MOZ_CREATE_CONFIG_STATUS()
+
+# Run freetype configure script
+
+if test "$MOZ_TREE_FREETYPE"; then
+ export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
+ export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
+ export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
+ export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
+ # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed
+ # to force freetype to use our settings rather than autodetecting
+ if test -n "$MOZ_SYSTEM_PNG"; then
+ export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS "
+ else
+ export LIBPNG_CFLAGS="-I$_objdir/dist/include"
+ fi
+ export LIBPNG_LIBS="$MOZ_PNG_LIBS "
+ export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS "
+ export ZLIB_LIBS="$MOZ_ZLIB_LIBS "
+ export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
+ ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz"
+
+ if ! test -e modules; then
+ mkdir modules
+ fi
+ # Only export CC, CXX and RANLIB for the subconfigure, and avoid spilling
+ # that further down the road.
+ (export CC CXX RANLIB;
+ AC_OUTPUT_SUBDIRS(modules/freetype2)
+ ) || exit 1
+fi
+
+if test -z "$direct_nspr_config"; then
+ dnl ========================================================
+ dnl = Setup a nice relatively clean build environment for
+ dnl = sub-configures.
+ dnl ========================================================
+ CC="$_SUBDIR_CC"
+ CXX="$_SUBDIR_CXX"
+ CFLAGS="$_SUBDIR_CFLAGS"
+ CPPFLAGS="$_SUBDIR_CPPFLAGS"
+ CXXFLAGS="$_SUBDIR_CXXFLAGS"
+ LDFLAGS="$_SUBDIR_LDFLAGS"
+ HOST_CC="$_SUBDIR_HOST_CC"
+ HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
+ HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS"
+ HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
+ RC=
+fi
+
+unset MAKEFILES
+unset CONFIG_FILES
+
+# Run all configure scripts specified by a subconfigure
+if test -n "$_subconfigure_subdir"; then
+ _save_srcdir="$srcdir"
+ srcdir="$srcdir/.."
+ _save_ac_configure_args="$ac_configure_args"
+ ac_configure_args="$_subconfigure_config_args"
+ AC_OUTPUT_SUBDIRS_NOW("$_subconfigure_subdir",$cache_file)
+ ac_configure_args="$_save_ac_configure_args"
+ srcdir="$_save_srcdir"
+fi
+
+if test "$COMPILE_ENVIRONMENT"; then
+
+export WRAP_LDFLAGS
+
+dnl ========================================================
+dnl = Setup a nice relatively clean build environment for
+dnl = sub-configures.
+dnl ========================================================
+CC="$_SUBDIR_CC"
+CXX="$_SUBDIR_CXX"
+CFLAGS="$_SUBDIR_CFLAGS"
+CPPFLAGS="$_SUBDIR_CPPFLAGS"
+CXXFLAGS="$_SUBDIR_CXXFLAGS"
+LDFLAGS="$_SUBDIR_LDFLAGS"
+HOST_CC="$_SUBDIR_HOST_CC"
+HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
+HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS"
+HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
+RC=
+
+# Run the SpiderMonkey 'configure' script.
+dist=$MOZ_BUILD_ROOT/dist
+ac_configure_args="$_SUBDIR_CONFIG_ARGS"
+
+# --with-system-nspr will have been converted into the relevant $NSPR_CFLAGS
+# and $NSPR_LIBS.
+ac_configure_args="`echo $ac_configure_args | sed -e 's/--with-system-nspr\S* *//'`"
+
+if test "$_INTL_API" = no; then
+ ac_configure_args="$ac_configure_args --without-intl-api"
+fi
+
+if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then
+ ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
+ ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
+fi
+ac_configure_args="$ac_configure_args --prefix=$dist"
+if test -n "$ZLIB_IN_MOZGLUE"; then
+ MOZ_ZLIB_LIBS=
+fi
+export MOZ_SYSTEM_ZLIB
+export MOZ_ZLIB_CFLAGS
+export MOZ_ZLIB_LIBS
+export MOZ_APP_NAME
+export MOZ_APP_REMOTINGNAME
+export MOZILLA_CENTRAL_PATH=$_topsrcdir
+export STLPORT_CPPFLAGS
+export STLPORT_LIBS
+unset MOZ_BUILD_APP
+export DIST
+export ZLIB_IN_MOZGLUE
+export AR
+export RANLIB
+export CPP
+export CC
+export CXX
+export LD
+export ARFLAGS
+export CPPFLAGS
+export CFLAGS
+export CXXFLAGS
+export LDFLAGS
+export HOST_CC
+export HOST_CXX
+export HOST_CFLAGS
+export HOST_CPPFLAGS
+export HOST_CXXFLAGS
+export HOST_LDFLAGS
+
+if ! test -e js; then
+ mkdir js
+fi
+
+ac_configure_args="$ac_configure_args JS_STANDALONE="
+AC_OUTPUT_SUBDIRS(js/src,$cache_file)
+ac_configure_args="$_SUBDIR_CONFIG_ARGS"
+
+fi # COMPILE_ENVIRONMENT
+
+dnl we need to run config.status after js/src subconfigure because we're
+dnl traversing its moz.build and we need its config.status for that.
+dnl However, writing our own config.status needs to happen before
+dnl subconfigures because the setup surrounding subconfigures alters
+dnl many AC_SUBSTed variables.
+MOZ_RUN_ALL_SUBCONFIGURES()
+
+rm -fr confdefs* $ac_clean_files
diff --git a/build/autoconf/start.configure b/build/autoconf/start.configure
new file mode 100644
index 000000000..83ceee90a
--- /dev/null
+++ b/build/autoconf/start.configure
@@ -0,0 +1,1856 @@
+dnl ========================================================
+dnl =
+dnl = Don't change the following two lines. Doing so breaks:
+dnl =
+dnl = CFLAGS="-foo" ./configure
+dnl =
+dnl ========================================================
+CFLAGS="${CFLAGS=}"
+CPPFLAGS="${CPPFLAGS=}"
+CXXFLAGS="${CXXFLAGS=}"
+LDFLAGS="${LDFLAGS=}"
+HOST_CFLAGS="${HOST_CFLAGS=}"
+HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
+HOST_LDFLAGS="${HOST_LDFLAGS=}"
+
+dnl ========================================================
+dnl = Preserve certain environment flags passed to configure
+dnl = We want sub projects to receive the same flags
+dnl = untainted by this configure script
+dnl ========================================================
+_SUBDIR_CC="$CC"
+_SUBDIR_CXX="$CXX"
+_SUBDIR_CFLAGS="$CFLAGS"
+_SUBDIR_CPPFLAGS="$CPPFLAGS"
+_SUBDIR_CXXFLAGS="$CXXFLAGS"
+_SUBDIR_LDFLAGS="$LDFLAGS"
+_SUBDIR_HOST_CC="$HOST_CC"
+_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
+_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
+_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
+_SUBDIR_CONFIG_ARGS="$ac_configure_args"
+
+dnl Set the version number of the libs included with mozilla
+dnl ========================================================
+MOZJPEG=62
+MOZPNG=10625
+NSPR_VERSION=4
+NSPR_MINVER=4.32
+NSS_VERSION=3
+
+dnl Set the minimum version of toolkit libs used by mozilla
+dnl ========================================================
+GLIB_VERSION=2.22
+# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED.
+# The macro won't be used when compiling with earlier versions anyway.
+GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26
+GIO_VERSION=2.22
+CAIRO_VERSION=1.10
+GTK2_VERSION=2.18.0
+GTK3_VERSION=3.4.0
+GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
+WINDRES_VERSION=2.14.90
+W32API_VERSION=3.14
+GNOMEUI_VERSION=2.2.0
+GCONF_VERSION=1.2.1
+STARTUP_NOTIFICATION_VERSION=0.8
+DBUS_VERSION=0.60
+SQLITE_VERSION=3.36.0
+
+dnl Set various checks
+dnl ========================================================
+MISSING_X=
+
+dnl Initialize the Pthread test variables early so they can be
+dnl overridden by each platform.
+dnl ========================================================
+MOZ_USE_PTHREADS=
+_PTHREAD_LDFLAGS=""
+
+dnl Do not allow objdir == srcdir builds.
+dnl ==============================================================
+_topsrcdir=`cd \`dirname $0\`; pwd -W 2>/dev/null || pwd -P`
+_objdir=`pwd -P`
+
+MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd -P`
+DIST="$MOZ_BUILD_ROOT/dist"
+
+MOZ_DEFAULT_COMPILER
+
+case "$target" in
+*-linux*)
+ AC_PATH_PROG(OBJCOPY,objcopy)
+ ;;
+esac
+
+AC_SUBST(OBJCOPY)
+
+dnl ========================================================
+dnl Checks for compilers.
+dnl ========================================================
+
+dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
+AR_FLAGS='crs $@'
+
+if test "$COMPILE_ENVIRONMENT"; then
+
+if test "$target" != "$host"; then
+ MOZ_CROSS_COMPILER
+else
+ AC_PROG_CC
+ case "$target" in
+ *-mingw*)
+ # Work around the conftest.exe access problem on Windows
+ sleep 2
+ esac
+ AC_PROG_CXX
+ AC_PROG_RANLIB
+ MOZ_PATH_PROGS(AS, $AS as, $CC)
+ AC_CHECK_PROGS(AR, ar, :)
+ AC_CHECK_PROGS(LD, ld, :)
+ AC_CHECK_PROGS(STRIP, strip, :)
+ AC_CHECK_PROGS(WINDRES, windres, :)
+ AC_CHECK_PROGS(OTOOL, otool, :)
+ if test -z "$HOST_RANLIB"; then
+ HOST_RANLIB="$RANLIB"
+ fi
+ if test -z "$HOST_AR"; then
+ HOST_AR="$AR"
+ fi
+ if test -z "$HOST_AR_FLAGS"; then
+ HOST_AR_FLAGS="$AR_FLAGS"
+ fi
+fi
+
+if test -n "$MOZ_WINCONSOLE"; then
+ AC_DEFINE(MOZ_WINCONSOLE)
+fi
+
+MOZ_TOOL_VARIABLES
+
+dnl ========================================================
+dnl Special win32 checks
+dnl ========================================================
+
+WINVER=601
+
+case "$target" in
+*-mingw*)
+ if test "$GCC" != "yes"; then
+ # Check to see if we are really running in a msvc environemnt
+ _WIN32_MSVC=1
+ AC_CHECK_PROGS(MIDL, midl)
+
+ # Make sure compilers are valid
+ CFLAGS="$CFLAGS -TC -nologo"
+ CXXFLAGS="$CXXFLAGS -TP -nologo"
+ AC_LANG_SAVE
+ AC_LANG_C
+ AC_TRY_COMPILE([#include <stdio.h>],
+ [ printf("Hello World\n"); ],,
+ AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
+
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <new.h>],
+ [ unsigned *test = new unsigned(42); ],,
+ AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
+ AC_LANG_RESTORE
+
+ changequote(,)
+ _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
+ changequote([,])
+
+ _MSC_VER=`echo ${CC_VERSION} | cut -c 1-2,4-5`
+
+ AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
+ AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
+ AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
+
+ case "$CC_VERSION" in
+ 19*)
+ _CC_SUITE=14
+ MSVS_VERSION=2015
+ MSVC_C_RUNTIME_DLL=vcruntime140.dll
+ MSVC_CXX_RUNTIME_DLL=msvcp140.dll
+
+ MOZ_CHECK_HEADER(dia2.h, MSVC_HAS_DIA_SDK=1)
+ if test -n "$MSVC_HAS_DIA_SDK"; then
+ AC_DEFINE(MSVC_HAS_DIA_SDK)
+ fi
+
+ # C5026: move constructor was implicitly defined as deleted
+ CXXFLAGS="$CXXFLAGS -wd5026"
+
+ # C5027: move assignment operator was implicitly defined as deleted
+ CXXFLAGS="$CXXFLAGS -wd5027"
+
+ # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
+ CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
+
+ # C4752: We explicitly use AVX instructions in only some libs, not global
+ # This is a pointless "helpful warning" to use /arch:AVX which we don't want.
+ CFLAGS="$CFLAGS -wd4752"
+ CXXFLAGS="$CXXFLAGS -wd4752"
+
+ # https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h
+ # for dbghelp.h, imagehlp.h, and shobj.h
+ # C4091: 'typedef ': ignored on left of '' when no variable is declared
+ CFLAGS="$CFLAGS -wd4091"
+ CXXFLAGS="$CXXFLAGS -wd4091"
+
+ # This is intended as a temporary hack to support building with VS2015.
+ # 'noexcept' used with no exception handling mode specified;
+ # termination on exception is not guaranteed. Specify /EHsc
+ CXXFLAGS="$CXXFLAGS -wd4577"
+
+ if test -n "$WIN_UCRT_REDIST_DIR"; then
+ if test ! -d "$WIN_UCRT_REDIST_DIR"; then
+ AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
+ fi
+ WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd -W`
+ fi
+ ;;
+ esac
+ AC_SUBST(MSVS_VERSION)
+ AC_SUBST(MSVC_HAS_DIA_SDK)
+ AC_SUBST(MSVC_C_RUNTIME_DLL)
+ AC_SUBST(MSVC_CXX_RUNTIME_DLL)
+
+ AC_DEFINE(HAVE_SEH_EXCEPTIONS)
+
+ if test -n "$WIN32_REDIST_DIR"; then
+ if test ! -d "$WIN32_REDIST_DIR"; then
+ AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
+ fi
+ WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
+ fi
+
+ # Check linker version
+ _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
+ _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
+ if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
+ AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
+ fi
+
+ INCREMENTAL_LINKER=1
+
+ # Set midl environment
+ case "$target" in
+ i*86-*)
+ MIDL_FLAGS="${MIDL_FLAGS} -env win32"
+ ;;
+ x86_64-*)
+ MIDL_FLAGS="${MIDL_FLAGS} -env x64"
+ ;;
+ esac
+
+ unset _MSVC_VER_FILTER
+
+ AC_CACHE_CHECK(for overridable _RAISE,
+ ac_cv_have__RAISE,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
+ AC_TRY_COMPILE([#include <xstddef>
+ #undef _RAISE
+ #define _RAISE(x) externallyDefinedFunction((x).what())
+ #include <vector>
+ ],
+ [std::vector<int> v; return v.at(1);],
+ ac_cv_have__RAISE="no",
+ ac_cv_have__RAISE="yes")
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+ if test "$ac_cv_have__RAISE" = "yes"; then
+ WRAP_STL_INCLUDES=1
+ MOZ_MSVC_STL_WRAP_RAISE=1
+ AC_DEFINE(MOZ_MSVC_STL_WRAP_RAISE)
+ else
+ AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
+ fi
+
+ if test "$WRAP_STL_INCLUDES" = "1"; then
+ STL_FLAGS="-I${DIST}/stl_wrappers"
+ fi
+ CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
+ CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
+ else
+ # Check w32api version
+ _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
+ _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
+ AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
+ AC_TRY_COMPILE([#include <w32api.h>],
+ #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
+ (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
+ __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
+ #error "test failed."
+ #endif
+ , [ res=yes ], [ res=no ])
+ AC_MSG_RESULT([$res])
+ if test "$res" != "yes"; then
+ AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
+ fi
+ # Check windres version
+ AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
+ _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
+ AC_MSG_RESULT([$_WINDRES_VERSION])
+ _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
+ _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
+ _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
+ WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
+ WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
+ WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
+ if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
+ "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
+ "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
+ "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
+ "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
+ "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
+ then
+ AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
+ fi
+
+ AC_CHECK_PROGS(MIDL, $target-widl widl)
+ if test -n "$MIDL"; then
+ case "$target" in
+ i*86-*)
+ MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
+ ;;
+ x86_64-*)
+ MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
+ ;;
+ esac
+ fi
+
+ # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
+ # causing problems with local implementations with the same name.
+ AC_DEFINE(STRSAFE_NO_DEPRECATE)
+ fi # !GNU_CC
+
+ AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
+ AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
+ # Require OS features provided by IE 6.0 SP2 (XP SP2)
+ AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
+
+ ;;
+esac
+
+if test -n "$_WIN32_MSVC"; then
+ SKIP_PATH_CHECKS=1
+ SKIP_COMPILER_CHECKS=1
+ SKIP_LIBRARY_CHECKS=1
+
+ # Since we're skipping compiler and library checks, hard-code
+ # some facts here.
+ AC_DEFINE(HAVE_IO_H)
+ AC_DEFINE(HAVE_ISATTY)
+fi
+
+fi # COMPILE_ENVIRONMENT
+
+AC_SUBST(MIDL_FLAGS)
+AC_SUBST(_MSC_VER)
+
+AC_SUBST(GNU_AS)
+AC_SUBST(GNU_LD)
+AC_SUBST(GNU_CC)
+AC_SUBST(GNU_CXX)
+
+AC_SUBST(STL_FLAGS)
+AC_SUBST(WRAP_STL_INCLUDES)
+AC_SUBST(MOZ_MSVC_STL_WRAP_RAISE)
+
+dnl ========================================================
+dnl Checks for programs.
+dnl ========================================================
+if test "$COMPILE_ENVIRONMENT"; then
+
+dnl ========================================================
+dnl = Mac OS X toolchain support
+dnl ========================================================
+
+dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
+dnl that a universal binary is being produced.
+AC_SUBST(UNIVERSAL_BINARY)
+
+MOZ_ARG_WITH_STRING(unify-dist,
+[ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
+ UNIFY_DIST=$withval)
+if test -n "$UNIVERSAL_BINARY"; then
+ if test -z "$UNIFY_DIST"; then
+ AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
+ fi
+ case "$UNIFY_DIST" in
+ /*)
+ ;;
+ *)
+ UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
+ ;;
+ esac
+fi
+AC_SUBST(UNIFY_DIST)
+
+dnl ========================================================
+dnl = Mac OS X SDK support
+dnl ========================================================
+MACOS_SDK_DIR=
+MOZ_ARG_WITH_STRING(macos-sdk,
+[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
+ MACOS_SDK_DIR=$withval)
+
+MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED=
+MOZ_ARG_WITH_STRING(macos-private-frameworks,
+[ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)],
+ MACOS_PRIVATE_FRAMEWORKS_DIR=$withval,
+ MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks
+ MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1)
+
+if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then
+ if test -z "$CROSS_COMPILE"; then
+ AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.])
+ fi
+ if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then
+ AC_MSG_ERROR([PrivateFrameworks directory not found.])
+ fi
+fi
+
+dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
+AC_SUBST(MACOS_SDK_DIR)
+AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR)
+
+if test "$MACOS_SDK_DIR"; then
+ dnl Sync this section with the ones in NSPR and NSS.
+ dnl Changes to the cross environment here need to be accounted for in
+ dnl the libIDL checks (below) and xpidl build.
+
+ if test ! -d "$MACOS_SDK_DIR"; then
+ AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
+specify a valid SDK. SDKs are installed when the optional cross-development
+tools are selected during the Xcode/Developer Tools installation.])
+ fi
+
+ CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
+ CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
+
+ dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
+ CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
+ CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
+
+ AC_LANG_SAVE
+ AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <new>],[],
+ result=yes,
+ result=no)
+ AC_LANG_RESTORE
+ AC_MSG_RESULT($result)
+
+ if test "$result" = "no" ; then
+ AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
+ fi
+fi
+
+AC_PATH_XTRA
+
+XCFLAGS="$X_CFLAGS"
+
+fi # COMPILE_ENVIRONMENT
+
+dnl ========================================================
+dnl set the defaults first
+dnl ========================================================
+AS_BIN=$AS
+AR_EXTRACT='$(AR) x'
+AS='$(CC)'
+AS_DASH_C_FLAG='-c'
+DLL_PREFIX=lib
+LIB_PREFIX=lib
+DLL_SUFFIX=.so
+OBJ_SUFFIX=o
+LIB_SUFFIX=a
+IMPORT_LIB_SUFFIX=
+DIRENT_INO=d_ino
+MOZ_USER_DIR=".mozilla"
+
+MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
+
+MOZ_FS_LAYOUT=unix
+
+dnl Configure platform-specific CPU architecture compiler options.
+dnl ==============================================================
+if test "$COMPILE_ENVIRONMENT"; then
+ MOZ_ARCH_OPTS
+fi # COMPILE_ENVIRONMENT
+
+dnl ========================================================
+dnl Suppress Clang Argument Warnings
+dnl ========================================================
+if test -n "${CLANG_CC}${CLANG_CL}"; then
+ _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
+ CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
+fi
+if test -n "${CLANG_CXX}${CLANG_CL}"; then
+ _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
+fi
+
+if test -n "$COMPILE_ENVIRONMENT"; then
+ MOZ_CONFIG_SANITIZE
+fi
+
+dnl ========================================================
+dnl GNU specific defaults
+dnl ========================================================
+if test "$GNU_CC"; then
+ MMX_FLAGS="-mmmx"
+ SSE_FLAGS="-msse"
+ SSE2_FLAGS="-msse2"
+ SSSE3_FLAGS="-mssse3"
+ # FIXME: Let us build with strict aliasing. bug 414641.
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@'
+ WARNINGS_AS_ERRORS='-Werror'
+ DSO_CFLAGS=''
+ DSO_PIC_CFLAGS='-fPIC'
+ ASFLAGS="$ASFLAGS -fPIC"
+ AC_MSG_CHECKING([for --noexecstack option to as])
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -Wa,--noexecstack"
+ AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
+ [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
+ AC_MSG_RESULT([no]))
+ CFLAGS=$_SAVE_CFLAGS
+ AC_MSG_CHECKING([for -z noexecstack option to ld])
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
+ AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
+ AC_MSG_RESULT([no])
+ LDFLAGS=$_SAVE_LDFLAGS)
+
+ AC_MSG_CHECKING([for -z text option to ld])
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-z,text"
+ AC_TRY_LINK(,,AC_MSG_RESULT([yes])
+ [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"],
+ AC_MSG_RESULT([no])
+ LDFLAGS=$_SAVE_LDFLAGS)
+
+ AC_MSG_CHECKING([for --build-id option to ld])
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,--build-id"
+ AC_TRY_LINK(,,AC_MSG_RESULT([yes])
+ [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
+ AC_MSG_RESULT([no])
+ LDFLAGS=$_SAVE_LDFLAGS)
+
+ AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
+ HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
+ AC_TRY_LINK(,,AC_MSG_RESULT([yes])
+ [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
+ AC_MSG_RESULT([no]))
+ LDFLAGS=$_SAVE_LDFLAGS
+
+ # Check for -mssse3 on $CC
+ AC_MSG_CHECKING([if toolchain supports -mssse3 option])
+ HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -mssse3"
+ AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
+ [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
+ AC_MSG_RESULT([no]))
+ CFLAGS=$_SAVE_CFLAGS
+
+ # Check for -msse4.1 on $CC
+ AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
+ HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -msse4.1"
+ AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
+ [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
+ AC_MSG_RESULT([no]))
+ CFLAGS=$_SAVE_CFLAGS
+
+ case "${CPU_ARCH}" in
+ x86 | x86_64)
+ AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
+ AC_TRY_COMPILE([],
+ [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
+ result="yes", result="no")
+ AC_MSG_RESULT("$result")
+ if test "$result" = "yes"; then
+ HAVE_X86_AVX2=1
+ fi
+ ;;
+
+ ppc*)
+ AC_MSG_CHECKING([whether we can enable AltiVec support])
+ HAVE_ALTIVEC=
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -maltivec"
+ AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
+ [HAVE_ALTIVEC=1],
+ AC_MSG_RESULT([no]))
+ CFLAGS=$_SAVE_CFLAGS
+ ;;
+ esac
+
+ DSO_LDOPTS='-shared'
+ if test "$GCC_USE_GNU_LD"; then
+ # Some tools like ASan use a runtime library that is only
+ # linked against executables, so we must allow undefined
+ # symbols for shared objects in some cases.
+ if test -z "$MOZ_NO_WLZDEFS"; then
+ # Don't allow undefined symbols in libraries
+ DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
+
+ # BSDs need `environ' exposed for posix_spawn (bug 753046)
+ case "$OS_TARGET" in
+ DragonFly|FreeBSD|NetBSD|OpenBSD)
+ if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
+ DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
+ else
+ DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
+ fi
+ ;;
+ esac
+ fi
+ fi
+
+ _DEFINES_CFLAGS='-include $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT'
+ _USE_CPP_INCLUDE_FLAG=1
+
+ ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
+
+else
+ MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@'
+ MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@'
+
+ DSO_LDOPTS='-shared'
+ if test "$GNU_LD"; then
+ # Don't allow undefined symbols in libraries
+ DSO_LDOPTS="$DSO_LDOPTS -z defs"
+ fi
+
+ DSO_CFLAGS=''
+ DSO_PIC_CFLAGS='-KPIC'
+ _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
+fi
+
+if test "$GNU_CXX"; then
+ # FIXME: Let us build with strict aliasing. bug 414641.
+ CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
+
+ _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/mozilla-config.h'
+ _USE_CPP_INCLUDE_FLAG=1
+
+else
+ _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
+fi
+
+dnl ========================================================
+dnl = Use Valgrind
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(valgrind,
+[ --enable-valgrind Enable Valgrind integration hooks (default=no)],
+ MOZ_VALGRIND=1,
+ MOZ_VALGRIND= )
+if test -n "$MOZ_VALGRIND"; then
+ MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
+ AC_MSG_ERROR(
+ [--enable-valgrind specified but Valgrind is not installed]))
+ AC_DEFINE(MOZ_VALGRIND)
+fi
+AC_SUBST(MOZ_VALGRIND)
+
+# For profiling builds keep the symbol information
+if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
+ case "$OS_TARGET" in
+ Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
+ STRIP_FLAGS="--strip-debug"
+ ;;
+ esac
+fi
+
+dnl ==============================================================
+dnl Get mozilla version from central milestone file
+dnl ==============================================================
+MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir`
+MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion`
+MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion`
+if test -z "$MOZILLA_VERSION"; then
+ AC_MSG_ERROR([failed to read version info from milestone file])
+fi
+
+AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
+AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
+AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
+AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION_U,$MOZILLA_UAVERSION)
+AC_SUBST(MOZILLA_SYMBOLVERSION)
+AC_SUBST(MOZILLA_UAVERSION)
+AC_SUBST(MOZILLA_UAVERSION_U)
+
+MOZ_DOING_LTO(lto_is_enabled)
+
+dnl ========================================================
+dnl System overrides of the defaults for host
+dnl ========================================================
+case "$host" in
+*mingw*)
+ if test -n "$_WIN32_MSVC"; then
+ HOST_AR=lib
+ HOST_AR_FLAGS='-NOLOGO -OUT:$@'
+ HOST_CFLAGS="$HOST_CFLAGS -TC -nologo"
+ HOST_RANLIB='echo ranlib'
+ else
+ HOST_CFLAGS="$HOST_CFLAGS -mwindows"
+ fi
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
+ HOST_BIN_SUFFIX=.exe
+
+ case "${host_cpu}" in
+ i*86)
+ if test -n "$_WIN32_MSVC"; then
+ HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
+ fi
+ ;;
+ x86_64)
+ if test -n "$_WIN32_MSVC"; then
+ HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
+ fi
+ HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
+ ;;
+ esac
+ ;;
+
+*-linux*|*-kfreebsd*-gnu|*-gnu*)
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
+ ;;
+
+*)
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
+ ;;
+esac
+
+dnl ========================================================
+dnl System overrides of the defaults for target
+dnl ========================================================
+
+case "$target" in
+*-*linux*)
+ if test "$GNU_CC" -o "$GNU_CXX"; then
+ MOZ_PGO_OPTIMIZE_FLAGS="-O3"
+ MOZ_OPTIMIZE_FLAGS="-O2"
+ if test -z "$CLANG_CC"; then
+ MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
+ fi
+ fi
+
+ case "${target_cpu}" in
+ alpha*)
+ CFLAGS="$CFLAGS -mieee"
+ CXXFLAGS="$CXXFLAGS -mieee"
+ ;;
+ esac
+ ;;
+*-mingw*)
+ DSO_CFLAGS=
+ DSO_PIC_CFLAGS=
+ DLL_SUFFIX=.dll
+ RC=rc.exe
+ # certain versions of cygwin's makedepend barf on the
+ # #include <string> vs -I./dist/include/string issue so don't use it
+ if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
+ CC="$CC -mwindows"
+ CXX="$CXX -mwindows"
+ CPP="$CPP -mwindows"
+ CFLAGS="$CFLAGS -mms-bitfields"
+ CXXFLAGS="$CXXFLAGS -mms-bitfields"
+ DSO_LDOPTS='-shared'
+ MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+ RC='$(WINDRES)'
+ # Use static libgcc and libstdc++
+ LDFLAGS="$LDFLAGS -static"
+ NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc"
+ # Use temp file for windres (bug 213281)
+ RCFLAGS='-O coff --use-temp-file'
+ # mingw doesn't require kernel32, user32, and advapi32 explicitly
+ LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
+ MOZ_FIX_LINK_PATHS=
+ DLL_PREFIX=
+ IMPORT_LIB_SUFFIX=a
+
+ WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
+ WIN32_GUI_EXE_LDFLAGS=-mwindows
+
+ # GCC/binutils can't link to a function if we try to include dllexport function
+ # in the same library as dllimport caller. To work around it, we build NSPR
+ # and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that
+ # function thunks need to be generated for cross-DLL calls.
+ MOZ_FOLD_LIBS_FLAGS=-mnop-fun-dllimport
+ else
+ TARGET_COMPILER_ABI=msvc
+ HOST_LD='$(LD)'
+ if test "$AS_BIN"; then
+ AS="$(basename "$AS_BIN")"
+ fi
+ AR='lib'
+ AR_FLAGS='-NOLOGO -OUT:$@'
+ AR_EXTRACT=
+ RANLIB='echo not_ranlib'
+ STRIP='echo not_strip'
+ PKG_SKIP_STRIP=1
+ OBJ_SUFFIX=obj
+ LIB_SUFFIX=lib
+ DLL_PREFIX=
+ LIB_PREFIX=
+ IMPORT_LIB_SUFFIX=lib
+ MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+ MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+ WIN32_SUBSYSTEM_VERSION=6.01
+ WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
+ WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
+ DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
+ _USE_CPP_INCLUDE_FLAG=1
+ _DEFINES_CFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT'
+ _DEFINES_CXXFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT'
+ CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
+ CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
+ if test -z "$CLANG_CL"; then
+ CFLAGS="$CFLAGS -utf-8"
+ CXXFLAGS="$CXXFLAGS -utf-8"
+ fi
+ if test "$CPU_ARCH" = "x86"; then
+ changequote(,)
+ dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
+ dnl more recent, so no need to set it explicitly in the default
+ dnl case.
+ changequote([,])
+ SSE_FLAGS="-arch:SSE"
+ SSE2_FLAGS="-arch:SSE2"
+ dnl MSVC allows the use of intrinsics without any flags
+ dnl and doesn't have a separate arch for SSSE3
+ SSSE3_FLAGS="-arch:SSE2"
+ fi
+ dnl clang-cl requires appropriate flags to enable SSSE3 support
+ dnl on all architectures.
+ if test -n "$CLANG_CL"; then
+ SSSE3_FLAGS="-mssse3"
+ fi
+ dnl VS2013+ requires -FS when parallel building by make -jN.
+ dnl If nothing, compiler sometimes causes C1041 error.
+ CFLAGS="$CFLAGS -FS"
+ CXXFLAGS="$CXXFLAGS -FS"
+ dnl VS2013+ supports -Gw for better linker optimizations.
+ dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
+ dnl Disabled on ASan because it causes false-positive ODR violations.
+ if test -z "$MOZ_ASAN"; then
+ CFLAGS="$CFLAGS -Gw"
+ CXXFLAGS="$CXXFLAGS -Gw"
+ fi
+ # khuey says we can safely ignore MSVC warning C4251
+ # MSVC warning C4244 (implicit type conversion may lose data) warns
+ # and requires workarounds for perfectly valid code. Also, GCC/clang
+ # don't warn about it by default. So for consistency/sanity, we turn
+ # it off on MSVC, too.
+ # MSVC warning C4267 warns for narrowing type conversions from size_t
+ # to 32-bit integer types on 64-bit platforms. Since this is virtually
+ # the same thing as C4244, we disable C4267, too.
+ # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
+ # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
+ # MSVC warning C4800 warns when a value is implicitly cast to bool,
+ # because this also forces narrowing to a single byte, which can be a
+ # perf hit. But this matters so little in practice (and often we want
+ # that behavior) that it's better to turn it off.
+ # MSVC warning wd4595 warns non-member operator new or delete functions
+ # may not be declared inline, as of VS2015 Update 2.
+ CFLAGS="$CFLAGS -wd4244 -wd4267"
+ CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4267 -wd4345 -wd4351 -wd4800 -wd4595"
+ if test -n "$CLANG_CL"; then
+ # XXX We should combine some of these with our generic GCC-style
+ # warning checks.
+ #
+ # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
+ CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
+ # We use offsetof on non-POD objects all the time.
+ # We also suppress this warning on other platforms.
+ CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
+ # MFBT thinks clang-cl supports constexpr, which it does, but
+ # not everything in Windows C++ headers supports constexpr
+ # as we might expect until MSVC 2015, so turn off this warning
+ # for now.
+ CXXFLAGS="$CXXFLAGS -Wno-invalid-constexpr"
+ # This warns for reasonable things like:
+ # enum { X = 0xffffffffU };
+ # which is annoying for IDL headers.
+ CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
+ # This warns for cases that would be reached by the Microsoft
+ # #include rules, but also currently warns on cases that would
+ # *also* be reached by standard C++ include rules. That
+ # behavior doesn't seem useful, so we turn it off.
+ CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
+ # We normally error out on unknown pragmas, but since clang-cl
+ # claims to be MSVC, it would be difficult to add
+ # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
+ # use such pragmas, so just ignore them.
+ CFLAGS="$CFLAGS -Wno-unknown-pragmas"
+ CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
+ # We get errors about various #pragma intrinsic directives from
+ # clang-cl, and we don't need to hear about those.
+ CFLAGS="$CFLAGS -Wno-ignored-pragmas"
+ CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
+ # clang-cl's Intrin.h marks things like _ReadWriteBarrier
+ # as __attribute((__deprecated__)). This is nice to know,
+ # but since we don't get the equivalent warning from MSVC,
+ # let's just ignore it.
+ CFLAGS="$CFLAGS -Wno-deprecated-declarations"
+ CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
+ # We use a function like:
+ # __declspec(noreturn) __inline void f() {}
+ # which -Winvalid-noreturn complains about. Again, MSVC seems
+ # OK with it, so let's silence the warning.
+ CFLAGS="$CFLAGS -Wno-invalid-noreturn"
+ CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
+ # Missing |override| on virtual function declarations isn't
+ # something that MSVC currently warns about.
+ CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
+ # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
+ # declaration on |operator delete(void*)|. However, clang-cl
+ # must internally declare |operator delete(void*)| differently,
+ # which causes this warning for virtually every file in the
+ # tree. clang-cl doesn't support -fno-exceptions or equivalent,
+ # so there doesn't seem to be any way to convince clang-cl to
+ # declare |delete| differently. Therefore, suppress this
+ # warning.
+ CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
+ # At least one MSVC header and several headers in-tree have
+ # unused typedefs, so turn this on.
+ CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
+ # Several JS engine header files use __declspec(dllimport) on
+ # classes, and clang-cl helpfully warns about its non-support
+ # for such cases. We're not particularly worried about that,
+ # so ignore that warning.
+ CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
+ fi
+ # make 'foo == bar;' error out
+ CFLAGS="$CFLAGS -we4553"
+ CXXFLAGS="$CXXFLAGS -we4553"
+ LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
+ MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
+ WARNINGS_AS_ERRORS='-WX'
+ MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
+ MOZ_FIX_LINK_PATHS=
+ AC_MSG_CHECKING(for optimal linker configuration)
+ num_cores=$($PYTHON -c 'import multiprocessing; print(multiprocessing.cpu_count())')
+ icf_iters=$($PYTHON -c 'import multiprocessing; print(min(16,multiprocessing.cpu_count()))')
+ cgthreads=$($PYTHON -c 'import multiprocessing; print(min(8,multiprocessing.cpu_count()))')
+ AC_MSG_RESULT("CG:${cgthreads}/ICF:${icf_iters}/${num_cores}c")
+ LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT -DYNAMICBASE -OPT:REF -OPT:ICF=${icf_iters} -CGTHREADS:${cgthreads}"
+ if test -z "$DEVELOPER_OPTIONS"; then
+ LDFLAGS="$LDFLAGS -RELEASE"
+ fi
+ dnl For profile-guided optimization
+ PROFILE_GEN_CFLAGS="-GL"
+ PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
+ dnl XXX: PGO builds can fail with warnings treated as errors,
+ dnl specifically "no profile data available" appears to be
+ dnl treated as an error sometimes. This might be a consequence
+ dnl of using WARNINGS_AS_ERRORS in some modules, combined
+ dnl with the linker doing most of the work in the whole-program
+ dnl optimization/PGO case. I think it's probably a compiler bug,
+ dnl but we work around it here.
+ PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
+ dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
+ dnl Probably also a compiler bug, but what can you do?
+ PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
+ RCFLAGS="-nologo"
+ dnl Minimum required VS version supports SSSE3, SSE4.1 and AVX2.
+ HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
+ HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
+ HAVE_X86_AVX2=1
+ fi
+ AC_DEFINE(WIN32_LEAN_AND_MEAN)
+ dnl See http://support.microsoft.com/kb/143208 to use STL
+ AC_DEFINE(NOMINMAX)
+ BIN_SUFFIX='.exe'
+ MOZ_USER_DIR="Mozilla"
+
+ case "$host_os" in
+ cygwin*|msvc*|mks*)
+ AC_MSG_ERROR([Using a Cygwin build environment is unsupported. Configure cannot check for presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
+ ;;
+ esac
+
+ case "$target" in
+ i*86-*)
+ if test -n "$GNU_CC"; then
+ CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
+ CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
+ LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
+ else
+ DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
+ LDFLAGS="$LDFLAGS -SAFESEH"
+ fi
+
+ AC_DEFINE(_X86_)
+ ;;
+ x86_64-*)
+ if test -n "$_WIN32_MSVC"; then
+ DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
+ fi
+ AC_DEFINE(_AMD64_)
+ ;;
+ *)
+ AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
+ ;;
+ esac
+ ;;
+
+*-netbsd*)
+ DSO_CFLAGS=''
+ CFLAGS="$CFLAGS -Dunix"
+ CXXFLAGS="$CXXFLAGS -Dunix"
+ if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
+ DLL_SUFFIX=".so"
+ DSO_PIC_CFLAGS='-fPIC -DPIC'
+ DSO_LDOPTS='-shared'
+ BIN_FLAGS='-Wl,--export-dynamic'
+ else
+ DSO_PIC_CFLAGS='-fPIC -DPIC'
+ DLL_SUFFIX=".so.1.0"
+ DSO_LDOPTS='-shared'
+ fi
+ # This will fail on a.out systems prior to 1.5.1_ALPHA.
+ if test "$LIBRUNPATH"; then
+ DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
+ fi
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@'
+ ;;
+
+*-openbsd*)
+ if test "$SO_VERSION"; then
+ DLL_SUFFIX=".so.$SO_VERSION"
+ else
+ DLL_SUFFIX=".so.1.0"
+ fi
+ if test -z "$X11BASE"; then
+ X11BASE=/usr/X11R6
+ fi
+ MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
+ DSO_CFLAGS=''
+ DSO_PIC_CFLAGS='-fPIC'
+ DSO_LDOPTS='-shared -fPIC'
+ if test "$LIBRUNPATH"; then
+ DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
+ fi
+ ;;
+
+*-solaris*)
+dnl Set NSDISTMODE to copy mode on SunOS automatically. The dynamic linker
+dnl uses the real path of a symlink after resolving it, which breaks the
+dnl default mode that relies on relative symlinks being handled a certain way.
+
+ if test -z "$NSDISTMODE"; then
+ NSDISTMODE=copy
+ fi
+
+ if test "$CPU_ARCH" = "x86"; then
+ MOZ_FIX_LINK_PATHS="-L${DIST}/bin -R'\$\$ORIGIN':/usr/gcc/7/lib"
+ elif test "$CPU_ARCH" = "x86_64"; then
+ MOZ_FIX_LINK_PATHS="-L${DIST}/bin -R'\$\$ORIGIN':/usr/gcc/7/lib/amd64"
+ fi
+ ;;
+
+esac
+
+AC_SUBST_LIST(MMX_FLAGS)
+AC_SUBST_LIST(SSE_FLAGS)
+AC_SUBST_LIST(SSE2_FLAGS)
+AC_SUBST_LIST(SSSE3_FLAGS)
+
+dnl Only one oddball right now (QNX), but this gives us flexibility
+dnl if any other platforms need to override this in the future.
+AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
+
+dnl ========================================================
+dnl = Flags to strip unused symbols from .so components and
+dnl = to export jemalloc symbols when linking a program
+dnl ========================================================
+case "$target" in
+ *-linux*|*-kfreebsd*-gnu|*-gnu*)
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
+ ;;
+ *-mingw*)
+ if test -n "$GNU_CC"; then
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
+ fi
+ ;;
+esac
+
+if test -z "$COMPILE_ENVIRONMENT"; then
+ SKIP_COMPILER_CHECKS=1
+ SKIP_LIBRARY_CHECKS=1
+ PKG_SKIP_STRIP=1
+ MOZ_DEBUGGING_OPTS
+else
+ MOZ_COMPILER_OPTS
+fi # COMPILE_ENVIRONMENT
+
+if test -z "$SKIP_COMPILER_CHECKS"; then
+dnl Checks for typedefs, structures, and compiler characteristics.
+dnl ========================================================
+AC_C_CONST
+AC_TYPE_MODE_T
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_LANG_CPLUSPLUS
+AC_LANG_C
+
+AC_LANG_CPLUSPLUS
+
+MOZ_CXX11
+
+AC_LANG_C
+
+case "${OS_TARGET}" in
+*)
+ STL_FLAGS="-I${DIST}/stl_wrappers"
+ WRAP_STL_INCLUDES=1
+ ;;
+esac
+
+dnl Checks for header files.
+dnl ========================================================
+AC_HEADER_DIRENT
+case "$target_os" in
+bitrig*|dragonfly*|freebsd*|openbsd*)
+# for stuff like -lXshm
+ CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
+ ;;
+esac
+
+dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
+AC_CACHE_CHECK(for sockaddr_in.sin_len,
+ ac_cv_sockaddr_in_sin_len,
+ [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ #include <netinet/in.h>
+ struct sockaddr_in x;
+ void *foo = (void*) &x.sin_len;],
+ [],
+ [ac_cv_sockaddr_in_sin_len=true],
+ [ac_cv_sockaddr_in_sin_len=false])])
+if test "$ac_cv_sockaddr_in_sin_len" = true ; then
+ AC_DEFINE(HAVE_SIN_LEN)
+dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
+ AC_DEFINE(HAVE_SCONN_LEN)
+fi
+
+AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
+ ac_cv_sockaddr_in6_sin6_len,
+ [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ #include <netinet/in.h>
+ struct sockaddr_in6 x;
+ void *foo = (void*) &x.sin6_len;],
+ [],
+ [ac_cv_sockaddr_in6_sin6_len=true],
+ [ac_cv_sockaddr_in6_sin6_len=false])])
+if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
+ AC_DEFINE(HAVE_SIN6_LEN)
+fi
+
+AC_CACHE_CHECK(for sockaddr.sa_len,
+ ac_cv_sockaddr_sa_len,
+ [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ #include <sys/socket.h>
+ struct sockaddr x;
+ void *foo = (void*) &x.sa_len;],
+ [],
+ [ac_cv_sockaddr_sa_len=true],
+ [ac_cv_sockaddr_sa_len=false])])
+if test "$ac_cv_sockaddr_sa_len" = true ; then
+ AC_DEFINE(HAVE_SA_LEN)
+fi
+
+MOZ_ARG_ENABLE_BOOL(dtrace,
+ [ --enable-dtrace build with dtrace support if available (default=no)],
+ [enable_dtrace="yes"],)
+if test "x$enable_dtrace" = "xyes"; then
+ MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
+ if test -n "$HAVE_DTRACE"; then
+ AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
+ else
+ AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
+ fi
+fi
+AC_SUBST(HAVE_DTRACE)
+
+dnl Checks for libraries.
+dnl ========================================================
+AC_CHECK_LIB(c_r, gethostbyname_r)
+
+case $target in
+*)
+ AC_SEARCH_LIBS(dlopen, dl,
+ MOZ_CHECK_HEADER(dlfcn.h,
+ AC_DEFINE(HAVE_DLOPEN)))
+ ;;
+esac
+
+_SAVE_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -D_GNU_SOURCE"
+AC_CHECK_FUNCS(dladdr memmem)
+CFLAGS="$_SAVE_CFLAGS"
+
+if test ! "$GNU_CXX"; then
+ AC_CHECK_LIB(C, demangle)
+fi
+
+AC_CHECK_LIB(socket, socket)
+
+XLDFLAGS="$X_LIBS"
+XLIBS="$X_EXTRA_LIBS"
+
+dnl ========================================================
+dnl Checks for X libraries.
+dnl Ordering is important.
+dnl Xt is dependent upon SM as of X11R6
+dnl ========================================================
+if test -n "$MOZ_X11"; then
+ AC_DEFINE_UNQUOTED(FUNCPROTO,15)
+ _SAVE_LDFLAGS="$LDFLAGS"
+ _SAVE_LIBS="$LIBS"
+ LDFLAGS="$XLDFLAGS $LDFLAGS"
+ AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
+ [MISSING_X="$MISSING_X -lX11"], $XLIBS)
+ AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
+ [MISSING_X="$MISSING_X -lXext"], $XLIBS)
+
+ AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
+ unset ac_cv_lib_Xt_XtFree
+ AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
+ AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
+ AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
+ [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
+ ])
+
+ dnl ========================================================
+ dnl = Check for xcb
+ dnl ========================================================
+ AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
+ [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
+ AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
+ [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
+ AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
+ [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
+
+ dnl ========================================================
+ dnl = Check for Xss
+ dnl ========================================================
+ MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
+ AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
+ [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
+ AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
+
+ LDFLAGS="$_SAVE_LDFLAGS"
+ LIBS="$_SAVE_LIBS"
+fi # $MOZ_X11
+
+AC_SUBST_LIST(XCFLAGS)
+AC_SUBST_LIST(XLDFLAGS)
+AC_SUBST_LIST(XLIBS)
+AC_SUBST_LIST(XEXT_LIBS)
+AC_SUBST_LIST(XT_LIBS)
+AC_SUBST_LIST(XSS_LIBS)
+
+dnl ========================================================
+dnl = pthread support
+dnl ========================================================
+
+AC_CHECK_LIB(pthreads, pthread_create,
+ MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
+ AC_CHECK_LIB(pthread, pthread_create,
+ MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
+ AC_CHECK_LIB(c_r, pthread_create,
+ MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
+ AC_CHECK_LIB(c, pthread_create,
+ MOZ_USE_PTHREADS=1
+ )
+ )
+ )
+)
+
+dnl ========================================================
+dnl Check the command line for --with-pthreads
+dnl ========================================================
+MOZ_ARG_WITH_BOOL(pthreads,
+[ --with-pthreads Force use of system pthread library with NSPR ],
+[ if test "$MOZ_USE_PTHREADS"x = x; then
+ AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
+fi],
+ MOZ_USE_PTHREADS=
+ _PTHREAD_LDFLAGS=
+)
+
+dnl ========================================================
+dnl Do the platform specific pthread hackery
+dnl ========================================================
+if test "$MOZ_USE_PTHREADS"x != x
+then
+ dnl
+ dnl See if -pthread is supported.
+ dnl
+ rm -f conftest*
+ ac_cv_have_dash_pthread=no
+ AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
+ echo 'int main() { return 0; }' | cat > conftest.c
+ ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
+ if test $? -eq 0; then
+ if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
+ ac_cv_have_dash_pthread=yes
+ case "$target_os" in
+ freebsd*)
+# Freebsd doesn't use -pthread for compiles, it uses them for linking
+ ;;
+ *)
+ CFLAGS="$CFLAGS -pthread"
+ CXXFLAGS="$CXXFLAGS -pthread"
+ ;;
+ esac
+ fi
+ fi
+ rm -f conftest*
+ AC_MSG_RESULT($ac_cv_have_dash_pthread)
+
+ dnl
+ dnl See if -pthreads is supported.
+ dnl
+ ac_cv_have_dash_pthreads=no
+ if test "$ac_cv_have_dash_pthread" = "no"; then
+ AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
+ echo 'int main() { return 0; }' | cat > conftest.c
+ ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
+ if test $? -eq 0; then
+ if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
+ ac_cv_have_dash_pthreads=yes
+ CFLAGS="$CFLAGS -pthreads"
+ CXXFLAGS="$CXXFLAGS -pthreads"
+ fi
+ fi
+ rm -f conftest*
+ AC_MSG_RESULT($ac_cv_have_dash_pthreads)
+ fi
+
+ case "$target" in
+ *-*-freebsd*)
+ AC_DEFINE(_REENTRANT)
+ AC_DEFINE(_THREAD_SAFE)
+ dnl -pthread links in -lpthread, so don't specify it explicitly.
+ if test "$ac_cv_have_dash_pthread" = "yes"; then
+ _PTHREAD_LDFLAGS="-pthread"
+ fi
+ ;;
+
+ *-*-openbsd*|*-*-bsdi*)
+ AC_DEFINE(_REENTRANT)
+ AC_DEFINE(_THREAD_SAFE)
+ dnl -pthread links in -lc_r, so don't specify it explicitly.
+ if test "$ac_cv_have_dash_pthread" = "yes"; then
+ _PTHREAD_LDFLAGS="-pthread"
+ fi
+ ;;
+
+ *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
+ AC_DEFINE(_REENTRANT)
+ ;;
+
+ esac
+ LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
+ AC_SUBST(MOZ_USE_PTHREADS)
+ MOZ_CHECK_HEADERS(pthread.h)
+fi
+
+
+dnl Checks for library functions.
+dnl ========================================================
+AC_PROG_GCC_TRADITIONAL
+AC_FUNC_MEMCMP
+AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall)
+
+dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
+AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
+ ac_cv_clock_monotonic,
+ [for libs in "" -lrt; do
+ _SAVE_LIBS="$LIBS"
+ LIBS="$LIBS $libs"
+ AC_TRY_LINK([#include <time.h>],
+ [ struct timespec ts;
+ clock_gettime(CLOCK_MONOTONIC, &ts); ],
+ ac_cv_clock_monotonic=$libs
+ LIBS="$_SAVE_LIBS"
+ break,
+ ac_cv_clock_monotonic=no)
+ LIBS="$_SAVE_LIBS"
+ done])
+if test "$ac_cv_clock_monotonic" != "no"; then
+ HAVE_CLOCK_MONOTONIC=1
+ REALTIME_LIBS=$ac_cv_clock_monotonic
+ AC_DEFINE(HAVE_CLOCK_MONOTONIC)
+ AC_SUBST(HAVE_CLOCK_MONOTONIC)
+ AC_SUBST_LIST(REALTIME_LIBS)
+fi
+
+AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
+ ac_cv_pthread_cond_timedwait_monotonic_np,
+ AC_TRY_LINK([#include <pthread.h>],
+ [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
+ ac_cv_pthread_cond_timewait_monotonic_np=yes,
+ ac_cv_pthread_cond_timewait_monotonic_np=no))
+if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
+ AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
+fi
+
+dnl check for wcrtomb/mbrtowc
+dnl =======================================================================
+if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+AC_CACHE_CHECK(for wcrtomb,
+ ac_cv_have_wcrtomb,
+ [AC_TRY_LINK([#include <wchar.h>],
+ [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
+ ac_cv_have_wcrtomb="yes",
+ ac_cv_have_wcrtomb="no")])
+if test "$ac_cv_have_wcrtomb" = "yes"; then
+ AC_DEFINE(HAVE_WCRTOMB)
+fi
+AC_CACHE_CHECK(for mbrtowc,
+ ac_cv_have_mbrtowc,
+ [AC_TRY_LINK([#include <wchar.h>],
+ [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
+ ac_cv_have_mbrtowc="yes",
+ ac_cv_have_mbrtowc="no")])
+if test "$ac_cv_have_mbrtowc" = "yes"; then
+ AC_DEFINE(HAVE_MBRTOWC)
+fi
+AC_LANG_RESTORE
+fi
+
+AC_CACHE_CHECK(
+ [for res_ninit()],
+ ac_cv_func_res_ninit,
+ [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
+ dnl no need for res_ninit() on NetBSD and OpenBSD
+ ac_cv_func_res_ninit=no
+ else
+ AC_TRY_LINK([
+ #ifdef linux
+ #define _BSD_SOURCE 1
+ #endif
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ ],
+ [int foo = res_ninit(&_res);],
+ [ac_cv_func_res_ninit=yes],
+ [ac_cv_func_res_ninit=no])
+ fi
+ ])
+
+if test "$ac_cv_func_res_ninit" = "yes"; then
+ AC_DEFINE(HAVE_RES_NINIT)
+dnl must add the link line we do something as foolish as this... dougt
+dnl else
+dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
+dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
+fi
+
+AC_LANG_CPLUSPLUS
+
+ICONV_LIBS=
+
+AC_CHECK_LIB(c, iconv, [ICONV_LIBS=],
+ AC_CHECK_LIB(iconv, iconv, [ICONV_LIBS="-liconv"],
+ AC_CHECK_LIB(iconv, libiconv, [ICONV_LIBS="-liconv"])))
+_SAVE_LIBS=$LIBS
+LIBS="$LIBS $ICONV_LIBS"
+AC_CACHE_CHECK(
+ [for iconv()],
+ ac_cv_func_iconv,
+ [AC_TRY_LINK([
+ #include <stdlib.h>
+ #include <iconv.h>
+ ],
+ [
+ iconv_t h = iconv_open("", "");
+ iconv(h, NULL, NULL, NULL, NULL);
+ iconv_close(h);
+ ],
+ [ac_cv_func_iconv=yes],
+ [ac_cv_func_iconv=no]
+ )]
+ )
+if test "$ac_cv_func_iconv" = "yes"; then
+ AC_DEFINE(HAVE_ICONV)
+ LIBICONV="$ICONV_LIBS"
+ AC_CACHE_CHECK(
+ [for iconv() with const input],
+ ac_cv_func_const_iconv,
+ [AC_TRY_COMPILE([
+ #include <stdlib.h>
+ #include <iconv.h>
+ ],
+ [
+ const char *input = "testing";
+ iconv_t h = iconv_open("", "");
+ iconv(h, &input, NULL, NULL, NULL);
+ iconv_close(h);
+ ],
+ [ac_cv_func_const_iconv=yes],
+ [ac_cv_func_const_iconv=no]
+ )]
+ )
+ if test "$ac_cv_func_const_iconv" = "yes"; then
+ AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
+ fi
+fi
+LIBS=$_SAVE_LIBS
+
+AC_SUBST_LIST(ICONV_LIBS)
+
+AM_LANGINFO_CODESET
+
+AC_LANG_C
+
+dnl **********************
+dnl *** va_copy checks ***
+AC_CACHE_CHECK([for an implementation of va_copy()],
+ ac_cv_va_copy,
+ [AC_TRY_COMPILE([#include <stdarg.h>
+ #include <stdlib.h>
+ void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ va_copy (args2, args1);
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }],
+ [f(0, 42); return 0],
+ [ac_cv_va_copy=yes],
+ [ac_cv_va_copy=no]
+ )]
+)
+AC_CACHE_CHECK([whether va_list can be copied by value],
+ ac_cv_va_val_copy,
+ [AC_TRY_COMPILE([#include <stdarg.h>
+ #include <stdlib.h>
+ void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ args2 = args1;
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }],
+ [f(0, 42); return 0],
+ [ac_cv_va_val_copy=yes],
+ [ac_cv_va_val_copy=no],
+ )]
+)
+if test "x$ac_cv_va_copy" = "xyes"; then
+ AC_DEFINE(VA_COPY, va_copy)
+ AC_DEFINE(HAVE_VA_COPY)
+fi
+
+if test "x$ac_cv_va_val_copy" = "xno"; then
+ AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
+fi
+
+dnl ===================================================================
+dnl ========================================================
+dnl Put your C++ language/feature checks below
+dnl ========================================================
+AC_LANG_CPLUSPLUS
+
+ARM_ABI_PREFIX=
+if test "$GNU_CC"; then
+ if test "$CPU_ARCH" = "arm" ; then
+ AC_CACHE_CHECK(for ARM EABI,
+ ac_cv_gcc_arm_eabi,
+ [AC_TRY_COMPILE([],
+ [
+#if defined(__ARM_EABI__)
+ return 0;
+#else
+#error Not ARM EABI.
+#endif
+ ],
+ ac_cv_gcc_arm_eabi="yes",
+ ac_cv_gcc_arm_eabi="no")])
+ if test "$ac_cv_gcc_arm_eabi" = "yes"; then
+ HAVE_ARM_EABI=1
+ ARM_ABI_PREFIX=eabi-
+ else
+ ARM_ABI_PREFIX=oabi-
+ fi
+ fi
+
+ TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
+fi
+
+dnl Check to see if we can resolve ambiguity with |using|.
+AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
+ ac_cv_cpp_ambiguity_resolving_using,
+ [AC_TRY_COMPILE(class X {
+ public: int go(const X&) {return 3;}
+ int jo(const X&) {return 3;}
+ };
+ class Y : public X {
+ public: int go(int) {return 2;}
+ int jo(int) {return 2;}
+ using X::jo;
+ private: using X::go;
+ };,
+ X x; Y y; y.jo(x);,
+ ac_cv_cpp_ambiguity_resolving_using=yes,
+ ac_cv_cpp_ambiguity_resolving_using=no)])
+if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
+ AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
+fi
+
+dnl See if a dynamic_cast to void* gives the most derived object.
+AC_CACHE_CHECK(for C++ dynamic_cast to void*,
+ ac_cv_cpp_dynamic_cast_void_ptr,
+ [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
+ class Y { int j; public: virtual ~Y() { } };
+ class Z : public X, public Y { int k; };
+
+ int main() {
+ Z mdo;
+ X *subx = (X*)&mdo;
+ Y *suby = (Y*)&mdo;
+ return !((((void*)&mdo != (void*)subx) &&
+ ((void*)&mdo == dynamic_cast<void*>(subx))) ||
+ (((void*)&mdo != (void*)suby) &&
+ ((void*)&mdo == dynamic_cast<void*>(suby))));
+ }],
+ ac_cv_cpp_dynamic_cast_void_ptr=yes,
+ ac_cv_cpp_dynamic_cast_void_ptr=no,
+ ac_cv_cpp_dynamic_cast_void_ptr=no)])
+if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
+ AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
+fi
+
+
+# try harder, when checking for __thread support, see bug 521750 comment #33 and below
+# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
+# enabled, the linker in xcode 4.1 will crash. Without this it would crash when
+# linking XUL.
+_SAVE_LDFLAGS=$LDFLAGS
+LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
+AC_CACHE_CHECK(for __thread keyword for TLS variables,
+ ac_cv_thread_keyword,
+ [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
+ [return tlsIsMainThread;],
+ ac_cv_thread_keyword=yes,
+ ac_cv_thread_keyword=no)])
+LDFLAGS=$_SAVE_LDFLAGS
+# The custom dynamic linker doesn't support TLS variables
+MOZ_TLS=
+if test "$ac_cv_thread_keyword" = yes; then
+ # mips builds fail with TLS variables because of a binutils bug.
+ # See bug 528687
+ # OpenBSD doesn't have TLS support, and the test succeeds with clang++
+ case "${target}" in
+ mips*-*)
+ :
+ ;;
+ *-openbsd*)
+ :
+ ;;
+ *)
+ AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
+ MOZ_TLS=1
+ ;;
+ esac
+fi
+
+dnl See if compiler supports some gcc-style attributes
+
+AC_CACHE_CHECK(for __attribute__((always_inline)),
+ ac_cv_attribute_always_inline,
+ [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
+ [],
+ ac_cv_attribute_always_inline=yes,
+ ac_cv_attribute_always_inline=no)])
+
+dnl End of C++ language/feature checks
+AC_LANG_C
+
+dnl ========================================================
+dnl = Internationalization checks
+dnl ========================================================
+dnl
+dnl Internationalization and Locale support is different
+dnl on various UNIX platforms. Checks for specific i18n
+dnl features go here.
+
+dnl check for LC_MESSAGES
+AC_CACHE_CHECK(for LC_MESSAGES,
+ ac_cv_i18n_lc_messages,
+ [AC_TRY_COMPILE([#include <locale.h>],
+ [int category = LC_MESSAGES;],
+ ac_cv_i18n_lc_messages=yes,
+ ac_cv_i18n_lc_messages=no)])
+if test "$ac_cv_i18n_lc_messages" = yes; then
+ AC_DEFINE(HAVE_I18N_LC_MESSAGES)
+fi
+
+AC_HAVE_FUNCS(localeconv)
+
+fi # ! SKIP_COMPILER_CHECKS
+
+if test -n "${COMPILE_ENVIRONMENT}"; then
+ MOZ_CHECK_ALLOCATOR
+fi
+
+TARGET_XPCOM_ABI=
+if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
+ TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
+ AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
+fi
+
+dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
+dnl features that Windows actually does support.
+
+if test -n "$SKIP_COMPILER_CHECKS"; then
+ dnl Windows has malloc.h
+ AC_DEFINE(MALLOC_H, [<malloc.h>])
+ AC_DEFINE(HAVE_FORCEINLINE)
+ AC_DEFINE(HAVE_LOCALECONV)
+fi # SKIP_COMPILER_CHECKS
+
+dnl Mozilla specific options
+dnl ========================================================
+dnl The macros used for command line options
+dnl are defined in build/autoconf/altoptions.m4.
+
+dnl ========================================================
+dnl =
+dnl = Check for external package dependencies
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(External Packages)
+
+case "$OS_TARGET" in
+WINNT)
+ MOZ_FOLD_LIBS=1
+ ;;
+*)
+ MOZ_FOLD_LIBS=
+ ;;
+esac
+
+MOZ_CONFIG_NSPR()
+
+# TODO: We need to find a better place to define this include
+NSS_CFLAGS="-I${DIST}/include/nss"
+AC_SUBST(NSS_CFLAGS)
+
+if test -z "$SKIP_LIBRARY_CHECKS"; then
+dnl system JPEG support
+dnl ========================================================
+MOZ_ARG_WITH_STRING(system-jpeg,
+[ --with-system-jpeg[=PFX]
+ Use system libjpeg [installed at prefix PFX]],
+ JPEG_DIR=$withval)
+
+_SAVE_CFLAGS=$CFLAGS
+_SAVE_LDFLAGS=$LDFLAGS
+_SAVE_LIBS=$LIBS
+if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
+ CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
+ LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
+fi
+if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
+ MOZ_SYSTEM_JPEG=
+else
+ AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_SYSTEM_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_SYSTEM_JPEG=)
+fi
+
+if test "$MOZ_SYSTEM_JPEG" = 1; then
+ AC_TRY_COMPILE([ #include <stdio.h>
+ #include <sys/types.h>
+ #include <jpeglib.h> ],
+ [ #if JPEG_LIB_VERSION < $MOZJPEG
+ #error "Insufficient JPEG library version ($MOZJPEG required)."
+ #endif
+ #ifndef JCS_EXTENSIONS
+ #error "libjpeg-turbo JCS_EXTENSIONS required"
+ #endif
+ ],
+ MOZ_SYSTEM_JPEG=1,
+ AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
+fi
+CFLAGS=$_SAVE_CFLAGS
+LDFLAGS=$_SAVE_LDFLAGS
+LIBS=$_SAVE_LIBS
+
+if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_SYSTEM_JPEG" = 1; then
+ MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
+ MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
+fi
+fi # SKIP_LIBRARY_CHECKS
+
+dnl system ZLIB support
+dnl ========================================================
+MOZ_ZLIB_CHECK([1.2.3])
+
+if test -z "$SKIP_LIBRARY_CHECKS"; then
+dnl system BZIP2 Support
+dnl ========================================================
+MOZ_ARG_WITH_STRING(system-bz2,
+[ --with-system-bz2[=PFX]
+ Use system libbz2 [installed at prefix PFX]],
+ BZ2_DIR=$withval)
+
+_SAVE_CFLAGS=$CFLAGS
+_SAVE_LDFLAGS=$LDFLAGS
+_SAVE_LIBS=$LIBS
+if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
+ CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
+ LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
+fi
+if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
+ MOZ_SYSTEM_BZ2=
+else
+ AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_SYSTEM_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
+ [MOZ_SYSTEM_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
+fi
+CFLAGS=$_SAVE_CFLAGS
+LDFLAGS=$_SAVE_LDFLAGS
+LIBS=$_SAVE_LIBS
+
+if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_SYSTEM_BZ2" = 1; then
+ MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
+ MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
+fi
+
+fi # SKIP_LIBRARY_CHECKS