summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorolonho@google.com <olonho@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-12 14:17:08 +0000
committerolonho@google.com <olonho@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-12 14:17:08 +0000
commitbb794ddf11e17b02716b5e3394ee10805874116d (patch)
treec6ff89e2228c019b743d2da3220cb34d25f2350a
parent24ebb593d7d613004e46ecc203e605c9b3f7ac46 (diff)
downloadchromium_src-bb794ddf11e17b02716b5e3394ee10805874116d.zip
chromium_src-bb794ddf11e17b02716b5e3394ee10805874116d.tar.gz
chromium_src-bb794ddf11e17b02716b5e3394ee10805874116d.tar.bz2
ARM Mono support in buildbots.
BUG=None TEST=Script builds Mono Review URL: https://chromiumcodereview.appspot.com/11369049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167174 0039d316-1c4b-4281-b951-d872f2087c98
-rwxr-xr-xnative_client_sdk/src/build_tools/nacl-mono-builder.py11
-rwxr-xr-xnative_client_sdk/src/build_tools/nacl-mono-runtime.sh59
2 files changed, 57 insertions, 13 deletions
diff --git a/native_client_sdk/src/build_tools/nacl-mono-builder.py b/native_client_sdk/src/build_tools/nacl-mono-builder.py
index 46062bff..d9bc8d5 100755
--- a/native_client_sdk/src/build_tools/nacl-mono-builder.py
+++ b/native_client_sdk/src/build_tools/nacl-mono-builder.py
@@ -92,14 +92,17 @@ def main(args):
buildbot_common.Run(['git', 'checkout', git_rev], cwd=MONO_DIR)
arch_to_bitsize = {'x86-32': '32',
- 'x86-64': '64'}
- arch_to_output_folder = {'x86-32': 'runtime-build',
- 'x86-64': 'runtime64-build'}
+ 'x86-64': '64',
+ 'arm': 'pnacl'}
+ arch_to_output_folder = {'x86-32': 'runtime-x86-32-build',
+ 'x86-64': 'runtime-x86-64-build',
+ 'arm': 'runtime-arm-build'}
buildbot_common.BuildStep(build_prefix + 'Configure Mono')
os.environ['NACL_SDK_ROOT'] = sdk_dir
+ os.environ['TARGET_ARCH'] = options.arch
os.environ['TARGET_BITSIZE'] = arch_to_bitsize[options.arch]
- buildbot_common.Run(['./autogen.sh'], cwd=MONO_DIR)
+ buildbot_common.Run(['./autogen.sh'], cwd=MONO_DIR)
buildbot_common.Run(['make', 'distclean'], cwd=MONO_DIR)
buildbot_common.BuildStep(build_prefix + 'Build and Install Mono')
diff --git a/native_client_sdk/src/build_tools/nacl-mono-runtime.sh b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh
index 7354a86..b65d4e0d 100755
--- a/native_client_sdk/src/build_tools/nacl-mono-runtime.sh
+++ b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh
@@ -24,19 +24,45 @@ fi
set -e
cd $ORIGINAL_CWD
-if [ $TARGET_BITSIZE == "32" ]; then
+case "${TARGET_ARCH}" in
+x86-32)
+ readonly USE_PNACL=0
readonly NACL_CROSS_PREFIX_DASH=i686-nacl-
readonly CONFIG_OPTS="--host=i686-pc-linux-gnu \
--build=i686-pc-linux-gnu \
--target=i686-pc-linux-gnu"
readonly LIBDIR=lib32
-else
+ ;;
+x86-64)
+ readonly USE_PNACL=0
readonly NACL_CROSS_PREFIX_DASH=x86_64-nacl-
readonly CONFIG_OPTS="--host=x86_64-pc-linux-gnu \
--build=x86_64-pc-linux-gnu \
--target=x86_64-pc-linux-gnu"
readonly LIBDIR=lib
-fi
+ ;;
+arm)
+ readonly USE_PNACL=1
+ readonly NACL_CROSS_PREFIX_DASH=pnacl-
+ readonly PNACL_LINK_ARGS="-arch armv7 -O2"
+ readonly CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \
+ --build=x86_64-pc-linux-gnu \
+ --target=armv7l-unknown-linux-gnueabi"
+ readonly LIBDIR=libarm
+ # TODO(olonho): move it to Mono's configure, once nacl target implemented.
+ readonly CUSTOM_CFLAGS="\
+-D__arm__ \
+-D__ARM_ARCH_7__ \
+-D__portable_native_client__ \
+-DARM_FPU_VFP=1 \
+-Dtimezone=_timezone \
+-DDISABLE_SOCKETS \
+-DDISABLE_ATTACH \
+-DUSE_NEWLIB \
+"
+ readonly CUSTOM_LDFLAGS=${PNACL_LINK_ARGS}
+ ;;
+esac
# UGLY hack to allow dynamic linking
sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
@@ -52,18 +78,33 @@ cd ${BUILD_DIR}
mkdir -p ${INSTALL_DIR}
-readonly NACL_BIN_PATH=${NACL_SDK_ROOT}/toolchain/linux_x86_glibc/bin
-readonly NACLCC=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}gcc
-readonly NACLCXX=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}g++
+if [ ${USE_PNACL} == 1 ]; then
+ readonly NACL_BIN_PATH="\
+${NACL_SDK_ROOT}/toolchain/linux_x86_pnacl/newlib/bin"
+ readonly NACLCC=${NACL_BIN_PATH}/pnacl-clang
+ readonly NACLCXX=${NACL_BIN_PATH}/pnacl-clang++
+else
+ readonly NACL_BIN_PATH=${NACL_SDK_ROOT}/toolchain/linux_x86_glibc/bin
+ readonly NACLCC=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}gcc
+ readonly NACLCXX=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}g++
+fi
readonly NACLAR=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ar
readonly NACLRANLIB=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ranlib
readonly NACLLD=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ld
+readonly NACLOBJDUMP=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}objdump
+readonly NACLSTRIP=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}strip
+
+CFLAGS="-g -O2 -D_POSIX_PATH_MAX=256 -DPATH_MAX=256 $CUSTOM_CFLAGS"
+LDFLAGS="$CUSTOM_LDFLAGS"
+LIBS="-lnacl_dyncode -lc -lg -lnosys -lpthread"
-CC=${NACLCC} CXX=${NACLCXX} AR=${NACLAR} RANLIB=${NACLRANLIB} LD=${NACLLD} \
+CC=${NACLCC} CXX=${NACLCXX} LD=${NACLLD} \
+STRIP=${NACLSTRIP} AR=${NACLAR} RANLIB=${NACLRANLIB} OBJDUMP=${NACLOBJDUMP} \
PKG_CONFIG_LIBDIR= \
PATH=${NACL_BIN_PATH}:${PATH} \
-LIBS="-lnacl_dyncode -lc -lg -lnosys -lnacl" \
-CFLAGS="-g -O2 -D_POSIX_PATH_MAX=256 -DPATH_MAX=256" \
+LIBS="${LIBS}" \
+CFLAGS="${CFLAGS}" \
+LDFLAGS="${LDFLAGS}" \
${MONO_DIR}/configure ${CONFIG_OPTS} \
--exec-prefix=${INSTALL_DIR} \
--libdir=${INSTALL_DIR}/${LIBDIR} \