зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1260647 - Unify cross-compilation setup, while moving some of it to moz.configure. r=ted
Gonk, Android, and the generic cross-compilation setup all were using a different yet similar way to prefix the toolchain. The latter was even wrong, since the target and target alias usually don't match actual toolchain prefixes (which don't include the machine part of the target).
This commit is contained in:
Родитель
08b4bd78d9
Коммит
c12b02c70d
|
@ -11,4 +11,14 @@ def gonkdir(value):
|
|||
return value[0] if value else ''
|
||||
|
||||
|
||||
option('--with-gonk-toolchain-prefix', nargs=1,
|
||||
help='Prefix to gonk toolchain commands')
|
||||
|
||||
@depends_if('--with-gonk-toolchain-prefix')
|
||||
def gonk_toolchain_prefix(value):
|
||||
return value
|
||||
|
||||
imply_option('--with-toolchain-prefix', gonk_toolchain_prefix)
|
||||
|
||||
|
||||
include('common.configure')
|
||||
|
|
|
@ -133,23 +133,7 @@ case "$target" in
|
|||
AC_MSG_ERROR([not found. Please check your NDK. With the current configuration, it should be in $android_platform])
|
||||
fi
|
||||
|
||||
dnl set up compilers
|
||||
TOOLCHAIN_PREFIX="$android_toolchain/bin/$android_tool_prefix-"
|
||||
AS="$android_toolchain"/bin/"$android_tool_prefix"-as
|
||||
if test -z "$CC"; then
|
||||
CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc
|
||||
fi
|
||||
if test -z "$CXX"; then
|
||||
CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++
|
||||
fi
|
||||
if test -z "$CPP"; then
|
||||
CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp
|
||||
fi
|
||||
LD="$android_toolchain"/bin/"$android_tool_prefix"-ld
|
||||
AR="$android_toolchain"/bin/"$android_tool_prefix"-ar
|
||||
RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib
|
||||
STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip
|
||||
OBJCOPY="$android_toolchain"/bin/"$android_tool_prefix"-objcopy
|
||||
|
||||
CPPFLAGS="-idirafter $android_platform/usr/include $CPPFLAGS"
|
||||
CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
|
||||
|
|
|
@ -169,20 +169,33 @@ CC=$_SAVE_CC
|
|||
CFLAGS=$_SAVE_CFLAGS
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
|
||||
AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", :)
|
||||
dnl AC_CHECK_PROGS manually goes through $PATH, and as such fails to handle
|
||||
dnl absolute or relative paths. Relative paths wouldn't work anyways, but
|
||||
dnl absolute paths would. Trick AC_CHECK_PROGS into working in that case by
|
||||
dnl adding / to PATH. This is temporary until this moves to moz.configure
|
||||
dnl (soon).
|
||||
_SAVE_PATH=$PATH
|
||||
case "${TOOLCHAIN_PREFIX}" in
|
||||
/*)
|
||||
PATH="/:$PATH"
|
||||
;;
|
||||
esac
|
||||
AC_CHECK_PROGS(CC, "${TOOLCHAIN_PREFIX}gcc", :)
|
||||
unset ac_cv_prog_CC
|
||||
AC_PROG_CC
|
||||
AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", :)
|
||||
AC_CHECK_PROGS(CXX, "${TOOLCHAIN_PREFIX}g++", :)
|
||||
unset ac_cv_prog_CXX
|
||||
AC_PROG_CXX
|
||||
|
||||
AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", :)
|
||||
AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", :)
|
||||
AC_CHECK_PROGS(AS, "${target_alias}-as" "${target}-as", :)
|
||||
AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", :)
|
||||
AC_CHECK_PROGS(STRIP, "${target_alias}-strip" "${target}-strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :)
|
||||
AC_CHECK_PROGS(OTOOL, "${target_alias}-otool" "${target}-otool", :)
|
||||
AC_CHECK_PROGS(RANLIB, "${TOOLCHAIN_PREFIX}ranlib", :)
|
||||
AC_CHECK_PROGS(AR, "${TOOLCHAIN_PREFIX}ar", :)
|
||||
AC_CHECK_PROGS(AS, "${TOOLCHAIN_PREFIX}as", :)
|
||||
AC_CHECK_PROGS(LD, "${TOOLCHAIN_PREFIX}ld", :)
|
||||
AC_CHECK_PROGS(STRIP, "${TOOLCHAIN_PREFIX}strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, "${TOOLCHAIN_PREFIX}windres", :)
|
||||
AC_CHECK_PROGS(OTOOL, "${TOOLCHAIN_PREFIX}otool", :)
|
||||
AC_CHECK_PROGS(OBJCOPY, "${TOOLCHAIN_PREFIX}objcopy", :)
|
||||
PATH=$_SAVE_PATH
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CXX11],
|
||||
|
|
|
@ -25,11 +25,6 @@ export CPP="$topsrcdir/clang/bin/clang $FLAGS -E"
|
|||
export LLVMCONFIG=$topsrcdir/clang/bin/llvm-config
|
||||
export LDFLAGS="-Wl,-syslibroot,$CROSS_SYSROOT -Wl,-dead_strip"
|
||||
export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/x86_64-apple-darwin10-
|
||||
#TODO: bug 1184202 - would be nice if these could be detected with TOOLCHAIN_PREFIX automatically
|
||||
export AR=${TOOLCHAIN_PREFIX}ar
|
||||
export RANLIB=${TOOLCHAIN_PREFIX}ranlib
|
||||
export STRIP=${TOOLCHAIN_PREFIX}strip
|
||||
export OTOOL=${TOOLCHAIN_PREFIX}otool
|
||||
export DSYMUTIL=$topsrcdir/clang/bin/llvm-dsymutil
|
||||
export GENISOIMAGE=$topsrcdir/genisoimage/genisoimage
|
||||
export DMG_TOOL=$topsrcdir/dmg/dmg
|
||||
|
|
|
@ -289,6 +289,7 @@ def wanted_mozconfig_variables(help):
|
|||
'PERL',
|
||||
'RPMBUILD',
|
||||
'TAR',
|
||||
'TOOLCHAIN_PREFIX',
|
||||
'UNZIP',
|
||||
'USE_FC_FREETYPE',
|
||||
'WITHOUT_X',
|
||||
|
@ -456,6 +457,9 @@ def split_triplet(triplet):
|
|||
endianness=endianness,
|
||||
raw_cpu=cpu,
|
||||
raw_os=os,
|
||||
# Toolchains, most notably for cross compilation may use cpu-os
|
||||
# prefixes.
|
||||
toolchain='%s-%s' % (cpu, os),
|
||||
)
|
||||
|
||||
|
||||
|
@ -717,7 +721,8 @@ add_old_configure_assignment('RELEASE_BUILD',
|
|||
|
||||
|
||||
# This is temporary until js/src/configure and configure are merged.
|
||||
# Use instead of option() in js/moz.configure
|
||||
# Use instead of option() in js/moz.configure and more generally, for
|
||||
# options that are shared between configure and js/src/configure.
|
||||
@template
|
||||
def js_option(*args, **kwargs):
|
||||
opt = option(*args, **kwargs)
|
||||
|
|
|
@ -325,7 +325,6 @@ def old_configure_options(*options):
|
|||
'--with-doc-output-dir',
|
||||
'--with-float-abi',
|
||||
'--with-fpu',
|
||||
'--with-gonk-toolchain-prefix',
|
||||
'--with-google-api-keyfile',
|
||||
'--with-google-oauth-api-keyfile',
|
||||
'--with-intl-api',
|
||||
|
|
|
@ -101,3 +101,22 @@ def using_compiler_wrapper(compiler_wrapper):
|
|||
return True
|
||||
|
||||
set_config('MOZ_USING_COMPILER_WRAPPER', using_compiler_wrapper)
|
||||
|
||||
|
||||
# Cross-compilation related things.
|
||||
# ==============================================================
|
||||
js_option('--with-toolchain-prefix', env='TOOLCHAIN_PREFIX', nargs=1,
|
||||
help='Prefix for the target toolchain')
|
||||
|
||||
@depends('--with-toolchain-prefix', target, host, cross_compiling)
|
||||
def toolchain_prefix(value, target, host, cross_compiling):
|
||||
if value:
|
||||
return value[0]
|
||||
# Special case x86-64 <-> x86 cross compiling until we have the right tests
|
||||
# in moz.configure land.
|
||||
if cross_compiling and not all(i.cpu in ('x86_64', 'x86')
|
||||
for i in (target, host)):
|
||||
return '%s-' % target.toolchain
|
||||
return ''
|
||||
|
||||
add_old_configure_assignment('TOOLCHAIN_PREFIX', toolchain_prefix)
|
||||
|
|
|
@ -83,11 +83,6 @@ else
|
|||
fi
|
||||
AC_SUBST(autoconfmk)
|
||||
|
||||
MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
|
||||
[ --with-gonk-toolchain-prefix=DIR
|
||||
prefix to gonk toolchain commands],
|
||||
gonk_toolchain_prefix=$withval)
|
||||
|
||||
if test -n "$gonkdir" ; then
|
||||
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
|
||||
dnl Default to ICS
|
||||
|
@ -96,17 +91,6 @@ if test -n "$gonkdir" ; then
|
|||
ANDROID_VERSION="${PLATFORM_SDK_VERSION}"
|
||||
fi
|
||||
|
||||
dnl set up compilers
|
||||
AS="$gonk_toolchain_prefix"as
|
||||
CC="$gonk_toolchain_prefix"gcc
|
||||
CXX="$gonk_toolchain_prefix"g++
|
||||
CPP="$gonk_toolchain_prefix"cpp
|
||||
LD="$gonk_toolchain_prefix"ld
|
||||
AR="$gonk_toolchain_prefix"ar
|
||||
RANLIB="$gonk_toolchain_prefix"ranlib
|
||||
STRIP="$gonk_toolchain_prefix"strip
|
||||
OBJCOPY="$gonk_toolchain_prefix"objcopy
|
||||
|
||||
STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include"
|
||||
STLPORT_LIBS="-lstlport"
|
||||
|
||||
|
|
|
@ -96,11 +96,6 @@ DIST="$MOZ_BUILD_ROOT/dist"
|
|||
|
||||
MOZ_DEFAULT_COMPILER
|
||||
|
||||
MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
|
||||
[ --with-gonk-toolchain-prefix=DIR
|
||||
prefix to gonk toolchain commands],
|
||||
gonk_toolchain_prefix=$withval)
|
||||
|
||||
if test -n "$gonkdir" ; then
|
||||
dnl export for js/src/configure. We can't pass the option down normally,
|
||||
dnl because it's a `--enable-project=b2g`-only option.
|
||||
|
@ -115,18 +110,6 @@ if test -n "$gonkdir" ; then
|
|||
ANDROID_VERSION="${PLATFORM_SDK_VERSION}"
|
||||
fi
|
||||
|
||||
dnl set up compilers
|
||||
TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
|
||||
AS="$gonk_toolchain_prefix"as
|
||||
CC="$gonk_toolchain_prefix"gcc
|
||||
CXX="$gonk_toolchain_prefix"g++
|
||||
CPP="$gonk_toolchain_prefix"cpp
|
||||
LD="$gonk_toolchain_prefix"ld
|
||||
AR="$gonk_toolchain_prefix"ar
|
||||
RANLIB="$gonk_toolchain_prefix"ranlib
|
||||
STRIP="$gonk_toolchain_prefix"strip
|
||||
OBJCOPY="$gonk_toolchain_prefix"objcopy
|
||||
|
||||
if ! test -e "$gonkdir/ndk/sources/cxx-stl/stlport/src/iostream.cpp"; then
|
||||
AC_MSG_ERROR([Couldn't find path to stlport sources in the gonk tree])
|
||||
fi
|
||||
|
|
Загрузка…
Ссылка в новой задаче