282 строки
9.4 KiB
Plaintext
282 строки
9.4 KiB
Plaintext
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
dnl vi: set tabstop=4 shiftwidth=4 expandtab:
|
|
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)
|
|
MOZILLA_SRCDIR=$srcdir/mozilla
|
|
AC_CONFIG_AUX_DIR(${MOZILLA_SRCDIR}/build/autoconf)
|
|
AC_CANONICAL_SYSTEM
|
|
|
|
dnl comm-central-specific options
|
|
dnl (MOZILLA_SRCDIR would fit here, but is needed to find autoconf tools)
|
|
export COMM_BUILD=1
|
|
|
|
dnl Get mozconfig output for configure in a config.site we'll pass to
|
|
dnl the mozilla configure. Then unset MOZCONFIG and MOZ_OBJDIR to avoid
|
|
dnl confusing the mozilla configure.
|
|
$(dirname $0)/mozilla/mach environment --format=configure > config.site
|
|
COMM_MOZCONFIG=`$srcdir/build/autoconf/mozconfig-find $srcdir`
|
|
unset MOZCONFIG
|
|
unset MOZ_OBJDIR
|
|
|
|
dnl Do not allow a separate objdir build if a srcdir build exists.
|
|
dnl ==============================================================
|
|
_topsrcdir=`cd \`dirname $0\`; pwd`
|
|
_objdir=`pwd`
|
|
|
|
if test "$_topsrcdir" != "$_objdir"
|
|
then
|
|
# Check for a couple representative files in the source tree
|
|
_conflict_files=
|
|
for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
|
|
if test -f $file; then
|
|
_conflict_files="$_conflict_files $file"
|
|
fi
|
|
done
|
|
if test "$_conflict_files"; then
|
|
echo "***"
|
|
echo "* Your source tree contains these files:"
|
|
for file in $_conflict_files; do
|
|
echo "* $file"
|
|
done
|
|
cat 1>&2 <<-EOF
|
|
* This indicates that you previously built in the source tree.
|
|
* A source tree build can confuse the separate objdir build.
|
|
*
|
|
* To clean up the source tree:
|
|
* 1. cd $_topsrcdir
|
|
* 2. gmake distclean
|
|
***
|
|
EOF
|
|
exit 1
|
|
break
|
|
fi
|
|
fi
|
|
|
|
MOZ_BUILD_ROOT=`pwd`
|
|
MOZILLA_CENTRAL_PATH=$_topsrcdir/mozilla
|
|
MOZ_PYTHON
|
|
|
|
|
|
MOZ_ARG_WITH_STRING(l10n-base,
|
|
[ --with-l10n-base=DIR path to l10n repositories],
|
|
L10NBASEDIR=$withval)
|
|
if test -n "$L10NBASEDIR"; then
|
|
if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
|
|
AC_MSG_ERROR([--with-l10n-base must specify a path])
|
|
elif test -d "$L10NBASEDIR"; then
|
|
dnl Ensure to use an absolute path.
|
|
L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
|
|
else
|
|
AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
|
|
fi
|
|
fi
|
|
|
|
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
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Application
|
|
dnl =
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_HEADER(Application)
|
|
|
|
MOZ_BRANDING_DIRECTORY=
|
|
|
|
MOZ_ARG_ENABLE_STRING(application,
|
|
[ --enable-application=APP
|
|
Options include:
|
|
suite (SeaMonkey)
|
|
mail (Thunderbird)],
|
|
[ MOZ_BUILD_APP=$enableval ] )
|
|
|
|
AC_MSG_CHECKING([for application to build])
|
|
if test -z "$MOZ_BUILD_APP"; then
|
|
AC_MSG_RESULT([mail])
|
|
echo "Building Thunderbird by default. Set --enable-application to build a different application."
|
|
MOZ_BUILD_APP=mail
|
|
else
|
|
# We have a valid application only if it has a build.mk file in its top
|
|
# directory.
|
|
if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
|
|
AC_MSG_RESULT([none])
|
|
AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
|
|
else
|
|
AC_MSG_RESULT([$MOZ_BUILD_APP])
|
|
fi
|
|
fi
|
|
|
|
# Allow the application to influence configure with a confvars.sh script. We
|
|
# still need this for MOZ_BRANDING_DIRECTORY.
|
|
|
|
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
|
|
|
|
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
|
|
http://www.mozilla.org/foundation/trademarks/ .],
|
|
[
|
|
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}
|
|
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
|
|
|
|
case "$host_os" in
|
|
mingw*)
|
|
WIN_TOP_SRC=`cd $srcdir; pwd -W`
|
|
;;
|
|
esac
|
|
|
|
# These lines do no useful work, but if we don't have them, then the output
|
|
# configure script is really messed up.
|
|
touch confdefs.pytmp
|
|
AC_OUTPUT([])
|
|
|
|
# Build the config.status for comm-central
|
|
changequote(<<<,>>>)dnl
|
|
: ${CONFIG_STATUS=./config.status}
|
|
|
|
echo creating $CONFIG_STATUS
|
|
cat > $CONFIG_STATUS <<EOF
|
|
#!${PYTHON}
|
|
|
|
import os
|
|
topsrcdir = '''${WIN_TOP_SRC:-$srcdir}'''
|
|
if not os.path.isabs(topsrcdir):
|
|
rel = os.path.join(os.path.dirname(<<<__file__>>>), topsrcdir)
|
|
topsrcdir = os.path.normpath(os.path.abspath(rel))
|
|
|
|
topobjdir = os.path.dirname(<<<__file__>>>)
|
|
|
|
from mozbuild.backend.configenvironment import BuildConfig
|
|
mozfile = os.path.join(topobjdir, 'mozilla', 'config.status')
|
|
mozbuildcfg = BuildConfig.from_config_status(mozfile)
|
|
|
|
dnl No need to tweak these from mozilla-central
|
|
defines = mozbuildcfg.defines
|
|
non_global_defines = mozbuildcfg.non_global_defines
|
|
|
|
dnl Fix up substitutitons
|
|
def remap_subst(pair):
|
|
name, value = pair
|
|
if isinstance(value, set) or isinstance(value, list):
|
|
return name, value
|
|
value = value.replace('\$(DEPTH)', '\$(DEPTH)/mozilla')
|
|
value = value.replace('\$(topsrcdir)', '\$(topsrcdir)/mozilla')
|
|
if name == 'ac_configure_args':
|
|
value = r''' $ac_configure_args '''[1:-1]
|
|
elif name in ['MOZ_BRANDING_DIRECTORY', 'MOZ_BUILD_APP']:
|
|
value = value[3:] # Strip off ../ from the beginning
|
|
elif name in ['top_srcdir', 'MOZ_BUILD_ROOT', 'WIN_TOP_SRC']:
|
|
value = value[:-8] # Strip off /mozilla from the end
|
|
return name, value
|
|
|
|
substs = map(remap_subst, mozbuildcfg.substs)
|
|
substs.append(('COMM_BUILD', '1'))
|
|
|
|
__all__ = ['topobjdir', 'topsrcdir', 'defines', 'non_global_defines', 'substs']
|
|
|
|
dnl Do the actual work
|
|
if __name__ == '__main__':
|
|
args = dict([(name, globals()[name]) for name in __all__])
|
|
import sys
|
|
dnl Don't rely on virtualenv here. Standalone js doesn't use it.
|
|
sys.path.append(os.path.join(topsrcdir, ${extra_python_path}'build'))
|
|
from mozbuild.config_status import config_status
|
|
config_status(**args)
|
|
EOF
|
|
changequote([,])dnl
|
|
|
|
# Make the config.status file executable
|
|
chmod +x $CONFIG_STATUS
|
|
|
|
_SUBDIR_CONFIG_ARGS="$ac_configure_args"
|
|
if test -n "$UNIFY_DIST"; then
|
|
# Make --with-unify-dist point to the right path
|
|
_SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --with-unify-dist=$UNIFY_DIST"
|
|
fi
|
|
|
|
# build Mozilla first
|
|
#
|
|
# the subdir may not yet have been created in the build tree.
|
|
#
|
|
if test ! -d "mozilla"; then
|
|
mkdir "mozilla"
|
|
fi
|
|
|
|
external_topsrcdir=$_topsrcdir
|
|
|
|
if test "$msyshost"; then
|
|
external_topsrcdir=`cd $_topsrcdir && pwd -W $_topsrcdir`
|
|
fi
|
|
|
|
# --enable-application needs to find confvars.sh, build.mk, etc in the gived dir, so add ../
|
|
# --external-source-dir is so the build system doesn't reject files outside known locations.
|
|
# --disable-official-branding disables all checks for official branding, as we're doing this ourselves in our own repo
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS --enable-application=../$MOZ_BUILD_APP --with-external-source-dir=$external_topsrcdir --disable-official-branding --with-branding=$REAL_BRANDING_DIRECTORY"
|
|
if test -n "$L10NBASEDIR"; then
|
|
dnl Override the initial value with the new one which is guaranteed to be an absolute path.
|
|
ac_configure_args="$ac_configure_args --with-l10n-base=$L10NBASEDIR"
|
|
fi
|
|
|
|
# for Mac universal builds, we need to call the Mozilla configure with MOZ_BUILD_APP=[i386|x86_64]
|
|
MOZ_BUILD_APP_CACHED="$MOZ_BUILD_APP"
|
|
if test -n "$MOZ_CURRENT_PROJECT"; then
|
|
export MOZ_BUILD_APP="$MOZ_CURRENT_PROJECT"
|
|
fi
|
|
|
|
# Files listed in $CONFIG_SITE are sourced by configure near the beginning.
|
|
export CONFIG_SITE="$(pwd)/config.site $CONFIG_SITE"
|
|
AC_OUTPUT_SUBDIRS(mozilla)
|
|
MOZ_BUILD_APP="$MOZ_BUILD_APP_CACHED"
|
|
|
|
# Build the comm-central files with config.status
|
|
test "$no_create" = yes || MOZCONFIG="$COMM_MOZCONFIG" WRITE_MOZINFO=1 ${PYTHON} $CONFIG_STATUS || exit 1
|