Bug 1036645 part 1 - Use AC_OUTPUT_SUBDIRS to call ICU configure. r=gps

As ICU needs an objdir different from its source directory, add support for
that in AC_OUTPUT_SUBDIRS.
This commit is contained in:
Mike Hommey 2014-07-11 19:05:59 +09:00
parent 28d2bd170c
commit c180fcf730
2 changed files with 58 additions and 81 deletions

View File

@ -18,33 +18,42 @@ MOZ_CONFIG_LOG_TRAP
])
dnl Disable the trap when running sub-configures.
define([_MOZ_AC_OUTPUT_SUBDIRS], defn([AC_OUTPUT_SUBDIRS]))
define([MOZ_SUBCONFIGURE_WRAP],
[ _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
case "$host" in
*-mingw*)
define(GEN_MOZ_AC_OUTPUT_SUBDIRS, [
define([_MOZ_AC_OUTPUT_SUBDIRS], [
patsubst($@, [$srcdir/$ac_config_dir], [$srcdir/$moz_config_srcdir])
])
])
GEN_MOZ_AC_OUTPUT_SUBDIRS(defn([AC_OUTPUT_SUBDIRS]))
define([AC_OUTPUT_SUBDIRS],
[trap '' EXIT
for moz_config_dir in $1; do
case "$moz_config_dir" in
*:*)
moz_config_srcdir=$(echo $moz_config_dir | awk -F: '{print [$]1}')
moz_config_dir=$(echo $moz_config_dir | awk -F: '{print [$]2}')
;;
*)
moz_config_srcdir=$moz_config_dir
;;
esac
_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
case "$host" in
*-mingw*)
_CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL)
if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then
_CONFIG_SHELL="${_CONFIG_SHELL}.exe"
fi
;;
esac
esac
if test -d "$1"; then
(cd "$1"; $PYTHON $_topsrcdir/build/subconfigure.py dump "$_CONFIG_SHELL")
else
mkdir -p "$1"
fi
$2
(cd "$1"; $PYTHON $_topsrcdir/build/subconfigure.py adjust $ac_sub_configure)
])
define([AC_OUTPUT_SUBDIRS],
[trap '' EXIT
for moz_config_dir in $1; do
MOZ_SUBCONFIGURE_WRAP([$moz_config_dir],[
_MOZ_AC_OUTPUT_SUBDIRS($moz_config_dir)
])
if test -d "$moz_config_dir"; then
(cd "$moz_config_dir"; $PYTHON $_topsrcdir/build/subconfigure.py dump "$_CONFIG_SHELL")
else
mkdir -p "$moz_config_dir"
fi
_MOZ_AC_OUTPUT_SUBDIRS($moz_config_dir)
(cd "$moz_config_dir"; $PYTHON $_topsrcdir/build/subconfigure.py adjust $ac_sub_configure)
done
MOZ_CONFIG_LOG_TRAP

View File

@ -154,27 +154,8 @@ if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
ICU_CPPFLAGS="$ICU_CPPFLAGS -I$icudir/common -I$icudir/i18n"
ICU_CROSS_BUILD_OPT=""
ICU_SRCDIR=""
if test "$HOST_OS_ARCH" = "WINNT"; then
ICU_SRCDIR="--srcdir=$(cd $srcdir/intl/icu/source; pwd -W)"
fi
if test "$CROSS_COMPILE"; then
# Building host tools. It is necessary to build target binary.
case "$HOST_OS_ARCH" in
Darwin)
ICU_TARGET=MacOSX
;;
Linux)
ICU_TARGET=Linux
;;
WINNT)
ICU_TARGET=MSYS/MSVC
;;
DragonFly|FreeBSD|NetBSD|OpenBSD|GNU_kFreeBSD)
ICU_TARGET=BSD
;;
esac
# Remove _DEPEND_CFLAGS from HOST_FLAGS to avoid configure error
HOST_ICU_CFLAGS="$HOST_CFLAGS"
HOST_ICU_CXXFLAGS="$HOST_CXXFLAGS"
@ -196,24 +177,21 @@ if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
abs_srcdir=`(cd $srcdir; pwd)`
mkdir -p $_objdir/intl/icu/host
(cd $_objdir/intl/icu/host
MOZ_SUBCONFIGURE_WRAP([.],[
AR="$HOST_AR" RANLIB="$HOST_RANLIB" \
CC="$HOST_CC" CXX="$HOST_CXX" LD="$HOST_LD" \
CFLAGS="$HOST_ICU_CFLAGS $HOST_OPTIMIZE_FLAGS" \
CPPFLAGS="$ICU_CPPFLAGS" \
CXXFLAGS="$HOST_ICU_CXXFLAGS $HOST_OPTIMIZE_FLAGS" \
LDFLAGS="$HOST_LDFLAGS" \
$SHELL $abs_srcdir/intl/icu/source/runConfigureICU \
$HOST_ICU_BUILD_OPTS \
$ICU_TARGET \
dnl Shell quoting is fun.
${ICU_SRCDIR+"$ICU_SRCDIR"} \
--enable-static --disable-shared \
--enable-extras=no --enable-icuio=no --enable-layout=no \
--enable-tests=no --enable-samples=no || exit 1
])
) || exit 1
(export AR="$HOST_AR"
export RANLIB="$HOST_RANLIB"
export CC="$HOST_CC"
export CXX="$HOST_CXX"
export CPP="$HOST_CPP"
export LD="$HOST_LD"
export CFLAGS="$HOST_ICU_CFLAGS $HOST_OPTIMIZE_FLAGS"
export CPPFLAGS="$ICU_CPPFLAGS"
export CXXFLAGS="$HOST_ICU_CXXFLAGS $HOST_OPTIMIZE_FLAGS"
export LDFLAGS="$HOST_LDFLAGS"
ac_configure_args="$HOST_ICU_BUILD_OPTS"
ac_configure_args="$ac_configure_args --enable-static --disable-shared --enable-extras=no --enable-icuio=no --enable-layout=no --enable-tests=no --enable-samples=no"
cache_file=$_objdir/intl/icu/host/config.cache
AC_OUTPUT_SUBDIRS(intl/icu/source:intl/icu/host)
) || exit 1
# generate config/icucross.mk
$GMAKE -C $_objdir/intl/icu/host/ config/icucross.mk
@ -308,29 +286,19 @@ if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
fi
fi
# We cannot use AC_OUTPUT_SUBDIRS since ICU tree is out of spidermonkey.
# When using AC_OUTPUT_SUBDIRS, objdir of ICU is out of objdir
# due to relative path.
# If building ICU moves into root of mozilla tree, we can use
# AC_OUTPUT_SUBDIR instead.
mkdir -p $_objdir/intl/icu/target
(cd $_objdir/intl/icu/target
MOZ_SUBCONFIGURE_WRAP([.],[
AR="$AR" CC="$CC" CXX="$CXX" LD="$LD" \
ARFLAGS="$ARFLAGS" \
CPPFLAGS="$ICU_CPPFLAGS $CPPFLAGS" \
CFLAGS="$ICU_CFLAGS" \
CXXFLAGS="$ICU_CXXFLAGS" \
LDFLAGS="$ICU_LDFLAGS $LDFLAGS" \
$SHELL $_topsrcdir/intl/icu/source/configure \
$ICU_BUILD_OPTS \
$ICU_CROSS_BUILD_OPT \
$ICU_LINK_OPTS \
${ICU_SRCDIR+"$ICU_SRCDIR"} \
$ICU_TARGET_OPT \
--disable-extras --disable-icuio --disable-layout \
--disable-tests --disable-samples || exit 1
])
(export AR="$AR"
export CC="$CC"
export CXX="$CXX"
export LD="$LD"
export ARFLAGS="$ARFLAGS"
export CPPFLAGS="$ICU_CPPFLAGS $CPPFLAGS"
export CFLAGS="$ICU_CFLAGS"
export CXXFLAGS="$ICU_CXXFLAGS"
export LDFLAGS="$ICU_LDFLAGS $LDFLAGS"
ac_configure_args="$ICU_BUILD_OPTS $ICU_CROSS_BUILD_OPT $ICU_LINK_OPTS $ICU_TARGET_OPT"
ac_configure_args="$ac_configure_args --disable-extras --disable-icuio --disable-layout --disable-tests --disable-samples"
cache_file=$_objdir/intl/icu/target/config.cache
AC_OUTPUT_SUBDIRS(intl/icu/source:intl/icu/target)
) || exit 1
fi