Source code

Revision control

Copy as Markdown

Other Tools

dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4:
dnl This Source Code Form is subject to the terms of the Mozilla Public
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
dnl Process this file with autoconf to produce a configure script.
dnl ========================================================
AC_PREREQ(2.13)
AC_INIT(config/config.mk)
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
AC_CANONICAL_SYSTEM
dnl ========================================================
dnl Checks for compilers.
dnl ========================================================
if test "$COMPILE_ENVIRONMENT"; then
# This prevents mingw from adding .exe when generating executable. Internal use
# only.
ac_exeext=.out
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
fi
fi # COMPILE_ENVIRONMENT
dnl ========================================================
dnl System overrides of the defaults for target
dnl ========================================================
case "$target" in
*-darwin*)
MOZ_OPTIMIZE_FLAGS="-O3"
;;
*-android*|*-linuxandroid*)
MOZ_OPTIMIZE_FLAGS="-O2"
;;
*-*linux*)
if test "$CC_TYPE" != clang-cl ; then
MOZ_OPTIMIZE_FLAGS="-O2"
fi
;;
*-mingw*)
MOZ_OPTIMIZE_FLAGS="-O2"
;;
esac
if test -z "$MOZ_OPTIMIZE_FLAGS"; then
MOZ_OPTIMIZE_FLAGS="-O"
fi
dnl Mozilla specific options
dnl ========================================================
dnl The macros used for command line options
dnl are defined in build/autoconf/altoptions.m4.
dnl ========================================================
dnl =
dnl = Application
dnl =
dnl ========================================================
MOZ_BRANDING_DIRECTORY=
MOZ_OFFICIAL_BRANDING=
dnl ========================================================
dnl = Trademarked Branding
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(official-branding,
[ --enable-official-branding
Enable Official mozilla.org Branding
Do not distribute builds with
--enable-official-branding unless you have
permission to use trademarks per
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
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)
fi
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"
fi
AC_SUBST(MOZ_BRANDING_DIRECTORY)
dnl ========================================================
dnl = Enable code optimization. ON by default.
dnl ========================================================
# Use value from moz.configure if one is defined. Else use our computed
# value.
if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
fi
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_LIST(MOZ_OPTIMIZE_FLAGS)
dnl ========================================================
dnl = Enable using the clang plugin to build
dnl ========================================================
if test -n "$COMPILE_ENVIRONMENT"; then
MOZ_CONFIG_CLANG_PLUGIN
fi # COMPILE_ENVIRONMENT
AC_LANG_C
dnl ========================================================
dnl = Mac bundle name
dnl ========================================================
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)
# If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
# Otherwise, use MOZ_APP_DISPLAYNAME
if test -z "$MOZ_MACBUNDLE_ID"; then
MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
fi
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_APPNAME="${MOZ_APP_DISPLAYNAME}CP"
AC_SUBST(MOZ_CHILD_PROCESS_APPNAME)
dnl ==========================================================
dnl = Mac Media Plugin Helper (GMP Child) Process Name for IPC
dnl ==========================================================
MOZ_EME_PROCESS_NAME="media-plugin-helper"
MOZ_EME_PROCESS_NAME_BRANDED="$MOZ_APP_DISPLAYNAME Media Plugin Helper"
MOZ_EME_PROCESS_BUNDLENAME="${MOZ_EME_PROCESS_NAME}.app"
# Generate a lower case string with no spaces to be used as the bundle ID
# for the EME helper .app of the form org.mozilla.<executable-name>.
MOZ_EME_PROCESS_BUNDLEID=`echo "$MOZ_APP_DISPLAYNAME" | tr ' ' '-'`
MOZ_EME_PROCESS_BUNDLEID=`echo "$MOZ_EME_PROCESS_BUNDLEID" | tr 'A-Z' 'a-z'`
MOZ_EME_PROCESS_BUNDLEID=${MOZ_EME_PROCESS_BUNDLEID}-${MOZ_EME_PROCESS_NAME}
MOZ_EME_PROCESS_BUNDLEID=${MOZ_DISTRIBUTION_ID}.${MOZ_EME_PROCESS_BUNDLEID}
AC_SUBST(MOZ_EME_PROCESS_NAME)
AC_SUBST(MOZ_EME_PROCESS_NAME_BRANDED)
AC_SUBST(MOZ_EME_PROCESS_BUNDLENAME)
AC_SUBST(MOZ_EME_PROCESS_BUNDLEID)
# The following variables are available to branding and application
# configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
# - 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_PROFILE: When set, used for application.ini's
# "Profile" field, which controls profile location.
# The following environment variables used to have an effect, but don't anymore:
# - MOZ_APP_VERSION: Defines the application version number. This was replaced with
# the contents from the version.txt file in the application directory, or
# browser/config/version.txt if there isn't one.
# - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
# in the "About" window. This was replaced with the contents from the
# version_display.txt or version.txt in the application directory, or
# browser/config/version_display.txt.
# 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_DISPLAYNAME)
AC_SUBST(MOZ_APP_PROFILE)
AC_SUBST(MAR_CHANNEL_ID)
AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
AC_SUBST(MOZ_APP_MAXVERSION)
OS_CFLAGS="$CFLAGS"
OS_CXXFLAGS="$CXXFLAGS"
AC_SUBST_LIST(OS_CFLAGS)
AC_SUBST_LIST(OS_CXXFLAGS)
AC_SUBST(HOST_CC)
AC_SUBST(HOST_CXX)
dnl Set various defines and substitutions
dnl ========================================================
AC_SUBST(MOZ_DEV_EDITION)
if test -n "$MOZ_DEV_EDITION"; then
AC_DEFINE(MOZ_DEV_EDITION)
fi
dnl Spit out some output
dnl ========================================================
MOZ_CREATE_CONFIG_STATUS()
rm -fr confdefs* $ac_clean_files