summaryrefslogtreecommitdiffstats
path: root/native_client_sdk
diff options
context:
space:
mode:
authorolonho@chromium.org <olonho@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-10 23:51:28 +0000
committerolonho@chromium.org <olonho@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-10 23:51:28 +0000
commitd2eda638d2fd83e4cedc3c257ff892c5289a9309 (patch)
tree8756df738af5c5b46d5d519404cb3ece03d72fdd /native_client_sdk
parent34fb4c928fd493681957273f582364042cc5e83f (diff)
downloadchromium_src-d2eda638d2fd83e4cedc3c257ff892c5289a9309.zip
chromium_src-d2eda638d2fd83e4cedc3c257ff892c5289a9309.tar.gz
chromium_src-d2eda638d2fd83e4cedc3c257ff892c5289a9309.tar.bz2
Implement buildbot script support for Mono ARM.
BUG= Review URL: https://chromiumcodereview.appspot.com/13799005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193504 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
-rw-r--r--native_client_sdk/src/build_tools/buildbot_common.py3
-rwxr-xr-xnative_client_sdk/src/build_tools/nacl-mono-archive.py2
-rwxr-xr-xnative_client_sdk/src/build_tools/nacl-mono-buildbot.py3
-rwxr-xr-xnative_client_sdk/src/build_tools/nacl-mono-builder.py17
-rwxr-xr-xnative_client_sdk/src/build_tools/nacl-mono-runtime.sh110
5 files changed, 103 insertions, 32 deletions
diff --git a/native_client_sdk/src/build_tools/buildbot_common.py b/native_client_sdk/src/build_tools/buildbot_common.py
index 82bbeaa..a591dae 100644
--- a/native_client_sdk/src/build_tools/buildbot_common.py
+++ b/native_client_sdk/src/build_tools/buildbot_common.py
@@ -116,7 +116,8 @@ LOCAL_GSUTIL = 'gsutil'
def GetGsutil():
- if os.environ.get('BUILDBOT_BUILDERNAME'):
+ if os.environ.get('BUILDBOT_BUILDERNAME') \
+ and not os.environ.get('BUILDBOT_FAKE'):
return BOT_GSUTIL
else:
return LOCAL_GSUTIL
diff --git a/native_client_sdk/src/build_tools/nacl-mono-archive.py b/native_client_sdk/src/build_tools/nacl-mono-archive.py
index 131fe52..066bcee 100755
--- a/native_client_sdk/src/build_tools/nacl-mono-archive.py
+++ b/native_client_sdk/src/build_tools/nacl-mono-archive.py
@@ -43,7 +43,7 @@ def main(args):
options.tar_path = options.tar_path.replace('%pepperrev%',
options.pepper_revision)
- install_folders = ['bin', 'etc', 'include', 'lib', 'lib32', 'share']
+ install_folders = ['bin', 'etc', 'include', 'lib', 'lib32', 'libarm', 'share']
buildbot_common.BuildStep('Archive Build')
tar_file = None
diff --git a/native_client_sdk/src/build_tools/nacl-mono-buildbot.py b/native_client_sdk/src/build_tools/nacl-mono-buildbot.py
index 7931799..5bfba9f 100755
--- a/native_client_sdk/src/build_tools/nacl-mono-buildbot.py
+++ b/native_client_sdk/src/build_tools/nacl-mono-buildbot.py
@@ -29,6 +29,9 @@ def build_and_upload_mono(sdk_revision, pepper_revision, sdk_url,
buildbot_common.Run([sys.executable, 'nacl-mono-builder.py',
'--arch', 'x86-64', '--install-dir', install_dir] +
revision_opt + url_opt + args)
+ buildbot_common.Run([sys.executable, 'nacl-mono-builder.py',
+ '--arch', 'arm', '--install-dir', install_dir] +
+ revision_opt + url_opt + args)
buildbot_common.Run([sys.executable, 'nacl-mono-archive.py',
'--upload-path', upload_path,
'--pepper-revision', pepper_revision,
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 d9bc8d5..0726111 100755
--- a/native_client_sdk/src/build_tools/nacl-mono-builder.py
+++ b/native_client_sdk/src/build_tools/nacl-mono-builder.py
@@ -79,10 +79,19 @@ def main(args):
buildbot_common.BuildStep(build_prefix + 'Checkout Mono')
# TODO(elijahtaylor): Get git URL from master/trigger to make this
# more flexible for building from upstream and release branches.
- git_url = 'git://github.com/elijahtaylor/mono.git'
- git_rev = 'HEAD'
+ if options.arch == 'arm':
+ git_url = 'git://github.com/igotti-google/mono.git'
+ git_rev = 'arm_nacl'
+ else:
+ git_url = 'git://github.com/elijahtaylor/mono.git'
+ git_rev = 'HEAD'
if buildbot_revision:
- git_rev = buildbot_revision.split(':')[1]
+ # Unfortunately, we use different git revisions for ARM and x86 now,
+ # so ignore buildbot_revision variable for ARM.
+ # Need to rethink this approach, if we'll plan to support
+ # more flexible repo selection mechanism.
+ if options.arch != 'arm':
+ git_rev = buildbot_revision.split(':')[1]
if not os.path.exists(MONO_DIR):
buildbot_common.MakeDir(MONO_DIR)
buildbot_common.Run(['git', 'clone', git_url, MONO_DIR])
@@ -93,7 +102,7 @@ def main(args):
arch_to_bitsize = {'x86-32': '32',
'x86-64': '64',
- 'arm': 'pnacl'}
+ 'arm': 'arm'}
arch_to_output_folder = {'x86-32': 'runtime-x86-32-build',
'x86-64': 'runtime-x86-64-build',
'arm': 'runtime-arm-build'}
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 7dfffd8..ffc6f47 100755
--- a/native_client_sdk/src/build_tools/nacl-mono-runtime.sh
+++ b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh
@@ -11,13 +11,16 @@ if [[ $# -ne 3 ]]; then
exit -1
fi
+readonly CLEAN=1
+readonly DEBUG=0
+readonly PARALLEL=0
readonly MONO_DIR=$(readlink -f $1)
readonly BUILD_DIR=$(readlink -f $2)
readonly INSTALL_DIR=$(readlink -f $3)
readonly ORIGINAL_CWD=$(pwd)
set +e
-if [ -f ${BUILD_DIR}/Makefile ]; then
+if [ -f ${BUILD_DIR}/Makefile -a ${CLEAN} != 0 ]; then
cd ${BUILD_DIR}
make distclean
fi
@@ -27,34 +30,61 @@ cd $ORIGINAL_CWD
case "${TARGET_ARCH}" in
x86-32)
readonly USE_PNACL=0
+ readonly USE_NEWLIB=0
+ readonly TC_FLAVOUR=linux_x86_glibc
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"
+ CONFIG_OPTS="--host=i686-pc-linux-gnu \
+ --build=i686-pc-linux-gnu \
+ --target=i686-pc-linux-gnu"
readonly LIBDIR=lib32
- readonly CUSTOM_CFLAGS=""
+ CUSTOM_CFLAGS=""
readonly CUSTOM_LDFLAGS=""
;;
x86-64)
readonly USE_PNACL=0
+ readonly USE_NEWLIB=0
+ readonly TC_FLAVOUR=linux_x86_glibc
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"
+ CONFIG_OPTS="--host=x86_64-pc-linux-gnu \
+ --build=x86_64-pc-linux-gnu \
+ --target=x86_64-pc-linux-gnu"
readonly LIBDIR=lib
- readonly CUSTOM_CFLAGS=""
+ CUSTOM_CFLAGS=""
readonly CUSTOM_LDFLAGS=""
;;
arm)
+ readonly USE_PNACL=0
+ readonly USE_NEWLIB=1
+ readonly TC_FLAVOUR=linux_arm_newlib
+ readonly NACL_CROSS_PREFIX_DASH=arm-nacl-
+ CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \
+ --build=x86_64-pc-linux-gnu \
+ --target=armv7l-unknown-linux-gnueabi \
+ --with-jumptables=yes"
+ readonly LIBDIR=libarm
+ # TODO(olonho): move it to Mono's configure, once nacl target implemented.
+ CUSTOM_CFLAGS="\
+-DARM_FPU_VFP=1 \
+-D__ARM_ARCH_7__ \
+-Dtimezone=_timezone \
+-DDISABLE_SOCKETS \
+-DDISABLE_ATTACH \
+"
+ readonly CUSTOM_LDFLAGS=""
+ ;;
+arm-pnacl)
readonly USE_PNACL=1
+ readonly USE_NEWLIB=1
+ readonly TC_FLAVOUR=linux_x86_pnacl/newlib
readonly NACL_CROSS_PREFIX_DASH=pnacl-
readonly PNACL_LINK_ARGS="-arch armv7 -O2"
- readonly CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \
+ CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \
--build=x86_64-pc-linux-gnu \
- --target=armv7l-unknown-linux-gnueabi"
+ --target=armv7l-unknown-linux-gnueabi \
+ --with-jumptables=yes"
readonly LIBDIR=libarm
# TODO(olonho): move it to Mono's configure, once nacl target implemented.
- readonly CUSTOM_CFLAGS="\
+ CUSTOM_CFLAGS="\
-D__arm__ \
-D__ARM_ARCH_7__ \
-D__portable_native_client__ \
@@ -62,33 +92,42 @@ arm)
-Dtimezone=_timezone \
-DDISABLE_SOCKETS \
-DDISABLE_ATTACH \
--DUSE_NEWLIB \
"
readonly CUSTOM_LDFLAGS=${PNACL_LINK_ARGS}
;;
+*)
+ echo "Unsupported target ${TARGET_ARCH}"
+ exit 1
esac
-# UGLY hack to allow dynamic linking
-sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
+if [ ${USE_NEWLIB} == 1 ]; then
+ CUSTOM_CFLAGS="${CUSTOM_CFLAGS} -DUSE_NEWLIB"
+ CONFIG_OPTS="${CONFIG_OPTS} --enable-shared=no"
+else
+ CONFIG_OPTS="${CONFIG_OPTS} --enable-shared=yes"
+ # UGLY hack to allow dynamic linking
+ sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
${MONO_DIR}/configure
-sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
+ sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
${MONO_DIR}/libgc/configure
-sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
+ sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \
${MONO_DIR}/eglib/configure
+fi
-rm -rf ${BUILD_DIR}
-mkdir -p ${BUILD_DIR}
+if [ ${CLEAN} != 0 ]; then
+ rm -rf ${BUILD_DIR}
+ mkdir -p ${BUILD_DIR}
+fi
cd ${BUILD_DIR}
mkdir -p ${INSTALL_DIR}
+readonly NACL_BIN_PATH=${NACL_SDK_ROOT}/toolchain/${TC_FLAVOUR}/bin
+
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
@@ -98,7 +137,21 @@ 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"
+if [ ${DEBUG} == 1 ]; then
+ CFLAGS="$CUSTOM_CFLAGS"
+ CONFIG_OPTS="${CONFIG_OPTS} --enable-debug=yes"
+else
+ CFLAGS="-g $CUSTOM_CFLAGS"
+ CONFIG_OPTS="${CONFIG_OPTS} --enable-debug=no"
+fi
+
+if [ ${PARALLEL} == 1 ]; then
+ readonly JOBS="-j16"
+else
+ readonly JOBS=
+fi
+
+
LDFLAGS="$CUSTOM_LDFLAGS"
LIBS="-lnacl_dyncode -lc -lg -lnosys -lpthread"
@@ -126,9 +179,14 @@ ${MONO_DIR}/configure ${CONFIG_OPTS} \
--enable-nls=no \
--enable-nacl-codegen \
--disable-system-aot \
- --enable-shared \
--disable-parallel-mark \
--with-static-mono=no
-make
-make install
+if [ ${USE_NEWLIB} == 1 ]; then
+ # Newlib build doesn't support building shared libs, and unfortunately, this
+ # leads to libmonoruntime.la no being built as well, unless we'll do that
+ # explicitly.
+ make ${JOBS} -C mono/metadata libmonoruntime.la
+fi
+make ${JOBS}
+make ${JOBS} install